笔试java--break+char+comparable+double+equals+for+getBytes+Integer

----------break----------

package java_basic;

public class java_break {

    public static void main(String[] args) {

        m1();
        m2();
    }//m

    private static void m2() {

        for (int i = 0; i < 10; i++) {
            if (i == 5) {
                System.out.println("i==5");
                break;
            }
            System.out.println("--");
        }
    }//m

    public static void m1() {
        // test:
        System.out.println("test_break::");

        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 6; j++) {
                if (i == 4)
                    break;
                if (j == 3)
                    break;
                System.out.println("i:  " + i + "   j:   " + j);
            }
        }
    }//m

}//c

// 结论 跳出最近一层的循环

 

-------------------char-------------------------

package java_basic;

public class java_char {

    /**
     * @param args
     */
    public static void main(String[] args) {

        fun1();
        System.out.println();
        fun2();

    }

    private static void fun2() {
        char c = '7';
        //        if( c=='+'  ||   c=='-'  ||   ('0'<= c<='9')   ){
        if (c == '+' || c == '-' || '0' <= c || c <= '9') {
            System.out.println("yes");
        }

    }

    public static void fun1() {
        System.out.println("0");
        System.out.println('0');
        System.out.println('1');
        System.out.println('A');
        System.out.println('a');

        System.out.println();

        int a = '0';
        int a2 = 'A';
        int a3 = 'a';
        System.out.println(a);
        System.out.println(a2);
        System.out.println(a3);
    }

}
 

-------------------comparable-------------------------

package java_basic;

import java.util.ArrayList;
import java.util.List;

//??????????????

public class java_Comparable {

    public static void main(String[] args) {
            List<Person> personList = new ArrayList<>();
            personList.add(new Person("a", 2));
            personList.add(new Person("b", 4));
            personList.add(new Person("c", 7));
            // 升序
            personList.sort(Comparator.comparingInt(Person::getAge));           /?????????????????
            // 降序
            personList.sort(Comparator.comparingInt(Person::getAge).reversed());
            System.out.println(personList);
        }

    public static class Person {
        private String name;
        private Integer age;

        public Person(String name, Integer age) {
            this.name = name;
            this.age = age;
        }

        public Integer getAge() {
            return age;
        }

        // ... toString 方法
    }

}
 

-------------------comparator------------------------

package java_basic;

import java.util.Arrays;
import java.util.List;
import java.util.Comparator;


//??????????????

public class java_Comparator {

    /**
     * @param args
     */
    public static void main(String[] args) {

    }

    private void fun1(){
//        对整数列表排序(升序)
        List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);
        list.sort(Comparator.naturalOrder());                                 // 有错误,是不是因为用jdk1.7???
        System.out.println(list);
//        对整数列表排序(降序)
        List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8);
        list.sort(Comparator.reverseOrder());
        System.out.println(list);
    }
    
    
}//c

-------------------double-------------------

package java_basic;

public class java_double {

    /**
     * @param args
     */
    public static void main(String[] args) {
        test_double();
    }//m

    private static void test_double() {
        int a=1;
        int b=2;
        double c1=(a+b)/2;
        double c2=(double)(a+b)/2;
        System.out.println(c1);
        System.out.println(c2);
    }//m2

}
 

-------------------equals-------------------

package java_basic;

public class java_equals {

    public static void main(String[] args) {
        System.out.println("1:");
        fun1();
        System.out.println("2:");
        fun2();

        System.out.println("\n lettcode实际遇到问题:");
        fun3();

    }

    private static void fun3() {

        String s = "MMMCMXCIX";// 3999
        String[] romanNum = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
        int[] intNum = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };

        // ==??
        String str0 = "M";
        System.out.println(romanNum[0]);
        System.out.println(str0);
        System.out.println(s.substring(0, 1));
        System.out.println();

//        Object的hashCode()默认是返回内存地址的,但是hashCode()可以重写,所以hashCode()不能代表内存地址的不同
//        System.identityHashCode(Object)方法可以返回对象的内存地址,不管该对象的类是否重写了hashCode()方法。
        System.out.println("M".hashCode());
        System.out.println(romanNum[0].hashCode());
        System.out.println(str0.hashCode());
        System.out.println(s.substring(0, 1).hashCode());
        System.out.println();
        
        System.out.println(System.identityHashCode("M"));
        System.out.println(System.identityHashCode(romanNum[0]));
        System.out.println(System.identityHashCode(str0));
        System.out.println(System.identityHashCode(s.substring(0, 1)));
        System.out.println();

        System.out.println(str0 == "M");
        System.out.println(romanNum[0] == str0);
        System.out.println(romanNum[0] == "M");//????
        System.out.println(romanNum[0] == s.substring(0, 1)); // 很严重的错误!!!string比较不用==,用equeals!!!!!!!
        System.out.println();
        
        //当使用x.substring(1,3)对x赋值的时候,它会指向一个全新的字符串.           当调用substring方法的时候,会创建一个新的string对象,
        System.out.println(s.substring(0, 1) == "M");
        System.out.println(s.substring(0, 1) == str0);
        System.out.println(s.substring(0, 1) == romanNum[0]);
        System.out.println();
        
        System.out.println(romanNum[0].equals(s.substring(0, 1)));
        System.out.println(romanNum[0].equals("M"));
        System.out.println(romanNum[0].equals(str0));

    }

    //        Java中equals和==的区别
    //        java中的数据类型,可分为两类: 
    //        1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
    //          他们之间的比较,应用双等号(==),比较的是他们的值。 
    //        2.复合数据类型(类) 
    //          当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,
    //          否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,
    //          这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,
    //          而不再是比较类在堆内存中的存放地址了。
    //          对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,
    //          因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

    public static void fun1() {
        String s1 = "Monday";
        String s2 = "Monday";
        System.out.println(System.identityHashCode(s1));
        System.out.println(System.identityHashCode(s2));
        System.out.println(System.identityHashCode("Monday"));
        if (s1 == s2) {
            System.out.println("s1 == s2");
        } else {
            System.out.println("s1 != s2");
        }
    }

    public static void fun2() {
        String s1 = "Monday";
        String s2 = new String("Monday");
        System.out.println(System.identityHashCode(s1));
        System.out.println(System.identityHashCode(s2));// 果然,new了一个,地址就不一样了
        System.out.println(System.identityHashCode("Monday"));
        
        if (s1 == s2) {
            System.out.println("s1 == s2");
        } else {
            System.out.println("s1 != s2");
        }

        if (s1.equals(s2)) {
            System.out.println("s1 equals s2");
        } else {
            System.out.println("s1 not equals s2");
        }

    }//fun2
        //    将s2用new操作符创建
    //    程序输出:
    //    s1 != s2
    //    s1 equals s2
    //    说明:s1 s2分别引用了两个"Monday"String对象

}//c

 

 

-------------------for-------------------

package java_basic;

public class java_for {
    public static void main(String[] a) {
        m1();
        System.out.println();
        m2();
    }

    private static void m2() {
        int i=0;
        for(i=0;i<10;i++){
         
        }
        System.out.println(i);//  出了这个循环 ,变成了10
    }

    
    
    private static void m1() {
        int i=0;
        for(i=0;i<10;i++){
            if(i==5)
                break;
        }
        System.out.println(i);
    }
}
 

 

-------------------getBytes-------------------

package java_basic;

public class java_getBytes {

    public static void main(String args[]) throws Exception {

        String str = "中文字符";
        System.out.println("original string---" + str);// 会正常输出原始串

        /**
         * 
         * str.getBytes();    如果括号中不写charset,则采用的是Sytem.getProperty("file.encoding"),即当前文件的编码方式,
         * 很多人写的是系统的默认编码,通过代码测试并非如此,实际得到的是文件的编码方式*
         * str.getBytes("charset");//指定charset,即将底层存储的Unicode码解析为charset编码格式的字节数组方式
         * String new_str=new String(str.getBytes("utf-8"),"gbk"));
         * //将已经解析出来的字节数据转化为gbk编码格式的字符串,在内存中即为gbk格式的字节数组转为Unicode去交互传递
         */
        String new_str_gbk = new String(str.getBytes("utf-8"), "gbk");
        System.out.println("new_str_gbk----" + new_str_gbk);
        

        /**
         * 此时的输出是乱码,在UTF-8的file.encoding下输出gbk格式的数据肯定是乱码,但是new_str的确是gbk编码式的
         * 此时的乱码源于encoding不符,但gbk格式的new_str本身数据并没有问题,通过下面的转换也可以看得出来
         */
        String new_str_ios88591 = new String(str.getBytes("utf-8"), "ISO-8859-1");
        System.out.println("new_str_ios88591---" + new_str_ios88591);

        /**
         *输出是正常的,此时将gbk编码格式的new_str字符串,用gbk这个charset去解析它,然后用utf-8再转码一次,
         * 因为new_str确实是gbk格式的,才能经过utf-8编码得到正常的数据显示。
         */
        String final_str = new String(new_str_gbk.getBytes("gbk"), "utf-8");// 此处的含意与最上边的注释是一致的参数含意
        System.out.println("final_str---" + final_str);


//         在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样! 
//         String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:
//
//         Java代码  收藏代码
//         byte[] b_gbk = "深".getBytes("GBK");   
//         byte[] b_utf8 = "深".getBytes("UTF-8");   
//         byte[] b_iso88591 = "深".getBytes("ISO8859-1");   
//         byte[] b_unicode = "深".getBytes("unicode");  
//             将分别返回“深”这个汉字在GBK、UTF-8、ISO8859-1和unicode编码下的byte数组表示,
//             此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1,unicode为4。 
//
//             而与getBytes相对的,可以通过new String(byte[], decode)的方式来还原这个“深”字时,
//             这个new String(byte[], decode)实际是使用decode指定的编码来将byte[]解析成字符串。 
    }

}
 

-------------------Integer-------------------

package java_basic;

public class java_Integer {

    /**
     * @param args
     */
    public static void main(String[] args) {

        int i = 123456;
        // int--->String--->Integer-->int
        String i2=String.valueOf(i+100);  // string   valueof  函数  返回String类型  ,,  
        System.out.println(i-(int)Integer.parseInt( i2));
    }
}
 

----------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值