java基础语法

注释

单行注释 //

多行注释 /* content */

文档注释 /** this is javadoc comment */

标识符

关键字

Abstract assert boolean break byte case.....

不可作为变量名或方法名

数据类型

强类型语言:要求变量的使用严格符合规定,所有变量都必须先定义再使用。安全性较高,速度较慢。(java)

弱类型语言:javascript

java数据类型

  • 基本类型 primitive type

    数值类型:整数类型 浮点类型 字符类型char

    boolean类型

    //char
    char name = 'z';
    //String
    String name1 = "a string";

    Boolean: 1 bit, true or false


    Double: 8 bytes

    Float: 4 bytes


    Long: 8 bytes

    int: 4 bytes

    short:2 bytes

    byte:1字节

  • 引用类型 reference type

    接口

    数组

字节

位 bit:是计算机内部数据存储的最小单位

字节 byte:是计算机中数据处理的基本单位

1B = 8 bit

拓展

  • 整数扩展

    进制:二进制0b;十进制;八进制0;十六进制0x (0-9 A-F)

    binary octal decimal hex

  int i = 10; // 二进制 -- 10
int i2 = 010; // 八进制 -- 8
int i3 = 0x10; // 十六进制 -- 16
  • 浮点数拓展

    float: 有限 离散 舍入误差 结果是一个大约的数

    float f = 0.1f;
    double g = 1.0/10;
    System.out.println(f); // 0.1
    System.out.println(g); // 0.1
    System.out.println(f==g); // false

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

    BigDecimal(数学工具类)

    q:银行业务如何表示?

    最好完全避免使用浮点数进行比较

  • 字符拓展

    casts 强制转换

    所有的字符本质还是数字

    char c1 = 'A';
    char c2 = '中';
    System.out.println(c1);
    System.out.println((int)c1); //casts强制类型转换
    System.out.println(c2);
    System.out.println((int)c2);
    char c3 = '\u0061';
    System.out.println(c3); //a
    System.out.println("hello\tworld");
    System.out.println("hello\nworld");
    1. 八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377' \0:空字符

    2. Unicode转义字符:\u + 四个十六进制数字;0~65535 \u0000:空字符

    World

    hello

    hello world

    \n 换行符

    \t 制表符

    转义字符

    2字节 65536 (早期的Excel表格的长度 2**16=65536)U0000-UFFFF

    编码: unicode表

  • 布尔值扩展

    boolean flag = true;
    if (flag==true){}
    // equal to if(flag){}
    int i = 128;
    byte b = (byte)i; // -128
    //manipulate a large number, attention to overflow problem
    int money = 1_000_000_000; // _ can be used in numbers, it won't print
    int years = 20;
    int total = money * years; //-1474836480 memory overflow
    long total2 = money * years; // -1474836480
    // the type of money and years is int
    // so the default type of total2 is also int
    // before casts it to long, the result already got problem
    
    // First, cast one number to long
    long total3 = money * ((long)years); //20000000000

    memory overflow

    char c = 'a'; // a
    int v  = c+1; // 98
    System.out.println((char)v); // b
    1. 不能对布尔值进行转换

    2. 不能把对象类型转换为不相干的类型

    3. 在把高容量转换为低容量的时候,强制转换

    4. 转换的时候可能存在内存溢出,或者精度问题

    注意点

    低 -> 高

    double d = i; //128.0
    • 自动转换

    Problem2: 精度问题

    System.out.println((int)23.7); //23
    System.out.println((int)-45.89f); //-45
    problem1: 内存溢出 memory overflow
    the max value of byte is 127

    高 -> 低

    (类型)变量名

    • 强制转换

    类型转换

    • 强制转换

    (类型)变量名

    高 -> 低

    int i = 128;
    byte b = (byte)i; // -128

    problem1: 内存溢出 memory overflow
    the max value of byte is 127

    System.out.println((int)23.7); //23
    System.out.println((int)-45.89f); //-45

  • Problem2: 精度问题

    • 自动转换

    double d = i; //128.0

    低 -> 高

    注意点

    1. 不能对布尔值进行转换

    2. 不能把对象类型转换为不相干的类型

    3. 在把高容量转换为低容量的时候,强制转换

    4. 转换的时候可能存在内存溢出,或者精度问题

memory overflow

char c = 'a'; // a

int v = c+1; // 98

System.out.println((char)v);

//manipulate a large number, attention to overflow problem
int money = 1_000_000_000; // _ can be used in numbers, it won't print
int years = 20;
int total = money * years; //-1474836480 memory overflow
long total2 = money * years; // -1474836480
// the type of money and years is int
// so the default type of total2 is also int
// before casts it to long, the result already got problem

// First, cast one number to long
long total3 = money * ((long)years); //20000000000