byte[] arr2={97,98,99,100,101,102
string s2=new string(arr2,2,3)
syso(s2)将字节数组 的 一部分转换成字符串
char[] arr3 ={'1','2'};
string s4=new string(arr3);
syso(s4);将字符数组转换成字符串
strings5=new string(arr3,1,3);
syso(s5); 字符数组从指定位置转多少个
String s6=new String("heima");
syso(s6)将字符串常量值转换成字符串
string的应用
string s1="abc"; 引用数据类型
string s2="abc";
syso(s1==s2); 比较的是地址值 true原因 是常量池
syso(s1.equals(s2)); 判断是否相等true
常量池中没有这个字符串对象就创建对象如果有直接用
string s1=new string("abc")
syso(s1);创建了几个对象
创建俩个常量,常量池一份,堆内一份
新创建 的对象是参数的副本
String s1=new string("abc");记录堆的地址值
string s2="abc" 记录常量的 地址值
syso(s1==s2);
syso(s1.equals(s2));
string s1="a"+"b"+"c";
string s2="abc";
syso(s1==s2); true java中有常量优化机制
syso(s1.equals(s2));
string s1="ab";
string s2="abc";
string s3=s1+"c";
syso(s3==s2); false
syso(s3.equals(s2)) true
//string s1="heima";
string s2="heima"
string s3="heiMa"
syso(s1.equals(s2)) 区分大下写
syso(s2.equals(s3))
syso(.....................)
syso(s1.equalsingnorecase(s1)); 不区分
sysO(同上s3);
string s1="我爱heima,哈哈0";
string s2="heima";
string s3="heima";
string S4="我爱";
string s5="哈哈";
syso(s1.contains(s2)); true 判断是否包含传入的字符转
syso(s1.contains(s3)); false
syso("---------------")
syso(s1.startswith(s4)); true 判断是否以传入的字符串开头
syso(s1.startswith(s5)); false
syso("------------------")
syso(s1.endswith(s4)); 判断是否以传入的字符串结尾
syso(s1.ebbdwith(s5));
string s1="heima";
striing s2="";
ssyo(s1.isempty());
syso(s2.isempty());
输出null 的时候空指针异常 空串是字符串常量,同时也是string类的对像当然可以调用string类中的方法
null是空常量。可以给任意的引用数据类型赋值。
//模拟登录
需求,给三次机会,并提示还有几次
用户名和密码都是admin
需要循环
scanner sc=new scanner(system.in);
for (int i=0;i<3 ;i++ ) {
}
syso("请输入用户名");
string username=sc.nextline();
syso("请输入密码")
;
String password=sc.nextline();
//如果是字符串常量和字符串变量比较,通常是字符串常量调用方法,将变量当作参数传递,防止空指针异常
if ("admin".equals(username)&&"admin".equals(password)) {
syso ("欢迎")//这里admin 是字符串常量
break; //跳出循环
} else{
if (i==2) {
syso("您的错误以到明天再来")
}
syso("用户名或密码错误"+(2-i)+"你还有机会")
} |
|