JavaSE自学笔记Real_001

JavaSE自学笔记Real_001

一、变量

public class Shujuleixing {
    public static void main(String[] args) {
        //==================================================
        //整数拓展: 进制  二进制0b  十进制  八进制0  十六进制0x
        //==================================================
        int i1 = 10;
        int i2 = 010; //八进制0
        int i3 = 0x10; //十六进制0x

        System.out.println(i1);
        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==d); //false

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

        System.out.println("==========================================");

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

        //所有的字符本质还是数字
        //编码 Unicode 表:(97=a 65=A) 2字节 0-65536
        //U0000  UFFFF
        char c3 = '\u0061'; //以前的程序员需要写Unicode编码而不能直接写a
        System.out.println(c3); //输出字母a

        //===================================================
        //转义字符
        //=================================================
        //\t 制表符
        //\n 换行
        //....

        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){} //老手

        System.out.println("==========================================");
        //============================================================
        //数据转换(强制转换)
        //==========================================================
        //数据可以自动从低类型转换为高类型,但是不能从高类型转换为低类型
        //byte,short,char-->int-->long-->float-->double
        //强制转换  (类型)变量名  高-->低
        //自动转换  低-->高
        int i = 128;
        byte b = (byte)i; //导致内存溢出

        System.out.println(i);
        System.out.println(b);

        /*
        注意点:
        1、不能对布尔值进行转换
        2、不能把对象类型转换为不相干的类型
        3、在把高容量转换为低容量的时候,墙置转换
        4、转换的时候可能存在内存溢出,或者精度问题
         */

        //操作比较大的数的时候,注意溢出问题
        //JDK新特性   数字之间加下划线进行分割不会影响输出
        int money = 10_0000_0000;
        int years = 20;
        int total1 = money*years; //-1474836480 计算的时候溢出了
        long total2 = money*years; //-1474836480 转换之前已经溢出了
        long total3 = ((long)money)*years; //20000000000 解决方法,湘江一个数转换为long类型
        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);

        System.out.println("==============================================");
        //===================================================================
        //变量
        //===================================================================
        //变量的作用域  类变量前面加(static) 实例变量(普通变量)  局部变量(用在方法里面的变量)
        //实例变量:从属于对象;如果不进行初始化,这个类型的默认值为0  0.0
        //布尔值:默认是false
        //除了基本类型,其他的类型未进行初始化则默认为null

        //=======================================================================
        //运算符
        //=======================================================================
        /*
        算术运算符:+  -  *  /  %  ++  --
        赋值运算符:=
        关系运算符:>  <  >=  <=  ==  !=
        逻辑运算符:&&  !  ||
        位运算符:&  |  ^(异或运算符)  ~(取反运算符)  <<(左移)相当于乘以2  >>(右移)相当于除以2  >>>           (了解)
        条件运算符:表达式?表达式1:表达式2
        扩展运算符:+=  -=  *=  /=
         */

        //=======================================================================
        //包机制(包的本质就是文件夹)
        //=======================================================================
        /*
        为了更好地组织类,java提供了包机制,用于区别类名地命名空间
        包机制地语法格式为:
        package pkg1[.pkg2[.pkg3...]];
        一般利用公司域名倒置作为包名
        为了能够使用某一个包地成员,我们需要在Java程序中明确导入该包,使用”import“语句可以完成此功能
        import package1[.package2...].(classname或者*);  *代表导入所有的包。
         */
    }
}

二、流程控制语句

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        /*
        //next()不能输出带有空格的字符串
        //nextLine()是一Enter为结束的,可以输出带有空格的字符串
        //创建一个扫描对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");

        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            //使用next方法接收
            String str = scanner.next();
            System.out.println("输出的内容为:"+str);
        }

        //凡是属于IO流的类如果不关掉会一直占用资源,要养成好习惯用完就关掉
        scanner.close();
         */

        //使用nextLine方式
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("使用nextLine方式接收:");

        //使用nextLine方式接收
        String str1 = scanner1.nextLine();
        System.out.println("输出的内容为:"+str1);
        scanner1.close();
    }
}

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //从键盘键入数据
        int i = 0;
        float f = 0.0f;
        System.out.println("请输入整数:");
        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:" + i);
        }else{
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("小数数据:" + f);
        }else{
            System.out.println("输入的不是小数数据!");
        }
        
        scanner.close();
    }
}

if switch while for语句略

上一篇:2021-04-23-飞机大战-001-游戏开始界面


下一篇:001 初见咖啡