欢迎来到我的博客

将来的你一定会感激现在拼搏的自己

JavaSE基础day02变量、数据类型与运算符


 一、变量

(一)变量的概念

变量: 在程序运行过程中,其值可以发生改变的量

举例 : 年龄, 手机号码, 家庭住址, 产品单价...

 

(二)变量的定义和使用

1. 变量定义步骤

   变量的定义分为两步:

        (1) 变量的声明: 确定了变量名 和 变量的数据类型

(2) 变量的赋值: 为变量进行初始化赋值

 

2. 变量定义语法

(1) 方式1: 先声明 再赋值

     语法:

                 数据类型 变量名;  --> 变量的声明

         变量名  =  变量值;  --> 变量的赋值

 

     案例:

                 int a;

                 a = 10;

 

(2) 方式2: 声明的同时并赋值

     语法: 

                 数据类型 变量名 = 变量值;

         案例:

                 int a = 20;

 

3. 变量的使用:

变量的访问 : 直接通过变量名访问变量值

变量的赋值 : 变量名 = 新的变量值;

 

 

4. 变量的内存理解:

 

 

(三)变量定义和使用注意事项

1. 变量的作用域:只能在变量的作用域范围内访问该变量

作用域: 指可以访问到变量的范围区域,从定义的位置开始,到所在的距离最近的代码块{}结束

    

2. 在方法中可以定义同名的两个局部变量,但是要求两个同名的局部变量不能有重合的作用域(局部变量即定义在方法中的变量)

   举例 : 同一班级(重叠作用域)中有两个同名学生(两个同名变量), 于是老师通过名字区分学员, 出现矛盾情况

 

3. 局部变量在使用之前必须先赋值

 

4. 相同数据类型的变量可以连续定义, 但不建议使用

public static void main (String[]args){
    // 1. a自定义起,使用范围在main方法中
    int a = 15;
    System.out.println(a);// 15

}

 

复制代码
 {
            int b = 30;
            System.out.println(a + b);// 45
        }
        // 变量b超出使用范围, 于是代码报错
        // System.out.println(b);

        // 2. 相同的作用域(局部变量)变量, 名字不要重复
        // 局部变量: 定义在方法中的变量
        int x = 89;
        // int x = 95;
        System.out.println(x);

        {
            int y = 99;
        }

        {
            int y = 77;
        }

        // 3. 局部变量没有赋值不能使用
        int t;
        // t变量没有赋值
        // System.out.println(t);

        // 4. 相同数据类型变量可以连续定义(了解)
        int q = 99, w = 11, e = 12;
    }
}
复制代码

 

(四) 计算机存储单元

 

1. 概述: 计算机底层是采用二进制的方式存储数据的,计算机中存储的最小信息单位叫比特位(bit),通常用 b 表示,8个比特位构成计算机中最基本的存储单位叫字节(Byte),通常用 B 表示.

 

2. 存储单位之间的换算关系:

 

    8bit = 1B

 

1024B = 1KB

 

1024KB = 1MB

 

1024MB = 1GB

 

1024GB = 1TB

 

1024TB = 1PB...

 

(五) JAVA数据类型

5.1数据类型分类

  Java语言是一门强类型语言, 定义一个变量时, 必须要指定这个变量的数据类型; 因为不同的数据类型在内存中占有的空间位置和大小不同, 表示的数据也不同

 

5.2基本数据类型

5.2.1整数类型

注意事项:

       1. 整数类型中字面值常量的默认类型是int类型

       2. long类型的变量在定义的时候,当字面值超过int范围需要在字面值后加 L / l,建议 L

 

5.2.2小数(浮点)类型

 

注意事项:

 

1. 小数类型的字面值常量默认类型是 double类型

 

2. float 类型变量在定义的时候,需要在字面值后加 F / f,建议F

 

3. double 类型的变量在定义的时候,可以在字面值后加 D / d,也可以不加.

 

4. 浮点型存储的数据是不精确的数据,所以在运算过程中,其结果也有可能不精确.

 

  例如:

 

double a = 0.1;

 

        double bbb = 0.2;

 

        System.out.println(a + bbb);// 0.30000000000000004

 

5.2.3字符类型

1. 字符类型变量的赋值方式:

    (1) 通过 '' 形式赋值

                 案例:

                 char c = 'A';

(2) 通过ASCII码表赋值

案例:

char c = 65;

常用的ASCII码表值

'A' -- 65 'a' -- 97 '0' -- 48

(3) 通过unicode编码赋值

案例:

char c = '\u0041';

说明: unicode编码采用16进制的形式进行赋值

十六进制就是0到15,逢十六进一,都有 0 1 2 3 4 5 6 7 8 9 a b c d e f

(4) 通过unicode编码赋值,使用十进制的形式赋值

案例:

char c = 34888;

 

 

2. ASCII编码表 : 别称’字符集’,最开始只有英文、数字和英文状态的特殊符号,定义在ASCII编码表中

规律:数字本身连续,数字到大写字母不连续;大写字母本身连续,大写字母到小写字母不连续;小写字母本身连续

 

5.2.4布尔类型

 

 

5.3字符串类型

String 类是字符串,在定义String类型的变量的时候,使用 "" 括起来表示字符串常量内容

举例 : String str = “写任意字符序列”;

注意: String类是引用数据类型

 

 

 

代码

复制代码
public static void main(String[] args) {
            // 1. 整数类型
            byte b = 56;
            // byte b1 = 270;
            short s = 1500;
            int i = 1600000;
            long lo = 123456789;

            // 注意事项: 如果定义出的整数, 使用long类型表示, 而数值超出了int范围之外
            // 那么需要在long类型数据后面添加一个 L/l, 表示这个long类型数据
            long lo1 = 12345678918L;// L大写
            long lo2 = 12345678918l;// l小写

            System.out.println(67);// 67就是int类型数据
        }
复制代码

 

 

(一) 基本数据类型转换

6.1基本数据类型转换概念

(1) 转换原因: Java是强类型语言,数据类型之间不能随意转换,但运算时数据类型不匹配,所以需要转换.

(2) 数据类型转换分类:

        a : 自动类型提升

        b : 强制类型转换

 

6.2自动类型提升

1. 范围小的数据类型可以直接转换为范围大的数据类型

2. 数据类型范围大小排序:

3. boolean类型不参与大小排序

4. 注意事项:

   int类型以下运算提升为int,int以上计算提升为较大类型

 

 

6.3强制类型转换

1. 大范围数据类型的变量/常量 赋值 给一个小范围数据类型的变量,需要进行强制转换.

2. 格式:

   目标数据类型 变量名 = (目标数据类型)原数据类型变量名或原常量值;

3. 注意事项:

(1) 强制类型转换可能会损失精度,得到错误的数据.

(2) 小数类型强制转换为整数类型时,直接舍去小数部分,只保留整数部分.

 

6.4常量优化机制

在编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在该数据类型取值范围内

例如:  byte b = 10 + 20 ; 编译器会在编译阶段 直接进行 10 + 20 的计算得出30的结果,并判断30是否在byte范围之内.

 

 

二. 运算符

(一) 运算符概述

1.运算符概念

        对常量或者变量进行操作的符号,通常用于数据的比较或运算

2.举例 

        (1) 10 + 20中, +是运算符中的算术运算符

        (2) 销售产品, 验证库存量 >= 购买数量, >= 是比较运算符

3.运算符分类

        算术运算符、赋值运算符、比较运算符、逻辑运算符、位移运算符、三元运算符

(二) 算术运算符

1. 算术运算符概念:对常量或变量进行算术运算的符号

2. 表达式概念:由常量,变量,运算符组成符合java语法的式子就称为表达式,表达式都有结果,结果就是表达式的值

举例

        double price = 22.9;

        int count = 2;

        double total = price * count;

 

        *:运算符, 并且是算术运算符, 表示乘法运算

        price * count:是表达式, 由于 * 是算术运算符, 因此这个表达式叫算术表达式

       

3. 算术运算符

   

 

4. + : 加法运算

        1)数值加法运算

          做两个数据的加法, 3 + 5 = 8;

 

        2)字符加法运算

字符类型进行"+"操作时,通过编码表将字符类型转换成计算机底层存储的数值来进行计算

        案例1:

        定义字符类型变量:char ch = 'A'; ch + 10 结果是什么类型数据,数值结果为多少?将计算结果再转换成char类型,对应的字符结果为多少?

 

        3)字符串加法(拼接)

         字符串类型与任意数据类型相加,都将其他类型转成字符串类型后拼接,结果仍然是字符串类型

案例1:

定义字符串 String s = "ujiuye"; 请得出以下表达式的运行结果

                 1) s + 6

                 2) 6 + s

                 3) s + 6 + 66

                 4) 6 + 66 + s

                 5) s + (6 + 66)

                 6) s + 'A'

                 7) s + "good"

 

案例2: 得出输出结果

                 int x = 5;

                 int y = 10;

                 System.out.println(x + y + "x" + "y"+ x + y);

 

5. - : 减法运算

        1)单独使用在某变量或常量数据之前,表示负数

        2)数据减法运算

 

6. * : 乘法运算

        1)数据乘法运算

 

7. / : 除法运算

        1)取结果的商

        2)特殊情况:

                 a:整数除法运算只能得到整数

                 b:运算中有浮点类型参与才能得到小数

 

8. % : 取余(取模)运算

1) 两数相除, 获取余数

 

        特殊情况:取余结果的符号只和%前面的操作数的符号有关     

 

2) 作用:获取余数;判断是否整除;判断奇偶;获取各个位数字等等,通常用作数据的筛选.

 

 

 

    案例 : 获取出345这个数据上个位,十位,百位上的数字

 

 

 

 

 

9. ++,--运算:

 

        (1) ++: 自增运算符,表示每次让变量值+1

 

        (2) -- : 自减运算符,表示每次让变量值-1

 

        注意:自增自减运算符, 只能使用在变量之上

 

 

 

(3) ++,--运算符的使用(以自增运算++举例说明,--使用完全一致)

 

            1.自增运算符既可以写在变量的前面,也可以写在变量的后面

 

            2.当a++和++a作为一个单独的语句存在时,没有任何区别,都是表示自增的动作,都可以把a自增1

 

            3.当a++和++a作为一个表达式一部分存在时,表示的数据值是有区别的:

 

              a++先获取a的值,然后再自增

 

              ++a先自增,然后再获取a的值

 

 

 

          案例1:定义变量 int a = 10;int b = 5;

 

                    分别计算a++和++a的结果; 以及--b和b--的结果;

 

 

 

          案例2:定义变量 int x = 20;int y = 15;

 

                    依次计算以下结果:

 

                         ++x + y;

 

                         y-- + x;

 

                         x++ + y;

 

(三) 赋值运算符

1) 基本算数运算符 : = 赋值功能

 

2) 扩展赋值运算符:  

+=  -=  *=  /=  %=

格式:

变量名称 += 表达式

变量名称 -= 表达式

变量名称 *= 表达式

变量名称 /= 表达式

变量名称 %= 表达式

注意:

1)等价于:

变量名称 = (左边变量数据类型)(变量名称 + (- * / %) 表达式);

2)不同:

扩展赋值运算符,包含了强制类型转换,转化为左边变量的类型.

 

案例 : short s = 5; s = s + 1;  代码是否有错?

      short s = 5; s += 1;   代码是否有错?

 

(四) 比较运算符

1. 用于比较是否相等和大小关系的符号,计算结果为boolean.

 

2. 使用格式:

表达式1 == 表达式2

表达式1 != 表达式2

表达式1 > 表达式2

表达式1 < 表达式2

表达式1 >= 表达式2

表达式1 <= 表达式2

 

案例: 定义一个变量i,利用比较运算符== != > < >= <=与常量5进行比较. 

 

(五) 逻辑运算符

1.用于连接逻辑数据的运算符,只能运算boolean类型的数据,运算结果为boolean.

2. 逻辑与: & (并且,同时,和, 要求多个条件同时成立的场景下使用)

格式:

表达式1 & 表达式2

基本用法:

true & true 结果为true

true & false 结果为false

false & true 结果为false

false & false 结果为false

总结: 全真为真, 一假则假,表达式1和表达式2要同时为true,结果才能为true.

 

案例: 定义一个字符, 判断这个字符是否是大写字母

 

 

 

3. 逻辑或: |

格式:

表达式1 |表达式2

基本用法:

true | true 结果为true

true | false 结果为true

false | true 结果为true

false | false 结果为false

总结: 一真为真, 全假为假,表达式1和表达式2要同时为false,结果才能为false.

 

案例: 判断一个字符是否是英文字母

 

 

4. 逻辑异或: ^

格式:

表达式1 ^ 表达式2

基本用法:

true ^ true 结果为false

true ^ false 结果为true

false ^ true 结果为true

false ^ false 结果为false

总结: 相同为假, 不同为真,表达式1和表达式2结果相同,表示false,结果不同,表示true.

 

 

 

5. 逻辑非: !

基本用法:

!true 结果为false

!false 结果为true

总结:

取表达式结果的相反结果.

 

 

 

6. 短路逻辑与: &&

格式:

表达式1 && 表达式2

基本用法:

true && true 结果为true

true && false 结果为false

false && true 结果为false

false && false 结果为false

总结:

用法同&,但是,与&不同的是,左边表达式1计算为假则不计算右边表达式2.整个结

果为假. 更加高效

 

案例1: 定义出一个整数变量i , 判断i是不是5到10之间的整数

    案例2:  int a = 10 ; a < 3 && (++a) > 7 ,判断变量a的值为多少

 

 

 

7. 短路逻辑或: ||

格式:

表达式1 || 表达式2

基本用法:

true || true 结果为true

true || false 结果为true

false || true 结果为true

false || false 结果为false

总结:

用法同|,但与|不同的是,左边表达式1计算为真则不计算右边表达式2.整个结

果为真. 更加高效

 

案例1 : int a = 10 ; a > 3 || (++a) > 7,判断变量a的值为多少

 

 

 

posted @   晴天般的微  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示

目录导航