API基础第1天:
回顾:
- 内存管理:由JVM管理
- 堆:new出来的对象(包括实例变量)
- 栈:正在调用的方法中的局部变量(包括方法的参数)
- 方法区:.class字节码文件(包括静态变量、所有方法)
- 面向对象三大特征:封装、继承、多态
- String:
- java.lang.String使用final修饰,不能被继承
- String采用Unicode编码方式,任何一个字符都占用两个字节
- 字符串底层封装的是一个字符数组
- 字符串对象一旦创建,对象内容永远无法改变的,但字符串引用可以重新赋值-----不变对象
- 常量池:
- java对字符串有一个优化措施:字符串常量池(堆中)
- java推荐我们使用字面量的方式来创建字符串,并且将那个字符串对象的引用存储在常量中,当使用相同字面量再创建对象时将复用常量池中的对象以减少内存开销
笔记:
-
String:
- 面试题:
/* String s = new String("hello"); 问:如上语句创建了几个对象? 答:2个 第一个:字面量"hello" ---java会创建一个String对象表示字面量"hello",并将其存入常量池 第二个:new String() ---new String()时会再创建一个字符串对象,并引用hello字符串的内容 */ String s = new String("hello"); String s1 = "hello"; System.out.println("s:"+s); //hello System.out.println("s1:"+s1); //hello System.out.println(s==s1); //false,==比较的是地址是否相同 //字符串实际开发中比较相等一般都是比较字符串的内容 //因此我们需要使用equals()方法来比较两个字符串的内容 System.out.println(s.equals(s1)); //equals()比较的是内容是否相同
-
String常用方法:
-
length():获取字符串的长度(字符个数)
String str = "我爱Java!"; int len = str.length(); //获取str的长度 System.out.println(len); //7
-
trim():去除当前字符串两边的空白字符
String str = " hello world "; System.out.println(str); // hello world str = str.trim(); //去除当前字符串两边的空白字符 System.out.println(str); //hello world
-
toUpperCase()和toLowerCase():将当前字符串中的英文部分转为全大写/全小写
String str = "我爱Java!"; String upper = str.toUpperCase(); //将str中英文部分转为全大写 System.out.
-