08 String类,static关键字

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);

猜你喜欢

转载自blog.csdn.net/woshilovetg/article/details/81414734