UM2L2——变量与常量

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
System.out.println()    // Java的输出字符串到终端的方法
//1、有符号的整形变量 能存储一定范围内的正负数包括0的变量类型
byte sb = 1; // -128~127
int i = 1; // -21亿~21亿
short s = 1; // -32768~32767
long l = 1; // -九百万兆~九百万兆
//2、浮点数(小数)
float f = 0.1f; // 数字后必须加f声明float,因为小数会被默认为double,从非0数算起为有效数字,7/8位有效数字,超出部分会四舍五入
double d = 0.1; // 从非0数算起为有效数字,15~17位有效数字,超出部分会四舍五入
//3、特殊类型
boolean bo = true; // true或者false
char c = 'a'; // 需要加'',单个字符
String st = "hello"; // 需要加"",字符串

final // 常量声明,Java的常量没有静态特性
Integer.parseInt() // 字符串转整数方法,第二个参数是进制

Java的变量和常量

Java的变量类型和C#非常的类似,其中需要注意的是

  1. Java中没有专门的无符号类型
  2. Java中的常量关键字和C#不一样
  3. 一些关键字和方法写法不同

其它的变量相关操作表现和C#中很相似

有符号整型

  1. byte

    1个字节,8位,范围:-2^7 ~ 2^7 - 1​,-128 ~ 127

    1
    2
    3
    System.out.println("byte位数" + Byte.SIZE);
    System.out.println("byte最大值" + Byte.MAX_VALUE);
    System.out.println("byte最小值" + Byte.MIN_VALUE);

    输出:

    1
    2
    3
    byte位数8
    byte最大值127
    byte最小值-128
  2. short

    2个字节,16位,范围:-2^15 ~ 2^15 - 1​,-32768 ~ 32767

    1
    2
    3
    System.out.println("short位数" + Short.SIZE);
    System.out.println("short最大值" + Short.MAX_VALUE);
    System.out.println("short最小值" + Short.MIN_VALUE);

    输出:

    1
    2
    3
    short位数16
    short最大值32767
    short最小值-32768
  3. int

    4个字节,32位,范围:-2^31 ~ 2^31 - 1​,-2,147,483,648 ~ 2,147,483,647

    1
    2
    3
    System.out.println("int位数" + Integer.SIZE);
    System.out.println("int最大值" + Integer.MAX_VALUE);
    System.out.println("int最小值" + Integer.MIN_VALUE);

    输出:

    1
    2
    3
    int位数32
    int最大值2147483647
    int最小值-2147483648
  4. long

    8个字节,64位,范围:-2^63 ~ 2^63 - 1​,9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

    1
    2
    3
    System.out.println("long位数" + Long.SIZE);
    System.out.println("long最大值" + Long.MAX_VALUE);
    System.out.println("long最小值" + Long.MIN_VALUE);

    输出:

    1
    2
    3
    long位数64
    long最大值9223372036854775807
    long最小值-9223372036854775808

有符号整型的默认值都是0

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Lesson2 {
static byte b;
static short s;
static int i;
static long l;

public static void main(String[] args) {
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
}
}

输出:

1
2
3
4
0
0
0
0

无符号整型

注意:Java最初设计中没有无符号类型

Java 8 中添加了一些和无符号类型有关的一些方法(但是一般使用较少)

浮点型

  1. float

    4个字节,32位,如果要声明一个float类型的数字,需要在最后加上一个f
    当小数点后面的值为0时,小数点后的内容可以省略,当小数点前面的值为0时,小数点前面的内容可以省略

    1
    2
    3
    4
    5
    6
    7
    8
    9
    System.out.println("float位数" + Float.SIZE);
    System.out.println("float最大值" + Float.MAX_VALUE);
    System.out.println("float最小值" + Float.MIN_VALUE);
    float f = .5f;
    System.out.println(f);
    f = 1.f; //等于1.0f
    System.out.println(f);
    f = .5f; //等于0.5f
    System.out.println(f);

    输出:

    1
    2
    3
    4
    5
    6
    float位数32
    float最大值3.4028235E38
    float最小值1.4E-45
    0.5
    1.0
    0.5
  2. double

    8个字节,64位,声明一个double类型的数字,最后加不加d都一样

    1
    2
    3
    4
    System.out.println("double位数" + Double.SIZE);
    System.out.println("double最大值" + Double.MAX_VALUE);
    System.out.println("double最小值" + Double.MIN_VALUE);
    double d = 1.5;

    输出:

    1
    2
    3
    4
    double位数64
    double最大值1.7976931348623157E308
    double最小值4.9E-324
    1.5

其它类型

  1. boolean

    单个boolean​在编译时使用int​类型,这时4个字节;boolean​数组时,编译时用字节数组,所以占1个字节,默认是false

    1
    2
    boolean b0 = true;
    boolean[] bs;
  2. char

    2个字节,16位,注意,声明一个 char​ 的字符需要使用 ''​ 而不是 ""

    1
    2
    System.out.println("char位数" + Character.SIZE);
    char c = 'A';

    输出:

    1
    char位数16
  3. String

    根据字符串长度而定,注意!Java的String关键字首字母大写!

    1
    2
    String str = "123";
    System.out.println(str);

    输出:

    1
    123

常量

关键字:final
特点:必须初始化,不能被修改

和C#不同,Java的常量不是静态的,因此如果想让常量在静态代码块内使用就必须要加上static

1
2
3
4
5
static final int iii = 19;
public static void main(String[] args) {
// iii = 199; //不能修改常量
System.out.println(iii);
}

类型转换

  1. 隐式转换

    低级(字节少的)到高级(字节多的)

    记住一句话 大容器 可以装 小容器 不需要我们去处理
    byte​——>short​——>char​——>int​——>long​——>float​——>double

    1
    2
    3
    byte b2 = 111;
    short s2 = b2;
    System.out.println(s2);

    输出:

    1
    111
  2. 显式转换

    括号强转,高级到低级可能会溢出,丢失精度或者报错

    1
    2
    3
    4
    5
    short s3 = (short) i3;
    System.out.println(s3); //溢出
    float f2 = 2.5f;
    i3 = (int) f2;
    System.out.println(i3); //丢失精度

    输出:

    1
    2
    -25536
    2
  3. 字符串转数值

    包装类中的parse​相关方法

    1
    2
    3
    4
    5
    6
    int i4 = Integer.parseInt("123");
    System.out.println(i4);
    i4 = Integer.parseInt("101", 2); //二进制字符串转数字
    System.out.println(i4);
    Short s4 = Short.parseShort("1234");
    System.out.println(s4);

    输出:

    1
    2
    3
    123
    5
    1234