String
一、String特点
1. 字符串的内容永不可变。【重点】
2. 正是因为字符串不可改变,所以字符串是可以共享使用的。
3. 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。
对于基本类型来说,==是进行数值的比较。【重点】
对于引用类型来说,==是进行【地址值】的比较。【重点】
equals方法
1. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
2. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐使用 "abc".equals(str)
不推荐 str.equals("abc") ---当str=null的时候,会发生空指针
static
一、特点
1.使用static修饰的成员方法,或者变量,都属于类,用类名直接调用【重点】
2.静态方法的方法体里面,不能访问非静态的成员变量或成员方法【重点】
但普通方法可以访问静态的
3.静态方法修饰的成员变量,可以共享到所有该类的对象【重点】
因为:先有类,后有对象
二、静态代码块
1.static{
//一坨代码
}
类加载的时候执行,并且只执行一次
2.静态方法当中不能用this。
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。
String基础练习
例1
//1.键盘录入一个大字符串,再录入一个小字符串
//2.统计小字符串在大字符串中出现的次数
//3.代码运行打印格式
//String big = "fdabc1231dfjksabc11abc";
//String small = "abc";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个大字符串");
String bigStr = sc.next();
System.out.println("请输入一个小字符串");
String smallStr = sc.next();
int count = 0;
while (true){
int index = bigStr.indexOf(smallStr);
if (index == -1){
break;
}else {
count++;
bigStr = bigStr.substring(index+smallStr.length(),bigStr.length());
}
}
System.out.println(count);
例2
//获取长度为5的随机字符串
//字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成
//如何随机生成一个大写字母?
// 'A'~'Z' 65~90; 公式 nextInt(大值-小值+1) + 小值;
// nextInt(10)
//定义一个空字符串
String str = "";
Random r = new Random();
for (int i = 0; i < 4; i++) {
int randmNum = r.nextInt('Z'-'A'+1)+'A';
char ch = (char)randmNum;
str+=ch;
}
int num = r.nextInt(10);
str+=num;
//要求数字随机;YYMD8 生成一个随机数 0~4
int randomIndex = r.nextInt(5);
char[] chars = str.toCharArray();
char temp = chars[randomIndex];
chars[randomIndex] = chars[chars.length-1];
chars[chars.length-1]= temp;
return new String(chars);