【Java学习Day09】Java知识点及面试题微讲
Java知识点及面试题
整数拓展
- 进制
- 二进制0b
- 八进制0
- 十进制
- 十六进制0x
 
public class Demo03 {
    public static void main(String[] args) {
        int num1 = 0b10;//int在内存里是以二进制存储的
        int num2 = 010;
        int num3 = 10;//为了方便观看,int输出的时候使用十进制进行输出
        int num4 = 0x10;
        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
        System.out.println(num4);
    } 
}
浮点数拓展
public class Demo03 {
    public static void main(String[] args){
        float num5 = 3.141592f;//float精确到第七位数
        double num6 = 3.141592;//double精确到第十六位数
        System.out.println(num5);
        System.out.println(num6);
        System.out.println(num5==num6);//ture
        //精度不同,因为31.41592不等于31.41592000000000
        float num7 = 3.1415926f;
        float num8 = num7 + 0.0000001f;//在float数据类型中,值加整数不用在整数后加F或f,值加浮点数要在浮点数后加F或f
        System.out.println(num7);
        System.out.println(num8);
        System.out.println(num7==num8);//false
    }
}
字符拓展
- 
所有字符的本质还是数字 
- 
- Unicode编码表中的每个编码占2个字节,且Unicode的编码可以处理各种语言的文字,不止有25536个字符
- 在Unicode编码表中字符都是用数字表示的,例如:97=a,65=A
- 以前的Excel表格最长只可以表示2的16次方=25536个字符
 
- 
- 
\u是转义字符,表示后面跟一个十六进制数,再通过这个十六进制数来指定一个字符 
- 
\u不能出现在注释中,\u在注释中也会转义,不然运行时会显示非法的 Unicode 转义 
- 
注意 //\u000d System.out.println("Hello World!"); 会输出hello world! \u000d,\\\u000d, \\\\\u000d...奇数个\都会转义 \\u000d, \\\\u000d...偶数个\不会转义
 
- 
- 
常用的转义字符 \n:回车换行符。显示该字符时,光标移到下一行的行首 \r:回车符。显示该字符时,光标移到当前行的行首 \t:水平制表符。显示该字符时,光标向右移动一个制表位 \v:垂直制表符。显示该字符时,光标向下移动到下一行的同一列制表位 \b:退格 \f:换页 \a:鸣铃 \\:反斜杠字符 \':单引号符 \":双引号符 \d \dd \ddd:1~3位八进制数所代表的字符,d的值可以是0~7的任何数字 \xh \xhh:1~2位十六进制数所代表的字符,h的值可以是0~f的任何字符public class Demo03 { public static void main(String[] args) { System.out.println("Hello\nWorld"); } }
对象 从内存分析
- new关键字会在内存申请一块空间,空间中就有地址,new了几次,就有几块空间,就有几个地址
- ==:如果比较的对象是引用数据类型,则比较的是地址是否一致,如果比较的对象是基本数据类型,则比较的是值是否一致
public class Demo03 {
    public static void main(String[] args) {
        String d1 = new String("Hello,world!");//new关键字会在内存申请一块空间,空间中就有地址
        String d2 = new String("Hello,world!");//new了几次,就有几块空间,就有几个地址
        System.out.println(d1==d2);//这里比较的是地址是否相等
        String d3 = "Hello,world!";
        String d4 = "Hello,world!";
        System.out.println(d3==d4);//这里比较的是值是否相等,d3和d4都是在字符串常量池取出来的,值以及存储地址都一样
    }
}
布尔值拓展
public class Demo03 {
    public static void main(String[] args) {
        boolean fleg=true;
        if (fleg==true){}//新手
        if (fleg){}//老手
        //Less is More!  代码要精简易读!
    }
}
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号