一、标识符

1、标识符与关键字

标识符是在编程是使用的名字,使用时须遵循一定的规则:

  • 可以包含数字,但不能以数字开头
  • 下划线(_)和美元符号($)以外,不包含任何其他特殊字符,如空格
  • 不能用Java关键字保留字做标识符
  • Java标识符大小写敏感

关键字有:int、void、short、if、for、continue、do、break、else等有特殊含义的不能作为标识符。

保留字是指被保留但目前尚未被使用的关键字,为了保留未来可能使用的关键字而被保留,例如goto、const。

2、变量

变量是Java程序中最基本的存储单元,用来存储数据

  • 变量名必须是一个有效的标识符
  • 变量名不可以使用java的关键字
  • 变量名不可以重复
/**
 * 变量
 * @Author:SmallG
 * @CreateTime:2023/7/19+16:07
 */

public class VarDemo {
    public static void main(String[] args) {
        //声明(定义)一个变量  变量的类型  变量名(自己命名的标识符)
        int v1;  //声明一个int类型的变量 变量名是v1
        //变量需要初始化
        v1 = 1;
        //打印输出v1
        System.out.println(v1); //1
        //声明一个变量
        int v4 = 100;
        //使用变量
        System.out.println(v4); //100
        //修改变量
        v4 =200;
        //再次访问
        System.out.println(v4); //200
    }
}

二、数据类型

1、基本数据类型

四类八种基本数据类型:

  • 整数类型:byte、short、int、long
  • 浮点类型:float、double
  • 字符类型:char
  • 布尔类型:boolean

byte:字节类型,1字节(8个二进制位),数据范围是 -2^7 ~ 2^7-1(-128~127)。

short:短整型,2字节(16个二进制位),数据范围是 -2^15 ~ 2^15-1(-32768~32767)。

int:整型,4字节(32个二进制位),数据范围是 -2^31 ~ 2^31-1(-2147483648~2147483647)。

long:长整型,8字节(64个二进制位),数据范围是 -2^63 ~ 2^63-1。

float:单精度浮点数,4字节(32个二进制位),数据范围大约是 -3.403E^38 ~ 3.403E^38。

double:双精度浮点数,8字节(64个二进制位),数据范围大约是 -1.8E^308 ~ 1.8E^308。

char:2字节(16位),数据范围是0~2^16-1(0 ~ 65535)。可以表示汉字,一个汉字占两个字节的内存空间。

boolean:表示判断的结果,Java规范没有明确的规定,不同的JVM有不同的实现机制。

(为什么-1?因为有个符号位)

(负的比正的多一个,在于出现两个零。例如:10000000看为-128)

案例测试1:

1、声明并输出4种整型的最大值和最小值

2、声明并输出2种浮点类型的最大值和最小值

/**
 * @document:测试不同数据类型的最大值最小值
 * @Author:SmallG
 * @CreateTime:2023/7/19+17:41
 */

public class Scope {
    public static void main(String[] args) {
        //1、byte,short,int,long
        //定义变量的格式:数据类型 变量名 = 值;
        byte bMax = Byte.MAX_VALUE;
        byte bMin = Byte.MIN_VALUE;
        System.out.println(bMax); //127
        System.out.println(bMin); //-128

        short sMax = Short.MAX_VALUE;
        short sMin = Short.MIN_VALUE;
        System.out.println(sMax); //32767
        System.out.println(sMin); //-32768

        int iMax = Integer.MAX_VALUE;
        int iMin = Integer.MIN_VALUE;
        System.out.println(iMax); //2147483647
        System.out.println(iMin); //-2147483648

        long lMax = Long.MAX_VALUE;
        Long lMin = Long.MIN_VALUE;
        System.out.println(lMax); //9223372036854775807
        System.out.println(lMin); //-9223372036854775808

        //浮点型
        float fMax = Float.MAX_VALUE;
        float fMin = Float.MIN_VALUE;
        System.out.println(fMax); //3.4028235E38
        System.out.println(fMin); //1.4E-45

        double dMax = Double.MAX_VALUE;
        double dMin = Double.MIN_VALUE;
        System.out.println(dMax); //1.7976931348623157E308
        System.out.println(dMin); //4.9E-324

        //字符型
        char c1 = 'a';
        char c2 = 67;  //可以存储数字,0~127对应ASCII对应的值,128~65535默认按照空格处理
        char c3 = '关'; //可以存储汉字
        System.out.println(c1); //a
        System.out.println(c2); //C
        System.out.println(c3); //关
    }
}

案例测试2:

/**
 * @document: 数据类型案例
 * @Author:SmallG
 * @CreateTime:2023/7/20+9:08
 */

public class StudentInformation {
    public static void main(String[] args) {
        /*
        表示学生的信息 标识符命名要符合驼峰标识
         */
        int studentId = 12345;  //定义学生的学号
        String studentName = "SmallG"; //学生姓名
        int studentAge = 22; //学生年龄
        double studentScore = 90.5; //学生成绩
        char gander = '男';//学生性别
        boolean isMarried = false; //是否结婚
        //输出学生信息
        System.out.println("学生信息:");
        System.out.println("学号:" + studentId);
        System.out.println("姓名:" + studentName);
        System.out.println("年龄:" + studentAge);
        System.out.println("成绩:" + studentScore);
        System.out.println("性别:" + gander);
        System.out.println("是否结婚:" + isMarried);
    }
}

2、引用数据类型

(1)字符串类型

java中使用string类型的变量来存储字符串类型的数据,在声明时和基本数据类型很像。

字面量:在计算机中,字面量是用于表达源代码中一个固定值的表示法。所有固定的值都是字面量。

/**
 * @document:字面量
 * @Author:SmallG
 * @CreateTime:2023/7/19+17:32
 */
public class Literal {
    public static void main(String[] args) {
        int a = 3; //其中3是字面量,3默认为int类型
        long b = 5L; //其中5是字面量,L代表long类型
        short c = 6; //其中6是字面量,自动转换成int类型
        byte c1 = 1; //自动转换为int类型

        double d = 5.5; //5.5是字面量
        float f = 6.6F; //6.6是字面量,因为字面量默认是double类型,所以结尾要加上F

        char e = 'a'; //a是字面量
    }
}

3、数据类型转换

(1)小范围的数据可以自动转换为大范围数据类型

byte、short和char可以自动转换为int

int可以自动转换为long

long可以自动转换为float

float可以自动转换为double

/**
 * @document: 自动类型转换
 * @Author:SmallG
 * @CreateTime:2023/7/20+9:37
 */

public class AutoConversion {
    public static void main(String[] args) {
        byte b = 100;
        int i = b; //byte类型可以自动转换为int类型
        long l = i;
        float f1 = b;
        float f = l;
        double d = f;

        //关于不同类型的计算
        double x = 5 + 5.0; //整数5自动转换为double类型然后再计算
    }
}

(2)大范围的数据转换为小范围的数据类型需要强制转换

如果大范围的数据没有超过小范围的数据的范围,可以成功转换,如果超过小范围则会出现溢出和精度损失。

/**
 * @document:
 * 强制类型转换
 * 会出现的两个风险
 * 1、溢出
 * 2、精度损失
 * @Author:SmallG
 * @CreateTime:2023/7/20+10:07
 */

public class ForcedConversion {
    public static void main(String[] args) {
        short s1 = 123;
        byte b1 = (byte) s1;    //范围内的数据,可以成功转换
        System.out.println(b1); //123
        short s2 = 256;
        byte b2 = (byte) s2;    //超出范围出现溢出问题
        System.out.println(b2); 
        //0 正数超范围按照最小值加上相应的数,如果是负数超范围,按照最大值减去相应的值

        long l1 = 12389;
        int i1 = (int) l1;       //范围内的数据,可以成功转换
        System.out.println(i1);  //12389
        long l2 = 238923332233L;
        int i2 = (int) l2;       //超出范围,发生溢出问题
        System.out.println(i2);  //-1594836343

        double d1 = 2.5;
        float f1 = (float) d1;
        System.out.println(f1); //范围内的数据,可以成功转换 2.5
        double d2 = 1.0/3;
        float f2 =(float) d2;
        System.out.println(f2); //精度损失  0.33333334
    }
}
最后修改:2023 年 07 月 20 日
如果觉得我的文章对你有用,请随意赞赏