Day04-05

Java基础语法

注释

作用

  • 当项目结构一旦复杂起来,使用注释进行理解
  • 书写注释是个非常好的习惯

类型

  • 单行注释
  • 多行注释
  • 文档注释
public class HelloWorld {
    public static void main(String[] args) {
        //输出一个Hello,world!
        //单行注释(注释并不会执行,便于理解)
        System.out.println("Hello,world!");//可在后面注释,但不能前面加注释
    }
}
//多行注释   语法结构: /*  注释内容    */
/*
我是多行注释
多行注释是我
 */

//JavaDoc:文档注释     语法结构: /** 注释内容(可以增加可识别的参数)  */
/**
 * @Desciption HelloWorld
 * @Author Hanker-cc
 */

标识符

关键字

注意事项

  • 所以标识符都应该以字母、美元符号$或者下划线(_)
  • 即不能为数字,#或者%
  • 不能使用关键字作为变量名或者方法名
  • 标识符是大小写敏感
  • 在命名之中,最好使用英文,养成良好习惯
public class StringStudy {
    public static void main(String[] args) {
        String teacher = "Hanker";
        String Teacher = "hanker";
        String Name = "King of Honor";
        System.out.println(teacher);
        System.out.println(Name);
        System.out.println(Teacher);
    }
}

数据类型

强类型语言(安全性高速度慢)

  • Java为强类型语言:即要求变量的使用需要严格符合规定,所以变量都必须先定义后使用

弱类型语言(相对相反)

  • eg:JavaScript

Java数据类型

public class Demo01 {
    public static void main(String[] args) {
       //八大基本数据类型
        //整数
        int num1=10;   //常用整数类型
        byte num2=20;
        short num3=30;
        long num4=30L;//相同定义30时,需要在long类型后加L
        //浮点数
        float num5=50.1F;//float类型需要在后面加F
        double num6=3.14159265358979323842643;//常用

        //字符 (字符是代表一个字)
        char name='A';//单引号是字符char,双引号是string

        //字符串,String不是关键字,是一个类(类是引用类型)
        String name2="Hanker";

        //布尔值,只有true和false
        boolean flag=true;
        boolean gg=false;


    }
}

数据类型扩展及面试题

public class Demo02 {
    public static void main(String[] args) {
        //整数拓展:进制问题
        //二进制0b开头  十进制   八进制0   十六进制0x
        int oi=10;
        int oi2=0110;//八进制0
        int oi3=0x69;//十六进制0x   0-9  A-F  16
        System.out.println(oi);
        System.out.println(oi2);
        System.out.println(oi3);
        System.out.println("=======================");
        //============================================
        //浮点数拓展
        //float   字长有限 离散 舍入误差 得到大约数(接近但不等于)
        //double

        float a=0.01f;//等于0.01
        double b=0.1/10;//等于0.01
        System.out.println(a);
        System.out.println(b);

        System.out.println(a==b);//false

        float c=983101379;//等于983101379
        float d=c+1;//等于983101380

        System.out.println(c==d);//ture

        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //使用类进行解决 BigDecimal(数学工具类)

        System.out.println("=======================");
        //===================================================
        //字符拓展
        char c1='a';
        char c2='中';
        char c3='国';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换,字母成数字
        System.out.println(c2);
        System.out.println((int) c2);//强制转换,文字成数字
        System.out.println(c3);
        System.out.println((int) c3);//强制转换,文字成数字
        //所有字符本质是数字
        //编码 Unicode 存在编码表进行转换 2字节

        //反表示:U0000  UFFFF

        char c4='\u0066';
        System.out.println(c4);//代表f

        System.out.println("===================================");
        //==================================================
        //转义字符
        //    \t制表符;\n换行;

        System.out.println("Hello,world");
        System.out.println("Hello\tworld");
        System.out.println("Hello\nworld");

        System.out.println("===================================");
        //====================================================
        //布尔值扩展
        boolean flag=true;
        if (flag){};//老手
        if(flag==true){};//新手
        //67与68本质相同,flag默认为true条件
        //Less is more! 老手时代码要精简易读


    }
}

类型转换

  • Java是强类型语言,进行运算时需要用到类型转换
  • 一般而言,不同类型数据应先转化为同一类型,然后在进行运算

浮点数优先级高于整数

public class Demo03 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//强制转换:(类型)变量名
        System.out.println(i);//输出128
        System.out.println(b);//输出-128;为内存溢出现象,超过它的字节范围
        //byte类型中的字节范围为-127~127

        //从高到低为强制转换
        //从低到高为自动转换
        byte a=125;
        int c=a+1;
        System.out.println(a);
        System.out.println(c);

        //==================================================
        char q='a';
        int w=q+9;
        System.out.println(w);//低到高,字符到数字
        System.out.println((char) w);//低到高,数字到字符



        System.out.println(23.7);
        System.out.println((int)23.7);//输出23,存在精度问题



        /*
        注意点:
        1.不能对布尔值进行转换,因为只有true和false
        2.不能把对象类型转换为不相干的类型
        3.转换的时候可能存在内存溢出,或者精度问题
         */




    }
}

在计算中的注意点

public class Demo04 {
    public static void main(String[] args) {
        //操作比较大的数字时,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money=10_0000_0000;
        int years=20;
        int total=money*years;
        System.out.println(total);//输出-147486480,内存溢出
        long total2=money*years;
        System.out.println(total2);//输出同样溢出,计算原理是先在int类型中计算出结果
        //即转换之前已经存在问题
        long total3=money*((long)years);
        System.out.println(total3);
        //虽然int转换为long是低到高的自动转换,但是计算中需要转先,避免计算优先

    }
}

posted @ 2021-07-30 19:38  Hacker-红烧肉  阅读(34)  评论(0)    收藏  举报