Day14 常用API

1. String

1.1 概述

java.lang.String :是字符串类 底层就是一个final修饰的char数组,所以String很多特性就是数组的特性,比如一旦确定,长度 不能更改

1 字符串一旦创建,这个字符串对象不能再更改

2 为了提升字符串的访问和存储效率,java虚拟机采用了一种缓存机制,把字符串都保存在了字符串常量池中

3 在程序执行过程中,假如要用到一个字符串a String s1 = "a"; 先去字符串常量池中检索,是否有a,如过没有就创建一份

假如 有了 String s2 = "a"; 就不再创建,把已有的这个a 返回

所以 导致 String s1 = "a" String s2 = "a" 此时 s1 == s2 他也是true,因为他们指向同一个字符串对象 就是a

1.2 基本使用

// 第一部分 创建1个对象,因为他们都指向常量池

String s1 = "a";

String s2 = "a";

// 比较值 true

System.out.println(s1.equals(s2));

// 比较地址 true

System.out.println(s1 == s2);

// String 一旦创建不能更改的意思,并不是这个s1变量不能更改,二十 变量指向的对象中的数据不能更改

s1 = "b";

// 第二部分,如果使用new的方式,那么会创建堆内存对象,该字符串对象会保存在堆内存中

String s3 = new String("a");

String s4 = new String("a");

// 因为s3和s4不指向常量池,二十分别指向了堆内存,所以地址不同,为false

System.out.println(s3 == s4);

// 但是String中覆写了equals方法.比较值,所以是true

System.out.println(s3.equals(s4));

1.3 不要频繁拼接

 因为字符串创建之后不能更改,如果频繁拼接的话,效率很低,并且垃圾回收可能也会出现问题

1.4 构造方法

 // 1 字面量

String s1 = "asda";

// 2

String s2 = new String("xxx");

// 3 字节数组

byte[] bytes = {97,98,99,100,101,102};

String s3 = new String(bytes);

//abcdef

System.out.println(s3);

// 字节数组,只截取一部分,4表示起始下标(包含),2表示个数

String s4 = new String(bytes,4,2):

// ef

System.out.println(s4);

// 5 字符数组

char[] chars = {'a','b','c','d'};

String s5 = new String(chars);

System.out.println(s5);

// 6 字符数组,只截取一部分,1表示起始下标(包含),2表示个数

String s6 = newsString(char,1,2);

System.out.println(s6):

1.5 常用方法

学习API:

1 功能是什么

2 入参和出参是什么

3 怎么用

// 1 charAt(int index): 返回该字符串中,指定位置的字符

String s1 = "qweqweqwe";

char c1 = s1.charAt(2):

// e

System.out.println(c1);

// 2 boolean endsWith(String suffix) : 判断该字符串是否以指定字符串结尾

// boolean startWith(String prefix) : 同上,判断开始

System.out.println("Hello.java".endWith(".java"));

// 注意空格 , 有空格就匹配不上了

System.out.println("Hello.java".endsWith(".java"));

// 3 boolean equalsIgnoreCas(String str): 不区分大小写比较两个字符串是否相等

System.out.println("abc".equalsIgnoreCase("aBc"));

// 4 byte[] getBytes(): 把字符串转换为字节数组并返回

byte[] bytes = "abc".getBytes();

for(int i = 0;i<bytes.length;i++){

System.out.println(bytes[i]);

}

// 5 char[] toCharArray(); 把字符串转换为字符数组并返回

char[] chars = "abc".toCharArray();

for(int i = 0;i<char.length;i++){

System.out.println(char[i]);

}

// 6 int indexOf(String str): 获取该字符串中指定字符串的起始索引,找不到返回-1

System.out.println("dasdsa".indexOf("sd"));// 2 

System.out.println("asdasdas".indexOf("kda")); //-1

// 7 int indexOf(Sting str,int index);

// 从指定位置开始查找(包含),获取该字符串中指定字符串的起始索引,找不到返回-1

System.out.println("askasdasd".indexOf("a",5));// -1

// 8 index lastIndexOf(String str): 同上,最后一次出现的索引 找不到返回-1

System.out.println("asdasd".lastindexOf("a"));// 3

// 9 int length(): 返回该字符串的长度

System.out.println("abc".length());

// 10 String replaceAll(String regex . String replacement);

// 替换指定字符,支持正则表达式

// String replace (String str . String replacement); 不支持正则表达式

// 用 1 把 a 替换了并返回新的字符串

// 支持正则表达式,但是没有写正则表达式 是没有区别的

System.out.println("hucgasdqweasd".replaceAll("a", "1"));

System.out.println("dhiasdhias",replace("a","1"));

// 因为 . 在正则表达式中,代表任意字符

System.out.println("qwe.tre.nfoia.dasnm".replaceAll(".","."));

// 可以使用 \ 转义

System.out.println("qwe.try.yui.uio".replaceAll("\\",","));

System.out.println("qwe.try.yui.uio".replace(".",","));

// 11 String[] split(String regex): 分割字符串,返回字符串数组,支持正则表达式,注意.....

// 点,需要转义

String s2 = "2022.1.14";

String[] arr = s2.split("\\.");

for(int i = 0;i<arr.length;i++){

System.out.println(arr[i]);

}

// 12 String substring(int begin); 获取该字符串中,以某下标起始的子字符串(包含)

System.out.println("abcdef".substring(2));// cdef

// 13 String substring(int begin , int end );

// 获取 该字符串中,以某个下标起始(包含)到某个下标结束的子字符串(不包含)

System.out.println("abcdef",substring(2,4));// cd

// 14 String trim(): 去除字符串两边的空格

System.out.println("       a       dsadas          ");

System.out.println("           a        d   asdas         .trim()");

// 15 String toUpperCase(): 转大写

// String toLowerCase(); 转小写

System.out.println("asd".toUpperCase());

// 16 static String valueOf(Object obj);

// 调用该对象的toString 方法 , 如果为null, 则不再调用 toString 而是返回字符串null 

String_05 s = null;

// 打印一个引用类型的时候,会自动调用 String 的valueOf 所有 会自动调用toString方法

System.out.println(s);

1.6 注意

// 1

String a = "a";

String b = "b";

String str = "ab";

// 字面量相加 在编译阶段,就把+去掉了

String d = "a" + "d";

//true

System.out.println(d == str);

//true

System.out.println(d.equals(str));

//变量相加,因为变量的值是可变的,运算之前没有办法确定变量的值,

//所以没有办法优化,只能转换为new的方式,重新创建并拼接字串符

String c = a + b ;

String e = a + "b";

//false

System.out.println(c==str);

//true

System.out.println(c.equals(str));

// 上面相加 因为变量的值 无法确定 , 如果声明为常量,则可以优化

String str1 = "ab";

final String a1 = "a";

final String b1 = "b";

String c1 = a1 + b1;

System.out.println(c1 == str1);

 // 创建几个对象? 1个

String xx = "a"+"b"+"c"+"d";

2 StringBuffer和StringBuilder

2.1 概述

 

2.2 基本使用

 2.3 常用方法

 3. 包装类

3.1 概述

1. 装箱就是自动将基本数据类型转换为包装器类型 

2. 拆箱就是自动将包装器类型转换为基本数据类型

 3.2 使用

 3.3 Integer

3.3.1 基本使用

 3.3.2

 3.3.3 常用方法

 3.3.4 自动装箱和自动拆箱

 

 3.3.5 深入整型常量池

 

// 判断当前这个数值 是否在 -128~127之间

如果不再范围内  就直接new对象

 

 

 

 3.3.6 总结

 

 4. System

4.1 概述

System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

此方法适于计算时间差。

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。

由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。

成员变量

System类内部包含in、out和err三个成员变量,分别代表标准输入流

(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

成员方法

native long currentTimeMillis():

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时

间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

void exit(int status):

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表

异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

4.2 常用方法

 5. Date 

5.1 概述

获取时间和时间操作

5.2 构造方法

5.3 常用方法

 

5.4 格式化 

 5.5 Calendar

6. Random

6.1 概述

随机数 从 0 开始

6.2 使用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值