局部变量(local variable)

方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕为止。

  • 局部变量在使用前必须先声明和赋值

成员变量(也叫实例变量 member variable)

方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。

  • 未初始化的成员变量会被赋默认值
  • java全局生命周期静态变量 java局部变量生命周期_java

  • 静态变量(类变量 static variable)
    使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。
    常量使用final 修饰:

变量和常量命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则: monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则: Man, GoodMan
方法名:首字母小写和驼峰原则: run(), runRun()

java全局生命周期静态变量 java局部变量生命周期_java全局生命周期静态变量_02


java全局生命周期静态变量 java局部变量生命周期_java全局生命周期静态变量_03


八进制整数,要求以 0 开头,如:015

十六进制数,要求 0x 或 0X 开头,如:0x15

二进制数,要求0b或0B开头,如:0b01110011
long 长整型末尾要加L或l
long b = 55555555555L;

浮点型变量/常量

java全局生命周期静态变量 java局部变量生命周期_java_04


小数默认为double类型,定义float类型时要在数字末尾加F

浮点数的比较:
java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算。

import java.math.BigDecimal;
public class Main {
    public static void main(String[] args) {
        BigDecimal bd = BigDecimal.valueOf(1.0);
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        System.out.println(bd);//0.5
        System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
    }
}

boolean类型

boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false

java全局生命周期静态变量 java局部变量生命周期_java_05


逻辑运算符

java全局生命周期静态变量 java局部变量生命周期_首字母_06


java全局生命周期静态变量 java局部变量生命周期_首字母_07


短路与&&:若左边假,则不运行右边;

短路或||:若左边真,则不运行右边。

位运算符

java全局生命周期静态变量 java局部变量生命周期_首字母_08


java全局生命周期静态变量 java局部变量生命周期_java全局生命周期静态变量_09


异或运算:k=m^n,

java全局生命周期静态变量 java局部变量生命周期_System_10

位运算符都是对整型变量运算。
>> : 有符号右移,
>>> : 无符号右移,前面空的全用0补。在求哈希值中会用到。

运算符的优先级

java全局生命周期静态变量 java局部变量生命周期_java_11


加号+遇到字符串后变成字符串连接符,看下面例子:

java全局生命周期静态变量 java局部变量生命周期_java_12


java全局生命周期静态变量 java局部变量生命周期_java_13


自动类型转换

java全局生命周期静态变量 java局部变量生命周期_首字母_14


int 和long自动转float时会有精度丢失;图中虚线表示有精度损失。

可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。

不能在布尔类型和任何数值类型之间做强制类型转换

简单的键盘输入和输出

import  java.util.Scanner;

public class TestScanner {
    public static void main(String[] args) {
        Scanner   scanner =  new Scanner(System.in);
        System.out.println("请输入名字:");
        String   name =  scanner.nextLine();
        System.out.println("请输入你的爱好:");
        String  favor = scanner.nextLine();
        System.out.println("请输入你的年龄:");
        int   age = scanner.nextInt();
         
        System.out.println("###############");
        System.out.println(name);
        System.out.println(favor);
        System.out.println("来到地球的天数:"+age*365);
        System.out.println("离开地球的天数:"+(72-age)*365);
    }
}