JAVA常用API:String 常用方法练习
练习一:用户输入一个属性的名称,如输入name,返回getName
分析:用户输入的首字母大写,其它字母不变,再拼接get
public static String getMethodName(String name){
String str1 = new String(new char[]{name.charAt(0)}).toUpperCase();
String str2 = name.substring(1);
return ("get"+str1+str2);
}
//调用
getMethodName("name");
返回:getName
练习二:字符串数组{"010","3223","666","7890987","123123"},找到元素中数字左右对称的数,然后打印出来,如010是对称的,123123是不对称的
//调用方法:
String[] arr = {"010","3223","666","7890987","123123"};
getSymmetry(arr);
//方法
public static void getSymmetry(String[] arr){
for(int i=0; i<arr.length; i++){
if(isSymmetry(arr[i])){
System.out.println(arr[i]);
}
}
}
//定义方法,处理每个元素是否对称
public static boolean isSymmetry(String str){
boolean b = true;
char[] ch = str.toCharArray();
for(int i=0; i<ch.length/2; i++){
if(ch[i] != ch[ch.length-1-i]){
b = false;
}
}
return b;
}
练习三:分析以下方法中的比较结果
private static void demo5() {
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2); //这里比较的是内存地址,无关常量优化,常量优化只在定义变量时有效,运算时无效,故结果为false
System.out.println(s3.equals(s2)); //true 这里比较的是字面值
}
private static void demo4() {
//byte b = 3 + 4; //在编译时就变成7,把7赋值给b,常量优化机制
String s1 = "a" + "b" + "c";//java中有常量优化机制,在编译时期就能确定s2的值为"abc",所以编译时期,在常量池中创建"abc"
String s2 = "abc";//执行到这里时常量池中已经有了"abc",所以就不再创建,所以s1和s2指向的是常量池中同一个字符串常量"abc"
System.out.println(s1 == s2); //true,java中有常量优化机制
System.out.println(s1.equals(s2)); //true
}
private static void demo3() {//==比较的是地址值
String s1 = new String("abc"); //录的是堆内存对象的地址值
String s2 = "abc"; //记录的是常量池中的地址值
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true
}
private static void demo2() {
//创建几个对象
//创建两个对象,一个在常量池中,一个在堆内存中
String s1 = new String("abc");
System.out.println(s1);
}
private static void demo1() { //常量池中没有这个字符串对象,就创建一个,如果有直接用即可
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); //==号比较的是地址值,true
System.out.println(s1.equals(s2)); //比较的是字符串的内容:true
}
浙公网安备 33010602011771号