成员变量和局部变量的区别:
1:位置不同:
成员变量可以在类中,方法外,方法内可用(this),局部变量常见于方法中;
2:初始值不同:
成员变量有默认值,,不需要初始化赋值
局部变量没有默认值,使用之前必须赋值
3:内存位置不同:
成员变量存在于堆内存,局部变量在栈内存
4:作用域不同:
成员变量存在于整个对象中,局部变量存在于所属的{}中;
5:生命周期不同:
成员变量与对象共生死,局部变量因方法调用而生,方法结束而亡
包:
1:同一个包内的程序可以互相调用
2:访问其他包的程序,需要导包
3:自己程序想调用java提供的程序,也需要先导包,注意:java.lang包不需要导,可以直接使用
String类的常用API:
public class praString {
public static void main(String[] args) {
String s1="heabcd";
//1:获取字符串长度
System.out.println(s1.length());
//2:提取字符串中某个索引的字符
System.out.println(s1.charAt(2));
//3:字符串的遍历 s1.length.fori
for (int i = 0; i < s1.length(); i++) {
System.out.println(s1.charAt(i));
}
//4:把字符串变成字符数组
char []charArr= s1.toCharArray();
for (int i = 0; i < charArr.length; i++) {
System.out.println(charArr[i]);
}
//5:判断字符串内容是否相同,相同返回true
String s2="heabcd";
if(s1==s2)
{
System.out.println("这两个字符串相同");
}
if(s1.equals(s2))
{
System.out.println("这两个字符串相同");
}
//6:忽略大小写比较字符串
String c1="34Ae";
String c2="34aE";
if(c1.equalsIgnoreCase(c2))
{
System.out.println("这两个字符串相同");
}
//7:截取字符串内容(包前不包后)
String c3=c1.substring(0,2);
System.out.println(c3);//34
//8:从当前索引位置一直截取到字符串末尾
String c4=c1.substring(2);
System.out.println(c4);//Ae
//9:把字符串中的某个内容替换成新的内容
String a1="你在干什么";
String a2=a1.replace("干什么","***");
System.out.println(a2);
//10:判断字符串是否含有某些内容
if(a1.contains("干什么"))
{
System.out.println("含有干什么");
}
//11:判断某个字符串是否以某个字符串开头
if(a1.startsWith("你在"))
{
System.out.println("以你在开头");
}
//12:将某个字符串按照某个指定内容把该字符串分割放到一个字符串数组中
String x1="ac,b,c,d";
String []charS=x1.split(",");
for (int i = 0; i < charS.length; i++) {
System.out.println(charS[i]);
}
//ac
//b
//c
//d
}
}
String注意事项:
1:String的对象是不可变字符串对象(每次试图改变字符串对象实际上是新产生了新的字符串对象,变量每次都指向了新的字符串变量,之前字符串的对象的内容确实没有变)
2:只要以"..."方式写出的字符串对象,会存储到字符串常量池,且相同的内容的字符串只存储一份,但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中