写点什么

Java 常用类使用总结,linuxshell 教程

用户头像
极客good
关注
发布于: 刚刚

class Test {


public static void main(String[] args) {


User u1 = new User(1);


User u2 = new User(2);


User u3 = new User(3);


u2 = u3 = null;


System.gc();


}


}


class User {


private int id;


public User(int id) {


this.id = id;


System.out.println("User Object " + id + " is created");


}


protected void finalize() throws java.lang.Throwable {


super.finalize();


System.out.println("User Object " + id + " is disposed");


}


}


关于垃圾回收:


  1. 对象可能不被垃圾回收。只要程序没有濒临存储空间用完的那一刻,对象占用的空间就总也得不到释放。

  2. 垃圾回收并不等于 “析构”。

  3. 垃圾回收只与内存有关。使用垃圾回收的唯一原因是为了回收程序不再使用的内存。


finalize() 的用途:


无论对象是如何创建的,垃圾回收器都会负责释放对象占据的所有内存。


这就将对 finalize() 的需求限制到一种特殊情况,即通过某种创建对象方式以外的方式为对象分配了存储空间。不过这种情况一般发生在使用 “本地方法” 的情况下,本地方法是一种在 Java 中调用非 Java 代码的方式。


[](


)String




在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

[](

)创建方式


class Test {


public static void main(String[] args) {


// 直接赋值方式创建对象是在方法区的常量池


String str1 = "hello";


// 通过构造方法创建字符串对象是在堆内存


String str2 = new String("hello");


// 引用传递,str3 直接指向 st2 的堆内存地址


String str3 = str2;


String str4 = "hello";


System.out.println(str1 == str2); // false


System.out.println(str1 == str3); // false


System.out.println(str3 == str2); // true


System.out.println(str1 == str4); // true


}


}

[](

)常用方法


字符串判断


| 方法 | 描述 |


| --- | --- |


| boolean equals(Object obj) | 比较字符串的内容是否相同 |


| boolean equalsIgnoreCase(String str) | 比较字符串的内容是否相同,忽略大小写 |


| boolean startsWith(String str) | 判断字符串对象是否以指定的 str 开头 |


| boolean endsWith(String str) | 判断字符串对象是否以指定的 str 结尾 |


字符串截取


| 方法 | 描述 |


| --- | --- |


| int length() | 获取字符串的长度,其实也就是字符个数 |


| char charAt(int index) | 获取指定索引处的字符 |


| int indexOf(String str) | 获取 str 在字符串对象中第一次出现的索引 |


| String substring(int start) | 从 start 开始截取字符串 |


| String substring(int start,int end) | 从 start 开始,到 end 结束截取字符串。包括 start,不包括 end |


字符串转换


| 方法 | 描述 |


| --- | --- |


| char[] toCharArray() | 把字符串转换为字符数组 |


| String toLowerCase() | 把字符串转换为小写字符串 |


| String toUpperCase() | 把字符串转换为大写字符串 |


其他方法


| 方法 | 描述 |


| --- | --- |


| String trim() | 去除字符串两端空格 |


| String[] split(String str) | 按照指定符号分割字符串 |


[](


)StringBuilder 和 StringBuffer




StringBuilder 是一个可变的字符序列。它继承于 AbstractStringBuilder,实现了 CharSequence 接口。


StringBuffer 也是继承于 AbstractStringBuilder 的子类;


但是,StringBuilder 和 StringBuffer 不同,前者是非线程安全的,后者是线程安全的。

[](

)常用方法


| 方法 | 描述 |


| --- | --- |


| public StringBuffer append(String s) | 将指定的字符串追加到此字符序列。 |


| public StringBuffer reverse() | 将此字符序列用其反转形式取代。 |


| public delete(int start, int end) | 移除此序列的子字符串中的字符。 |


| public insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中。 |


| insert(int offset, String str) | 将 str 参数的字符串插入此序列中。 |


| replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符。 |


class Test {


public static void main(String[] args) {


StringBuilder sb = new StringBuilder(10);


// StringBuffer sb = new StringBuffer(10);


sb.append("Test..");


System.out.println(sb); // Test..


sb.append("!");


System.out.println(sb); // Test..!


sb.insert(6, "Java");


System.out.println(sb); // Test..Java!


sb.delete(4, 6);


System.out.println(sb); // TestJava!


}


}


StringBuilder 和 StringBuffer 用法差不多。


String、StringBuilder、StringBuffer 之间的区别:


首先需要说明的是:


  • String 字符串常量

  • StringBuilder 字符串变量(非线程安全)

  • StringBuffffer 字符串变量(线程安全)


在大多数情况下三者在执行速度方面的比较:StringBuilder > StringBuffer > String


对于三者使用的总结:


  • 如果要操作少量的数据用 = String

  • 单线程操作字符串缓冲区下操作大量数据 = StringBuilder

  • 多线程操作字符串缓冲区下操作大量数据 = StringBuffer


[](


)Number




所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。

[](

)包装类


| 包装类 | 基本数据类型 |


| --- | --- |


| Boolean | boolean |


| Byte | short |


| Short | short |


| Integer | int |


| Long | long |


| Character | char |


| Float | float |


| Double | double |

[](

)使用方法


实现 int 和 Integer 的相互转换


class Test {


public static void main(String[] args) {


int m = 500;


Integer obj = new Integer(m);


int n = obj.intValue();


System.out.println(n); // 500


Integer obj1 = new Integer(500);


System.out.println(obj.equals(obj1)); // true


}


}


将字符串转换为整数


class Test {


public static void main(String[] args) {


String[] str = {"123", "123abc", "abc123", "abcxyz"};


for (String str1 : str) {


try {


int m = Integer.parseInt(str1, 10);


System.out.println(str1 + " 可以转换为整数 " + m);


} catch (Exception e) {


System.out.println(str1 + " 无法转换为整数");


}


}


}


}


输出结果:


123 可以转换为整数 123


123abc 无法转换为整数


abc123 无法转换为整数


abcxyz 无法转换为整数


将整数转换为字符串


class Test {


public static void main(String[] args) {


int m = 500;


String s = Integer.toString(m);


System.out.println(s); // 500


String s2 = m + "a";


System.out.println(s2); // 500a


}


}


[](


)Math




Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

[](

)常量值


| 常量 | 描述 |


| --- | --- |


| Math.PI | 记录的圆周率 |


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


| Math.E | 记录 e 的常量 |

[](

)常用方法


| 方法 | 描述 |


| --- | --- |


| Math.abs | 返回参数的绝对值。 |


| Math.sin | 求指定 double 类型参数的正弦值。 |


| Math.cos | 求指定 double 类型参数的余弦值。 |


| Math.tan | 求指定 double 类型参数的正切值。 |


| Math.toDegrees | 将角度转换为弧度。 |


| Math.ceil | 得到不小于某数的最大整数。 |


| Math.floor | 得到不大于某数的最大整数。 |


| Math.IEEEremainder | 求余 |


| Math.max | 返回两个参数中的最大值。 |


| Math.min | 返回两个参数中的最小值。 |


| Math.sqrt | 求参数的算术平方根。 |


| Math.pow | 求某数的任意次方, 抛出 ArithmeticException 处理溢出异常 |


| Math.exp | 返回自然数底数 e 的参数次方。 |


| Math.log10 | 以 10 为底的对数 |


| Math.log | 返回参数的自然数底数的对数值。 |


| Math.rint | 求距离某数最近的整数(可能比某数大,也可能比它小)。 |


| Math.round | 同上,返回 int 型或者 long 型(上一个函数返回 double 型)。 |


| Math.random | 返回 0,1 之间的一个随机数。 |


[](


)Random




random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。

[](

)常用方法


| 方法 | 描述 |


| --- | --- |


| protected int next(int bits) | 生成下一个伪随机数。 |


| boolean nextBoolean() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |


| void nextBytes(byte[] bytes) | 生成随机字节并将其置于用户提供的 byte 数组中。 |


| double nextDouble() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |


| float nextFloat() | 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布 float 值。 |


| double nextGaussian() | 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正 态”)分布的 double 值,其平均值是 0.0 标准差是 1.0。 |


| int nextInt() | 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |


| int nextInt(int n) | 返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的 int 值。 |


| long nextLong() | 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |


| void setSeed(long seed) | 使用单个 long 种子设置此随机数生成器的种子。 |


import java.util.Random;


class Test {


public static void main(String[] args) {


System.out.println(Math.random()); // 0.6456063107220328


System.out.println(Math.random()); // 0.579336669972285


Random rand = new Random();


int i = rand.nextInt(100);


System.out.println(i); // 生成随机数为 0-100 的整数,不包括 100


}


}


[](


)Date




java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

[](

)常用方法


| 方法 | 描述 |


| --- | --- |


| boolean after(Date date) | 若当调用此方法的 Date 对象在指定日期之后返回 true,否则返回 false。 |


| boolean before(Date date) | 若当调用此方法的 Date 对象在指定日期之前返回 true,否则返回 false。 |


| int compareTo(Date date) | 比较当调用此方法的 Date 对象和指定日期。两者相等时候返回 0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。 |


| int compareTo(Object obj) | 若 obj 是 Date 类型则操作等同于 compareTo(Date) 。否则它抛出 ClassCastException。 |


| long getTime( ) | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 |


| oid setTime(long time) | 用自 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒数设置时间和日期。 |


import java.text.SimpleDateFormat;


import java.util.Date;


class Test {


public static void main(String[] args) {


Date date = new Date();


System.out.println(date.toString()); // Sat Jul 24 14:44:45 CST 2021


long time1 = date.getTime();


long time2 = date.getTime();


System.out.println(time1 == time2); // true


// SimpleDateFormat 格式化时间


SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");


System.out.println(ft.format(date)); // 2021-07-24 02:46:37


}


}


[](


)Calendar




Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用 getInstance 方法创建即可。

[](

)常量值


| 常量 | 描述 |


| --- | --- |


| Calendar.YEAR | 年份 |


| Calendar.MONTH | 月份 |


| Calendar.DATE | 日期 |


| Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |


| Calendar.HOUR | 12 小时制的小时 |


| Calendar.HOUR_OF_DAY | 24 小时制的小时 |


| Calendar.MINUTE | 分钟 |


| Calendar.SECOND | 秒 |


| Calendar.DAY_OF_WEEK | 星期几 |


import java.util.Calendar;


class Test {


public static void main(String[] args) {


Calendar c = Calendar.getInstance();


// 获得年份


int year = c.get(Calendar.YEAR);


System.out.println(year); // 2021


// 获得月份


int month = c.get(Calendar.MONTH) + 1;


System.out.println(month); // 7


// 获得日期


int date = c.get(Calendar.DATE);


System.out.println(date); // 24

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Java常用类使用总结,linuxshell教程