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
        }
 

posted on 2018-06-07 11:56  adamal  阅读(142)  评论(0)    收藏  举报