欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础总结01拓展

程序员文章站 2022-07-08 10:16:51
一阶段:JavaSE学习01拓展看不懂或者不想看的可以跳往下一篇,这个只是让你知识面更宽更广1.数据类型拓展题(深入理解)/** * @author 你的大龙猫啊 * 数据类型拓展 */public class Expand01_DataType { public static void main(String[] args) { //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i = 10;...

一阶段: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);
    }
}

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

本文地址:https://blog.csdn.net/weixin_44215263/article/details/107661748