String 是对象类型,不是基本类型。

String字符串的定义

方法一:String s0 = "abcd";
结果为abcd
方法二:String s1 = new String("hello");
结果为hello
方法三:String s2 = new String("world");
结果为:"" 空字符串

如果是全局变量,即全局中定义,打印则为null
例如
public class test{
static Srting s3;
psvd{
sout(s3);

  }

}
结果为null

通用的理论:
对于非基本类型(对象类型)(引用类型)
1:只定义不new(实例化):默认值都为Null
例如 Person per; 和String s3;都是Null
2:new(实例化):为“空”
Xxx xx = new Xxx(); xx不是null,xx内部属性值为默认值
例如
Srting s3 = new String(); s3为""空字符串
Person per = new Person(); Person为""空字符串,里面有属性name(String)和age(int),name是null,age是0

布尔默认值flash
对象类型默认值Null

常见的String方法
.equals:判断字符串内容(包括大小写)是否相等,返回值为布尔
.equalsIgnoreCase:判断字符串内容(不包括大小写)是否相等,返回值为布尔
.length:字符串长度,返回值为int
.toUpperCase:返回值为String
.toLowerCase:返回值为String
.indexOf:
判断字符串A是否存在另一个字符串B中,存在返回A在B的位置,不存在返回-1。(实参为字符串,返回值int)
判断字符a是否存在字符串B中(实参为返回值int,-->int,返回值为位置) .lastIndexOf倒着找
.trim:去掉字符串首尾空格
.subString(start,end); :截取(int,int)从start到stop,从索引到尾(默认0)返回值为String
.charAt():根据位置找字符(char)
.split:以某字符为界限拆分,返回值String[],返回当数组用,第一截为Xx[0],以此类推。(. | $ * + 不适用,但加上转义符\可用)
.inter(); :让引用直接指向常量池
.replace(x,y) :把字符串x变为y

.append:拼接字符串
.insert(int,string):插入字符串
.reverse:逆序字符串

字符串如果直接使用字面量,String str = "abc";
则从常量池中找,如果new则从堆里找(堆从常量池找,因为存放的是常量池中的地址)
如果常量池内不存在则从常量池中创建,(堆)并引用该常量池的字符。
即通过new创建必然执行堆中的对象。

foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}