目录
1. String
1.1 String概述
1. String类的对象(字符串)
String类在java.lang 包下,所以使用的时候不需要导包
String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,
Java程序中所有的双引号字符串,都是String类的对象
2. 字符串的特点
字符串不可变,它们的值在创建后不能被更改。虽然String的值是不可变的,但是它们可以被共享
字符串效果上相当于字符数组( char[ ]),但是底层原理是字节数组( byte[ ])
1.2 String构造方法
1. 构造方法概述
2. 构造String对象的四种方式
推荐使用第四种方式(直接赋值),更加简洁,其他方法了解即可
public static void main(String[] args) { // public String() :创建一个空白的字符串对象。不含有任何内容 String s1 = new String(); System.out.println("s1:" + s1); // public String(char[] chs):根据字符串数组的内容,来创建字符串对象 char[] chs = {'a', 'b', 'c'}; String s2 = new String(chs); System.out.println("s2:" + s2); // public String(byte [] bys):根据字节数组的内容,来创建字符串对象 byte[] bys = {97, 98, 99, 100}; String s3 = new String(bys); System.out.println("s3:" + s3); // 直接赋值的方式创建字符串对象 String s4 = "abcde" ; System.out.println("s4:"+s4); }
3. String对象的特点
a. 通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
char[] chs = {'a', 'b','c'};
string s1 = new string(chs) ;
string s2 = new string(chs) ;
JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的
b. 以”“方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象
string s3 = "abc" ;
string s4 = "abc";
对于s3,JVM会建立一个String对象放在字符串池中,并给s3参考;
第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象
1.3 字符串的比较
1. 使用==做比较
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
2. 字符串的比较(equals()方法)
字符串是对象,它比较内容是否相同,是equals()方法来实现的
public boolean equals(Object anObject):将此字符串与指定对象进行比较。
由于我们比较的是字符串对象,所以参数直接传递一个字符串
3. compareTo()方法
String类中的compareTo()方法将返回两个字符串对象的比较结果,若相等,返回0。
不相等时,
- 从两个字符串第1个字符开始比较,返回第一个不相等的字符差;
- 较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
1.4 遍历字符串
- 遍历字符串,首先要能够获取到字符串中的每一个字符
public char charAt(int index):返回指定索引处的char值
例如:s.charAt(0);
字符串的索引也是从0开始的
- 遍历字符串,其次要能够获取到字符串的长度
public int length():返回此字符串的长度数组的长度:数组名.length
字符串的长度:字符串对象.length ( )
例如:s.length(); (”()“一定不要忘)
- 最后利用for循环完成对字符串的相关操作
1.5 字符串的普通拼接
定义了一个方法来完成字符串的拼接(普通字符串的拼接用“+”符号即可)
1.6 字符串的反转
1.7 String 方法使用
1. substring()方法
String.substring(int start) :
start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束中间的数据
如果start大于字符串的长度,将会抛出越界异常
String.substring(int start, int end) :
start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据
含首不含尾
2. indexOf()方法
indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,
若存在多个子字符串,返回数值最小的整数值
如果没有找到子字符串,返回-1
3. 字符串的分割
public String[ ] split(String regex):得到字符串中每一个数字数据
不要使用英文句点作为分割的标记,因为英文句点在正则表达式中有特殊含义。而参数regex其实就是一个正则表达式,若一定要 使用英文句点,切割的标记应该使用"\."(固定写法)
public static void main(String[] args) { // 1、声明一个String字符串变量 String string = "aaa;aab;aac"; // 2、声明一个String[]字符串的数组进行装箱分割“;”分号!!! String[] array1 = string.split(";"); // 3、输出长度 System.out.println("数组的长度:" + array1.length); // 4、遍历循环array1 for (int i = 0; i < array1.length; i++) { // System.out.println(array1[i]); System.out.print(array1[i] + " "); } }
4. 字符串中的数据排序
2. StringBuilder
2.1StringBuilder解决字符串拼接问题
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。我们可以通过Java提供的StringBuilder类就来解决这个问题。
2.2 StringBuilder构造方法
2.3 StringBuilder和String相互转换
1. StringBuilder转换为String
public String toString():通过toString0就可以实现把StringBuilder转换为String
2. String 转换为StringBuilder
public StringBuilder(Strings):通过构造方法就可以实现把String转换为StringBuilder
3. StringBuilder方法
sb.append("abc...");
sb.reverse();
sb.toString();
4. StringBuilder方法实现
a. 字符串拼接升级版
b.字符串的反转
3. Math
3.1 Math类概述
Math 包含执行基本数字运算的方法
如果类的成员都是静态的,通过类名直接调用即可(如 Math.max(a,b))
3.2Math类的常用方法
4. System类
4.1 System类概述
System类位于java.lang包,代表当前Java程序的运行平台,系统级的很多属性和控制方法都放置在该类的内部。由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。
4.2 System常用方法
- System.exit (0);
- System.currentTimeMillis();(用来测试代码运行时长last-start)
- getProperty() 方法:该方法的作用是获得系统中属性名为 key 的属性对应的值
public static String getProperty(String key)
属性名 | 属性说明 |
java.version | Java 运行时环境版本 |
java.home | Java 安装目录 |
os.name | 操作系统的名称 |
os.version | 操作系统的版本 |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
public class System_getProperty { public static void main(String[] args) { String version = System.getProperty("java.version"); String Name = System.getProperty("os.name"); String user = System.getProperty("user.name"); System.out.println("Java运行时环境版本:"+version); System.out.println("当前操作系统是:"+Name); System.out.println("当前用户是:"+user); } }
5. Object类
5.1 Object类概述
Object是类层次结构的根,每个类都可以将Object作为超类
所有类都直接或者间接的继承(默认继承)自该类构造方法: public Object()
子类的构造方法默认访问的是父类的无参构造方法的原因是它们的顶级父类只有无参构造方法
5.2 Object常用方法
6. Arrays类
6.1 Arrays概述
Arrays类包含操作数组的各种方法
6.2 Arrays操作方法
java中Array详解:Java中Arrays详解 - 程序咖啡 - 博客园
对数组按照升序排序
void Array.sort(Object[] array)
对数组元素指定范围进行排序(排序范围是从元素下标为from,到下标为to-1的元素进行排序)
Arrays.sort(Object[] array, int from, int to)
数组元素填充相同的值
Arrays.fill(Object[] array,Object object)
对数组的部分元素填充一个值,从起始位置到结束位置,取头不取尾
Arrays.fill(Object[] array,int from,int to,Object object)
返回数组的字符串形式
Arrays.toString(Object[] array)
返回多维数组的字符串形式
Arrays.deepToString(Object[][] arrays)
7. 基本类型包装类
7.1基本类型包装类概述
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作
用于基本数据类型与字符串之间的转换
7.2 Integer类的概述和使用(供参照)
Integer:包装一个对象中的原始类型int的值
1. 静态创建Integer对象
2. int和String的相互转换
用于基本类型和字符串之间的相互转换
a. int转换为String
public static String valueOf(int i):返回int 参数的字符串表示形式。该方法是String类中的方法
b. String转换为int
public static int parseInt(String s):将字符串解析为int类型。该方法是Integer类中的方法
7.4 自动装箱和拆箱
- 装箱: 把基本数据类型转换为对应的包装类类型
- 拆箱: 把包装类类型转换为对应的基本数据类型
注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null
我们推荐的是,只要是对象,在使用前就必须进行不为null的判断
8. 日期类
8.1Data类
Date代表了一个特定的时间,精确到毫秒
1. Data构造方法
2. Date常用方法
8.2 SimpleDateFormat类
1. SimpleDateFormat概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a到‘z引号的字母被解释为表示日期或时间字符串的组件的模式字母
y--年 M--月 d--日 H--时 m--分 s--秒
2. SimpleDateFormat构造方法
3. SimpleDateFormat格式化和解析曰期
- 格式化(从Date到 String )
public final String format(Date date):将日期格式化成日期/时间亨符串
- 解析(从 String到Date )
public Date parse(String source):从给定字符串的开始解析文本以生成日期
4. 毫秒日期之间的转换
1.将毫秒转换为日期
public static void main(String[] args) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //获取当前时间 long nowTime = System.currentTimeMillis(); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(nowTime); System.out.println(nowTime + " is " + dateFormat.format(cal.getTime())); }
2. 将日期转换成毫秒
public static void main(String[] args) throws ParseException { String dateStr1 = "2022-7-17 12:16"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date date = dateFormat.parse(dateStr1); System.out.println(dateStr1 + " is " + date.getTime()); }
8.3 Calendar类(日历类)
1. Calendar类概述
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:
Calendar rightNow = Calendar.getlnstance() ;
2. Calendar常用方法
9. Enum(枚举类)
前提:
类的对象只有有限个,并且是确定的,强烈建议用来对常量进行定义
一个常量就是枚举类的单例模式
9.1 自定义枚举类
public static void main(String[] args) { season1 autumn = season1.AUTUMN; System.out.println(autumn); } class season1{ //声明season对象的属性:private final修饰 private final String seasonName; private final String seasonDesc; //私有化构造器,并且给对象属性赋值 private season1(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //提供枚举类的多个对象:public static final public static final season1 SPRING = new season1("春天","春暖花开"); public static final season1 SUMMER = new season1("夏天","夏日炎炎"); public static final season1 AUTUMN = new season1("秋天","秋高气爽"); public static final season1 WINTER = new season1("冬天","冰天雪地"); //获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //提供toString() @Override public String toString() { return "season1{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
9.2 Enum枚举类(建议使用)
enum season2{ //提供当前枚举类的对象,每个对象之间用","隔开,末尾对象用";" SPRING ("春天","春暖花开"), SUMMER ("夏天","夏日炎炎"), AUTUMN ("秋天","秋高气爽"), WINTER ("冬天","冰天雪地"); private final String seasonName; private final String seasonDesc; private season2(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
9.3 Enum枚举类常用的方法
- values()方法:返回枚举类型的对象数组,该方法可以很方便地遍历所有的枚举值
- valueOf(String str):可以把一个字符串转换为对应的枚举类对象,要求字符串必须是枚举类对象的“名字”
- toString():返回当前枚举类对象常量的名称
public static void main(String[] args) { season2 autumn = season2.AUTUMN; System.out.println(autumn.toString()); System.out.println("=========="); season2 [] values =season2.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); } System.out.println("========="); season2 spring = season2.valueOf("SPRING"); System.out.println(spring); }