1.String类在java.lang包下,所以使用时不需要导包
2.java程序中所有双引号字符串,都是String类对象
3.字符串的特点
(1)字符串不可变,他们的值在创建后不能被更改
(2)虽然String的值是不可变的,但他们可以被共享
(3)字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
4.字符串对象直接输出,打印在控制台的不是地址值,而是字符串形式
5.构造字符串对象的三种方式
(1)无参构造:new String();
(2)字符数组构造:new String(char[]);
(3)字节数组构造:new String(byte[]);//字节数组输出的不是数字,而是字符连成字符串的形式
(4)双引号赋值:String s = "abc";
6.idealz中的快捷键\
(1)Ctrl + Alt +L ;//格式化
(2)Ctrl + /;单行注释
(3)Ctr + shift +/;//多行注释
(4)Ctrl + shift + 空格;//内容提示唤醒
(5)psvm +回车;//mian方法
(6)sout+回车;//输出语句
(7)ctrl + alt +v;//快速生成返回值
7.
String对象的特点
(1)通过new创建的字符串对象,每一次new就会申请一次内存空间,虽然内容相同,但地址值不同
(2)以""给出的字符串对象,只要字符的顺序和大小相同,无论程序中出现几次,jvm都只会创建一个String类对象,在堆内存的常量池中维护
8.
" "创建的字符串对象存储在堆内存的常量池中,如果后续需要用到顺序和大小写都相同的""创建的字符串,不需要重新创建对象,会直接用常量池中已经创建好的对象.例如:
String s1 = "abc";
String s2 = "abc";//s1 和s2是同一个对象,他们的地址值相同.
9.
常量池在堆内存中
10.
使用 == 做比较
(1)基本数据类型:比较的是数据值是否相同
(2)引用数据类型:比较的是地址值是否相同
String类是引用数据类型,因此直接使用 == 进行比较,比较的是地址值是否相同,而不是其数据值,要比较字符串的数据值,需要使用equals()方法.(简单的说就是:字符串内容的比较用equals实现)
11.
布尔类型在堆内存中的默认值是false
12.
关键字全部小写
13.
字符串的遍历
(1)字符串的索引是从0开始
(2)需要用到的方法
public int length();//返回字符串的长度
public char charAt(int index);//返回指定索引处的字符,字符串的索引从0开始
14.
字符类型char参与算术运算与关系运算的时候,使用的是底层存储的ASCII码,
例如
char > 'A';//这里是与'A'存储在底层的数据65相比较
15.
堆内存中存储的数据,使用完毕后会在垃圾回收器空闲时被回收
16.
引用数据类型存储的变量所存储的值为null,直接输出在控制台不会报错,会在控制台打印出null,而null常量直接输出在控制台会报错
17.
整数相除,结果只能得到整数,想要得到小数,必须有浮点数参与,例如 :
int a= 10;
int b = 3;
double c = a / b;//c的值为3.0
18.
使用除法进行计算的时候,要特别注意整数的除法,看结果是否需要得到小数.整数相除只能得到整数
19.
java中数组定义后,数组的长度是不可以改变的
20.
数组中最后一个元素的下表是a.length -1
21.
遍历字符串的两个方法
(1)求字符串的长度:s.length();
(2)获取指定索引处的字符:charAt(index);//字符的索引也是从0开始
22.
判断字符在a-z,A-Z,和字符在0-9之间
char c = s. charAt(index);
(1)判断字符在a-z之间 :c >= 'a' && c <= 'z';
(2)判断字符在A-Z之间:c >= 'A' && c <= 'Z';
(3)判断字符在0-9之间:c >= '0' && c <= '9';
23.
字符串的拼接:将数组遍历,采用字符串拼接的方法将数组变为字符串形式,并将字符串在控制台打印
(简单的说就是将数组变为字符串,然后在控制台输出,直接输出数组名打印得到是地址.)
24.
字符串的charAt()返回值类型是一个char类型
25.
String中的equals()方法是严格区分大小写的
26.
charAt()方法的返回值是char
27.
String类中的常用方法
(1)char charAt(int indext);//返回指定索引处的字符
(2)int length();//返回此字符串的长度
(3)boolean equals(String s);//判断字符串的内容是否相同,严格区分大小写
(4)boolean endsWith(String s);//判断字符串是都以s结尾
28.
因为字符串不可变,所以在使用" "进行字符串拼接的时候,会比较浪费内存空间,为了解决这个问题,java提供了StringBuilder这个类来解决这个问题,StringBuilder是一个可变的字符串序列
29.
String 和 StringBuilder 的区别在于
(1)String类对象是不可变的
(2)而StringBuilder类的对象是可以改变的
30.
StringBuilder的构造方法
(1)StringBuilder();//无参构造,创建空白的可变字符串对象
(2)StringBuilder(String s);//根据字符串内容,来创建可变的字符串对象
31.
StringBuilder是可变的字符串对象
32.
(1)直接输出数组名,打印在控制台的是地址值
(2)直接输出字符串,打印在控制台的是字符串(重写了toString方法)
(3)直接输出StringBuilder,打印在控制台的是字符串(重写了toString方法)
33.
重写了toString方法的类的实例对象,都是直接在控制台打印该对象的堆内存中的内容
34.
StringBuilder的添加方法:StringBuilder append(任意类型);//,添加数据,并返回该对象本身
35.
StringBuilder的反转方法;StringBuilder reverse();将字符串的序列反转,返回反转的字符串对象本身
36.
StringBuilder:可变的字符串
37.
StringBuilder 和 String相互转换
(1)StringBuilder转化为String:String toString();//将可变字符串转化为String类,StringBuilder类的方法
(2)String转化为StringBuilder: StringBuilder(String s);//通过StringBuilder构造方法将String类变为StringBuilder类对象
38.
使用穷举法最重要的是要判读数据的取值范围
39.
数组可以转换成字符串类型并打印在控制台
40.