引用与实体? 引用的变量有实体和引用值

概述

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对象

字符串与字符、字节数组