Java基础总结01拓展

一阶段:JavaSE学习01拓展

看不懂或者不想看的可以跳往下一篇,这个只是让你知识面更宽更广

1.数据类型拓展题(深入理解)

/**
 * @author 你的大龙猫啊
 * 数据类型拓展
 */
public class Expand01_DataType {
    public static void  main(String[] args) {
        //整数拓展: 进制  二进制0b   十进制   八进制0   十六进制0x

        int i = 10;
        int i2 = 010;  //八进制0
        int i3 = 0x10;  //十六进制0x
        
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=======================================");
        //浮点数拓展?   银行业务怎么表示? 钱       -----使用BigDecimal   数学工具类
        //float    有限的 离散的 舍入误差 大约  接近但不等于
        //double
        //最好完全避免使用浮点数进行比较      ---重点记住
        float f = 0.1f;  //0.1
        double d = 1.0 / 10;  //0.1
        System.out.println(f);
        System.out.println(d);
        System.out.println(f == d);    //false

        float d1 = 231311223f;
        float d2 = d1 + 1;
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(d1 == d2);   //true
        System.out.println("=======================================");

        //字符拓展
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int) c1);//强制转换     97
        System.out.println(c2);
        System.out.println((int) c2);//强制转换     20013

        //所有的字符本质还是数字
        //编码  Unicode 表:97 = a  65 = A  2字节 0 - 65536  Excel 2^16 = 65536
        //Unicode编码表示范围  U0000  - UFFFFF
        char c3 = '\u0061';
        System.out.println(c3);   //a

        //转义字符
        // \t  制表符  相当于3个空格
        // \n  换行
        System.out.println("hello\tworld");
        System.out.println("hello\nworld");
        System.out.println("=======================================");

        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);      //false
        String sc = ("hello world");
        String sd = ("hello world");
        System.out.println(sc == sd);     //true
        //对象 从内存分析

        //布尔值拓展
        boolean flag = true;
        
        if(flag==true){}     //新手
        if(flag){}           //老手
        //程序里面有这样一句话  Less is Moore! 代码精简易读
    }
}

2.强制转换拓展

/**
 * @author 你的大龙猫啊
 * 类型转换拓展
 */
public class Expand02_Convert {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分隔
        int money = 10_0000_0000;
        int years = 20;
        System.out.println(money);

        int total = money * years;
        System.out.println(total);//-1474836480  计算的时候溢出了

        long total2 = money * years;//默认是int,转换之前已经存在问题了
        System.out.println(total2);

        long total3 =money * ((long)years);
        System.out.println(total3);

    }
}
/**
 * @author 你的大龙猫啊
 * 类型转换拓展
 */
public class Expand02_Convert02 {
	/*
		请找出下列代码的错误, 指出原因并解决.   ---先去看代码	思考过后再看注释	
		担心的问题:		
			3 和 4 是两个常量, 整数常量默认的数据类型是int
			这里两个int相加, 结果还是int, int给byte赋值. 
			emmm... 应该需要强转吧
		
		Java存在常量优化机制:
		
			byte d = 3 + 4;
			
			这里的3和4是两个常量, Java存在常量优化机制, 会在编译的时候就会让3和4进行相加, 然后会自动判断7是否在byte的取值范围内
			
					不在范围内: 编译出错			
					在范围内: 通过编译
	*/
	public static void main(String[] args) {
		byte d = 3 + 4;
		System.out.println(d);
        
        long num = 123456;             //数据小的时候不会报错  自动类型提升
		long num = 123456789123456789; //数据超过范围时不加L就会报错 
        long num = 123456789123456789L //所以给long类型的变量赋值一般加上L
       
	}
}

3.位运算符拓展

package com.hui.expand;

/**
 * @author 你的大龙猫啊
 * @company www.com.hui
 * 位运算拓展
 */
public class Expand03_Operator {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ------------------
        A&B = 0000 1100    都为1才为1
        A|B = 0011 1101    有1则为1
        A^B = 0011 0001    相同则为0 不同则为1
        ~B = 1111 0010

        2*8 = 16    如何使计算机快速得到2*8的结果  --->  2*2*2*2
        效率极高
        << 左移   相当于*2
        >> 右移   相当于/2

        0000 0000      0
        0000 0001      1
        0000 0010      2
        0000 0011      3
        0000 0100      4
        0000 1000      8
        0001 0000      16
         */

        System.out.println(2<<3);
    }
}

先自己理解,如果还是不懂,再琢磨琢磨

你可能感兴趣的:(java基础知识拓展,java,后端,面试,程序人生)