风晓

前言

在家无聊学习java第二天

内容

常量

  • 字符串常量
  • 整数常量
  • 浮点数常量
  • 字符常量
  • 布尔常量
  • 空常量:null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class TwodayDemo1{
public static void main(String[] args){
//字符串常量
System.out.println("ABC");
System.out.println("");
System.out.println("XYZ");

//整数常量
System.out.println(30);
System.out.println(-30);

//浮点数常量(小数)
System.out.println(3.14);
System.out.println(-2.5);

//字符常量
System.out.println('A');
System.out.println('6');
//System.out.println(''); 两个单引号中间必须有且仅有一个字符,没有就会报错
//System.out.println('AB') 有两个字符也不行

//布尔常量
System.out.println(true);
System.out.println(false);

//空常量,不能直接用来打印输出
// System.out.println(null); 会报错
}
}

数据类型

java的数据类型分为两大类:

  • 基本数据类型
  • 引用数据类型

基本数据类型

四类八种基本数据类型

数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -128~127
短整型 short 2个字节 -32768~32767
整形 int(默认) 4个字节 -2^31^~2^31^-1
长整型 long 8个字节 -2^63^~2^63^-1
单精度浮点数 float 4个字节 1.4013E-45~3.4028E+38
双精度浮点数 double(默认) 8个字节 4.9E-324~1.7977E+308
字符型 char 2个字节 0-65535
布尔类型 boolean 1个字节 true false

SP

  • java中的默认类型,整形是int,浮点型是double

  • 字符串不是基本类型而是引用类型

  • 浮点型可能只是一个近似值,并非精确的值

  • 数据范围与字节数并不一定相关,如float数据范围比long更加广泛,单float是4字节而long是8字节

  • 如果使用float需加后缀F,若使用long后缀需加L,推荐使用大写字母后缀

    1
    2
    3
    4
    System.out.println(100);//是int型
    System.out.println(100L);//是long型
    System.out.println(100.2);//是double型
    System.out.println(100F);//是float型

变量的定义

变量定义有以下两种方式

  1. 创建一个变量并且使用的格式

    • 数据类型 变量名称 //创建一个变量
    • 变量名称 = 数据值 //赋值
  2. 一步到位

    • 数据类型 变量名称 = 数据值;//在创建变量同时,立刻放入指定的数据值

      1
      2
       public class Day02{
      public static void main(String[] args){
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
       
    //方式一
    int num1;
    num1 =10;
    System.out.println(num1);
    //方式二
    int num2 = 25;
    System.out.println(num2);
    System.out.println("--------------");
    byte num3 = 30; //注意右侧数值不能超过左侧数据类型的数据范围
    System.out.println(num3);
    //byte num4 = 400;// 右侧超出了byte的取值范围,错误!!
    short num5 = 50;
    System.out.println(num5);

    long num6 = 3000000L;
    System.out.println(num6);

    float num7 = 2.5F;
    System.out.println(num7);

    double num8 = 1.2;
    System.out.println(num8);

    char zifu1 = 'A';
    System.out.println(zifu1);

    zifu1 = '中';
    System.out.println(zifu1);

    boolean var1 = true;
    System.out.println(var1);

    var1 = false;
    System.out.println(var1);

    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    **TIPS**

    * 变量之间不能重复
    * 对于float和long后缀不能丢掉
    * 如果用type和long注意取值范围
    * 没有进行赋值的变量,不能直接使用,一定要复制之后才能进行使用(如打印输出操作)
    * 变量不要超出变量的定义域

    # 数据类型转换

    1. 自动转换

    一个int类型变量和一个byte类型变量进行加法运算,结果是什么类型?

    ```java
    int i =1;
    byte b = 2;

    运算结果,变量的类型将是int类型,这就是出现了数据类型的自动类型转换现象

    自动转换(隐式):将取值范围小的类型自动提升为取值范围大的类型

    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String[] args) {
    int i =1;
    byte =2;
    //byte x = b+i //报错
    //int 类型和byte;类型运算,结果是int
    int j = b+i;
    System.out.println(j);
    }

    规则:数据范围从小到大

    1
    2
    3
    long num1 = 100;//左边是long,右边是int,从int--long是从小到大,自当发生数据类型转换
    double num2 = 2.5F;
    float num3 =30L;

    强制类型转换

    代码需要进行特殊的格式处理,不能自动完成

    范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据

    1
    2
    3
    4
    int num = (int) 100L;
    //左边是int类型,右边是long类型,不一样
    //long --> int ,不是从小到大,不能发生自动化类型转换
    //范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据

    Tips

    1. 强制类型转换一般不使用,因为有可能发生精度损失,数据溢出

      1
      2
      int num  =(int) 6000000000L;
      输出num为17亿数据溢出
    2. byte/short/char三种类型都可以发生数学运算

    3. byte/short/char三种类型在运算的时候,都会被首先提升为int类型然后再计算

    4. boolean 不能发生数据类型转换

运算符

一元运算符

  • 取反 !
  • 自增 ++
  • 自减 –

二元运算符

  • +
  • -
  • *
  • /
  • =

三元运算符

数据类型 变量名称 = 条件判断 ? 表达式A:表达式B;

1
2
3
int a;
int b;
int max = a > b ? a : b;

Tips

  • 必须同时保证表达式A和表达式B都符合左侧数据类型的要求
  • 三元运算符的结果必须被使用
1
2
3
int result = 3 > 4 ? 2.5 : 10 ;  //错误 数据类型不一致
System.out.println(a > b ? a : b);//正确写法
a > b ? a : b //错误写法,没有进行使用

已经到底了!:

 评论

!--动态线条背景-->