引用与实体? 引用的变量有实体和引用值
概述
java.lang包中 不可以有子类(fianal型)
构造字符串对象
- String常量对象是用双引号括起的字符序列,例如“你好”,此处
s被赋予常量“你好”的引用值
String s = "你好"- String对象可以使用String类声明并创建对象,例如
String s = new String("we are students")字符串的并置
对于
String s = "你"+"好"此处 “你”+“好”被识别为“你好”,此时常量池里如果有“你好”,那么处s被赋予常量“你好”的引用值
特别的
String you = "你";
String hi = "好";
String youhi = you + hi ;此处youhi的值是“你好”,但是由于并置运算时有变量相加,那么就会在变量区存储这个值,因此引用值与常量引用“你好”不一致。
- 简单来说常量的引用可以被赋值给多个
- 变量、对象都是新开一个空间被赋予实体,并且自身也有地址值,于是变量运算时是本身地址值运算
String常用构造方法
String类的常用方法
public int length()获取一个字符串的长度public boolean equals(String s)判断当前String对象的字符序列是否与参数s指定的String对象的字符序列相同
s1.equals(s2)public bolean startsWith(String s)判断当前Stringu第项的字符序列前缀是否是参数指定的String对象s的字符序列public int compareTo(String s)按字典序与参数s指定的字符序列比较大小,相同为零,大于为正值i,小于为负值public bolean cotains(String s)判断当前String对象是否包含参数s的字符序列public int indexOf(String s)和public int lastIndexOf(String s)String对象调用方法从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置,如果没有索引到,该方法返回值就是-1
String对象与基本数据的相互转换
基本类型 → String
- 使用
String.valueOf()(推荐,不会抛空指针) - 使用
toString()方法(仅对包装类有效) - 使用字符串拼接
+ ""(简洁,但会生成临时对象)
int a = 100;
String s1 = String.valueOf(a); // "100"
String s2 = Integer.toString(a); // "100"
String s3 = a + ""; // "100"
double b = 3.14;
String s4 = String.valueOf(b); // "3.14"
boolean c = true;
String s5 = String.valueOf(c); // "true"String → 基本类型
- 使用对应包装类的
parseXxx()方法 - 注意可能的
NumberFormatException异常
String num = "256";
int i = Integer.parseInt(num); // 256
double d = Double.parseDouble("3.14"); // 3.14
long l = Long.parseLong("123456"); // 123456
boolean b = Boolean.parseBoolean("true"); // true注意事项
Integer.parseInt("abc")会抛出NumberFormatException- 转换浮点数时注意精度问题,建议使用
Double.parseDouble后利用BigDecimal精确计算 - 字符串可能包含前导/尾随空格,建议先
trim()再解析
main(String[ ] args)
args是一个对象数组,存储字符串类型的对象,接受用户从键盘输入的字符序列
对象的字符串表示
Object类自带一个toString()方法,用于返回String对象