String类 ,Arrays数组工具类,Math类
String类
创建String字符串的常见的3+1种方式
三种构造方法:
-
public String() 初始化一个新创建的 String 对象,使其表示一个空字符序列 -
public String(char[] array) : 根据字符数组的内容,来创建对应的字符串. -
public String(byte[] array) :根据字节数组内容,来创建对应的字符串.
一种直接创建:
-
public String = "ABC";
//演示代码
`
public class StringDemo01 {
public static void main(String[] args) {
//3+1种创建字符串对象的方式
//1.使用空参构造方法来创建字符串对象
String str1 = new String();
System.out.println("第一个字符串:"+str1);
//2.使用字符数组创建字符串对象
char[] ch={'A','B','C'};
String str2 = new String(ch);
System.out.println("第二个字符串:"+str2);
//3.使用字节数组创建字符串对象
byte[] byteArray={65,66,67};
String str3 = new String(byteArray);
System.out.println("第三个字符串:"+str3);
//直接创建字符串对象
String str4 = "ABC";
System.out.println("第四个字符串:"+str4);
}
}
`
常用方法
判断功能的方法
-
public boolean equals(Object anObject) :将此字符串与指定的字符串进行比较

`
public class StringDemo02 {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
char[] ch = {'h','e','l','l','o'};
String str3 = new String(ch);
System.out.println(str1 == str2);//true
System.out.println(str2 == str3);//false
System.out.println("---------------");
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
System.out.println(str2.equals(str3));//true
String str4 = null;
System.out.println(str1.equals(str4));//false,不会出现空指针
System.out.println(str4.equals(str1));//会出现空指针
}
}
`
2. equalsIgnoreCase(String anotherString) : 将此 String 与另一个 String 比较,不考虑大小写。
-
"==" 地址判断,对于引用数据类型来说, == 比较的是内存地址,对于基本数据类型来说,比较的是两个变量 的数值, 但是在字符串直接赋值的时候,用 == 比较的是两个字符串的内容是否相等
获取功能
. public int length() : 返回字符串的长度
. public String concat(String str) : 将指定字符串连接到此字符串的结尾。
. public char charAt(int index) : 返回指定索引处的 char 值。
. public int indexOf(String str) : 返回指定子字符串在此字符串中第一次 出现处的索引值。
. public String substring(int beginIndex) : 返回一个新的字符串,从beginIndex索引位置开始,它是此字符串的一个子字符串.
. String substring(int beginIndex, int endIndex) : 返回一个新字符串,它是此字符串的一个子字符串,但是不包含endIndex位置上的字符。
public class StringDemo03 {
public static void main(String[] args) {
//初始化一个字符串对象
String str = "ahsjsdhfdjhnsn324345";
//获取str字符串的长度
int length = str.length();
System.out.println("该字符串的长度为:"+ length);
System.out.println("---------------------");
//拼接字符串
String str2 ="Hello";
String str3 = "world";
String concat = str2.concat(str3);
System.out.println("拼接结果为:"+concat);
System.out.println("----------------");
//获取指定索引处的单个字符
char c = "Hello".charAt(2);
System.out.println("索引值为2的字符值:"+c);
System.out.println("===================");
//查找字符串中指定子字符串在字符串中的
int i = str.indexOf("2");
System.out.println("数字2在str字符串中第一次出现的索引值:"+i);
System.out.println("-------------------------");
//字符串截取
String str4 = "Helloworld";
int index = str4.indexOf("w");
String substring = str4.substring(index);
System.out.println("从w后的字符串为:"+substring);
//获取索引值[4,7]
//抛出:
//IndexOutOfBoundsException - 如果 beginIndex 为负,
// 或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。
String substring1 = str4.substring(4, 8);
System.out.println("");
}
}
转换功能
-
public char[] toCharArray() : 将此字符串转换成字符数组 public byte[] getBytes() : 使用平台默认的字符集将该字符串编码转换成新的字节数组 public String replace(CharSequence oldString,CharSequence newString) :将所有指定的出现的老的字符串,替换成新的字符串,返回值是一个新的字符串.CharSequence 表示的是接受的字符串类型 备注:CharSequence 是一个接口,也是一种引用数据类型,意思是可以接受字符串参数类型数据
练习1:定义一个方法,把数组{1,2,3,4}按照指定的格式拼接成一个字符串,格式参照:[1#2#3#4]。
拼接操作:concat(String str)
-
public class Demo1 { public static void main(String[] args) { // 初始化一个数组 int[] arr = {1,2,3,4}; // 调用方法,把int[]转换成字符串 String str = arrayToString(arr); // 展示字符串内容 System.out.println("str:" + str); } /** 定义方法的三要素: 返回值类型: String 方法名: arrayToString 参数列表: int[] arr */ public static String arrayToString(int[] arr) { // 创建字符串对象 String str = new String("["); // 遍历arr数组 for (int i = 0; i<arr.length ; i++) { // 判断最后一项 if (i == arr.length-1) { str = str.concat(arr[i] + "]"); } else { str = str.concat(arr[i] + "#"); } } return str; } }
练习2:统计字符的格式
键盘录入一个字符串,统计字符串中大小写字母字符以及数字字符的个数 charAt(int index)
-
import java.util.Scanner; public class Demo2 { public static void main(String[] args) { // 键盘录入一个字符串 Scanner Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String str = sc.next(); // 关闭Scanner流 sc.close(); // 自定义三个统计变量 int upperLetter = 0; int lowerLetter = 0; int number = 0; // 遍历字符串 得到每一个字符 for (int i = 0; i <str.length() ; i++) { char c = str.charAt(i); // 判断大小写字母字符和数字字符 if (c >= 'A' && c <= 'Z') { upperLetter++; } else if (c >= 'a' && c <= 'z') { lowerLetter++; } else if (c >= '0' && c <= '9') { number++; } } // 输出大小写字母字符和数字字符个数 System.out.println("大写字母字符个数:" + upperLetter); System.out.println("小写字母字符个数:" + lowerLetter); System.out.println("数字字符个数:" + number); } }
static内存原理分析

static关键字
概述
static 关键字的使用,他可以修饰成员方法和成员变量,被修饰的成员方法和成员变量是属于类的,不再单单属于某个对象,既然是属于类的,那就不需要通过创建对象来调用类中的成员信息
定义和使用格式
类变量
党成员变量被static修饰后,该变量就称为类变量.该类的每个对象都共享同一个类变量值,任何对象都可以更改类变量的值.类变量也可以不通过创建类对象的方式进行操作,通过类也可以操作
定义格式
-
static 数据类型 变量名;
例如:static int roomID;
静态方法
当成员方法一旦被static关键字修饰时,该方法称为类方法.类方法一般是通过类名直接调用,而不需要单独创建对象来调用.习惯性称为静态方法.
定义格式:
-
修饰符 static 返回值类型 方法名(参数列表){ //方法内容 }
例如:
public static String arrayToString(String[] arr){
//方法体内容如何转换
//....
}
静态方法调用的注意事项
-
静态方法可以直接访问类变量和静态方法 -
静态方法[不能直接访问]成员变量和成员方法,反之,成员方法可以[直接访问]类变量和静态方法 -
静态方法中不能使用this关键字
调用格式
静态方法建议通过类名调用,但是也可以通过对象名调用,会出现警告信息,不建议使用对象信息来调用
格式:
-
//访问类变量 类名.变量名; //访问静态方法 类名.方法名;
Static修饰的内容
-
是随着类的加载而加载,而且只会加载一次 存储于一块固定的内存区域(方法区的静态域),所以,可以被类直接调用 他优先于对象存在,所以可以被类的所有对象所共享
静态代码块
静态代码块:被static修饰的,定义在成员位置的代码块
-
位置:类中,方法外 -
执行:随着类的加载而加载,只会执行一次,优先于main方法和构造方法执行
格式:
-
public class ClassName{ //静态代码块,存在于成员位置 static{ //执行语句,多条执行语句 //... } }

备注:static可以修饰成员变量,成员方法,代码块.在使用过程中,如果你不想在不创建对象的情况下,去调用成员变量和成员方法,可以定义成静态的,对于静态代码块来说,通常作用是对静态变量初始化

浙公网安备 33010602011771号