数据类型

一、标识符

1.1.什么是标识符(biao zhi fu)?

包,类,变量,方法.....等等,只要是起名字的地方,那个名字就是标识符

1.2.标识符定义规则:

  • 四个可以(组成部分):数字,字母,下划线_,美元符号$,注意:字母概念比较宽泛,指的是英文字母,汉字,日语,俄语......,但是我们一般起名字尽量使用英文字母
  • 两个不可以:不可以以数字开头,不可以使用java中的关键字
  • 见名知意:增加可读性
  • 大小写敏感: int a ; int A;
  • 遵照驼峰命名:
    • 类名:首字母大写,其余遵循驼峰命名
    • 方法名,变量名:首字母小写,其余遵循驼峰命名

    • 包名:全部小写,不遵循驼峰命名
  • 长度无限制,但是不建议太长 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasfd

二、关键字

关键字:被JAVA语言赋予了特殊含义,用作专门用途的单词
特点:JAVA中所有关键字都为小写
官网:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

 

三、变量和常量

3.1.字面常量

常量分为两种:
常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。
在Java语言中,主要是利用关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。
为了区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量(字符常量)。

字面常量的类型:

  • 整型常量:123 33
  • 实型常量:3.1415926
  • 字符常量:'a'
  • 逻辑常量:true false
  • 字符串常量: hello

注意:逻辑常量就两个值,一个是true,一个是false

3.2.变量

变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

java中所占的字节数

  • boolen,8位1个字节
  • int,32位,4个字节
  • float,32位 4个字节
  • double,64位8个字节
  • char 16位,2个字节
  • byte 8位1个字节
  • short 16位 2个字节
  • long 64位 8个字节

3.2.1.变量声明格式:

数据类型 变量名 =[初始值]
案例:

public class Demo01 {

    //定义常量
    public static final int REGION=6;

    //这是主方法main
    public static void main(String[] args) {
        int number = 4396;
        System.out.println(number);
    }
}

3.2.2.变量的声明的时候需要注意:

如果你只定义一个变量,没有给变量进行赋值的话,那么其实这个变量相当于没有定义:
变量如果没有进行赋值的话,那么使用的时候会出错,告诉你:尚未初始化变量:
变量的值可以更改:
变量不可以重复定义:

3.2.3.变量对于内存的使用

变量对于内存,只占用内存中的一块空间

3.2.4.变量的作用域

变量的作用域:

  • 作用域指的就是作用范围,变量在什么范围中有效
  • 作用范围就是离它最近的{}

局部变量:定义在方法中
成员变量:定义在类中,方法外

package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/5/16:09
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo02 {
    int b = 20;
    public static void main(String[] args){
        System.out.println(a);//no
        int a = 10;
        System.out.println(a);//yes
        System.out.println(b);//yes
        {
            int c = 40;
            System.out.println(c);//yes
            int a = 50;//属于变量的重复定义
        }
        System.out.println(c);//no
    }

    public void Hi(){
        System.out.println(b);//yes
        System.out.println(a);//no
        int a = 30;//不是变量的重复定义
        System.out.println(a);//yes
    }
}

四、基本数据类型

4.1.整数类型变量

整型数据类型:

比如:byte的右侧表数范围127怎么算出来的?
byte: 1字节=8位 ,127用二进制表示为:01111111

1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
= 64 + 32 + 16 + 8 + 4 + 2 + 1
= 127

案例如下:

package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/5/16:09
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo02 {
    int b = 20;
    public static void main(String[] args){
        int number1 = 100;//默认就是十进制的情况
        System.out.println(number1);

        int number2 = 0100; //前面加上0,这个值就是八进制
        System.out.println(number2);

        int number3 = 0x100; //前面加上0x就是十六进制
        System.out.println(number3);

        int number4 = 0B100; //前面加上0x或者0B,这个值就是二进制的
        System.out.println(number4);

        Long number5 = 1233123123123L;
        System.out.println(number5);

        //定义byte类型的变量
        byte b = 126;
        System.out.println(b);

        //注意超出范围的赋值会报错
        short s = 32761;
        System.out.println(s);

        int i = 321234;
        System.out.println(i);
        //整数类型,默认就是int类型的,如果定义的数据超过了int的范围,就会报错

        //把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
        //注意:只有这个数超出int类型的范围了后面才需要加上L,否则无需加L也可以赋值给long类型:
        long l = 12345678910L;
        System.out.println(l);
    }

}

4.2.浮点类型

4.2.1.浮点类型常量

(1).十进制数形式,例如:

3.14 314.0 0.314

(2).科学记数法形式,如

314e2(31400.0) 314E2 (E的大小写没有区分,31400.1) 314E-2(3.14)
double f = 314e2; //314*10^2-->31400.0
double f2 = 314e-2; //314*10^(-2)-->3.14

4.2.2.浮点类型常量

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。

浮点型数据类型表数范围

案例代码:

 
package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/6 14:24
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo04 {
    //这是主方法main
    public static void main(String[] args) {
        //浮点数的常量有两种表示方法
        //1.十进制
        double num1 = 3.14;
        System.out.println(num1);

        //2.科学计数法形式
        double num2 = 314E-3;
        System.out.println(num2);

        //浮点类型的变量
        //浮点型默认是double类型的,要想将数值赋值给float类型,必须在后面添加F或者f
        float f1 = 3.1412345657890F;
        System.out.println(f1);

        //double类型后面可以加D或者d,但是一般都是省略不写
        double d1 = 5.12313221D;
        System.out.println(d1);

        //一般不要进行浮点类型的比较
        float f2 = 3.14F;
        double d2 = 3.14;
        double d3 = 3.14;

        /*
        =  赋值运算将等号右侧的值赋给等号左侧
        == 判断左右两侧的值是否相等,结果要么相等 要么不相等,返回true或者false
        */
        System.out.println(d2==d3);

    }
}

4.3.字符类型

char数据类型是16位无符号Java基元数据类型。 它表示Unicode字符。请注意,char是无符号数据类型。 因此,char变量不能为负值。字符数据类型的范围为0到65535,这与Unicode集的范围相同。
1、JAVA中,char占2字节,16位。可在存放汉字
2、char赋值

  • char a='a'; //任意单个字符,加单引号。
  • char a='中';//任意单个中文字,加单引号。
  • char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。

注意:

  • char只能放单个字符。
  • char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。
  • 在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。
package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/6 14:35
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo05 {
    //这是主方法main
    public static void main(String[] args) {
        //定义字符
        char ch1, ch2;
        ch1 = 88; // code for X
        ch2 = 'Y';
        System.out.println("ch1 and ch2: ");
        System.out.println(ch1 + " " + ch2);
    }
}
 

4.4.布尔类型

boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。

package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/6 14:38
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo06 {
    //这是主方法main
    public static void main(String[] args) {
        //创建一个布尔类型的变量
        boolean f1 = true;
        System.out.println(f1);

        boolean f2 = false;
        System.out.println(f2);

        boolean f3 = 4==6;
        System.out.println(f3);
    }
}

4.5.基本数据类型的转换

package com.augus;

/**
 * @author : Augus
 * @date: 2023/5/6 14:44
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo07 {
    //这是主方法main
    public static void main(String[] args) {
        //类型转换的两种形式
        double d = 3; //int转换为double,自动完成

        int i = (int) 3.14; //强制类型转换 double转换为int

        //同一个表达式中,有多个数据类型的时候进行运算,整数类型、浮点类型、字符类型都可以,唯独布尔类型不可以
        double d1 = 1 + 123L + 8.5+'a';
        System.out.println(d1);

        //对于byte,short,char类型来说,只要在他们的表数范围中,赋值的时候就不需要进行强转了直接赋值即可。
        long l = 123;
        System.out.println(l);

        byte b = (byte) 121313123;
        System.out.println(b);
    }
}

4.5.案例练习

求圆周率和圆面积

package com.augus;

import java.util.Scanner;

/**
 * @author : Augus
 * @date: 2023/5/6 15:04
 * @Description: com.augus
 * @version: 1.0
 */
public class Demo08 {
    //这是主方法main
    public static void main(String[] args) {

        //一个变量被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了,这个常量就是我们所说的 字符常量,例如圆周率pi
        final double PI = 3.14;

        //创建扫描器
        Scanner scanner = new Scanner(System.in);
        //输出一个提示
        System.out.println("请录入一个半径:");

        //让扫描器获取键盘录入的int的类型的数据, 作为半径使用
        int r = scanner.nextInt();

        //求周长
        double c = 2 * PI * r;
        System.out.println("圆的周长为:"+c);

        //求圆的面积
        double s = PI*r*r;
        System.out.println("圆的面积:"+s);
    }
}

 

posted @ 2023-05-06 15:30  酒剑仙*  阅读(35)  评论(0)    收藏  举报