02.变量_数据类型转换_运算符

第一章.常量

java 复制代码
1.概述:在代码运行的过程中,值不会发生改变的数据,我们跟这种常量叫做"字面值"
2.分类:
  a.整数常量:所有整数
  b.小数常量:所有带小数点的  -> 2.5   2.0
  c.字符常量:带单引号的 -> 单引号中必须有且只能有一个内容  -> 'a'   '啊'  '11'(不是)  ' '
  d.字符串常量:带双引号的 -> 双引号中有没有内容都可以   ""
  e.布尔常量:true false
  f.空常量:null  代表数据不存在,不能直接使用,null是为引用类型初始化的
java 复制代码
public class Demo01ChangLiang {
    public static void main(String[] args) {
        //整数常量
        System.out.println(10);
        //小数常量
        System.out.println(10.5);
        //字符常量
        System.out.println('a');
        //字符串常量
        System.out.println("hello world");
        //布尔常量
        System.out.println(true);
        System.out.println(false);
        //空常量
        //System.out.println(null);
    }
}
java 复制代码
public class Demo02ChangLiang {
    public static void main(String[] args) {
        System.out.println(10+3);//13
        System.out.println(10-3);//7
        System.out.println(10*3);//30

        /*
           /前后如果都是整数,结果只取整数部分
           /前后只要有一个是小数,结果就是正常小数
         */
        System.out.println(10/3);//3
        System.out.println(10/3.0);//3.3333333333333335
    }
}

第二章.变量

数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -128 至 127 定义byte变量时超出范围,废了
短整型 short 2个字节 -32768 至 32767
整型 int(默认) 4个字节 -231 至 231-1 正负21个亿 -2147483648------2147483647
长整型 long 8个字节 -263 至 263-1 19位数字
单精度浮点数 float 4个字节 1.4013E-45 至 3.4028E+38
双精度浮点数 double(默认) 8个字节 4.9E-324 至 1.7977E+308
字符型 char 2个字节 0 至 216-1
布尔类型 boolean 1个字节 true,false(可以做判断条件使用)

实际开发中,常用:

整数: int long

小数: float double

布尔: true false

1.变量的介绍以及使用

java 复制代码
1.在代码的运行过程中,值会随着不同的情况发生改变的数据
  比如double price = 2.5   -> price = price*0.8
2.作用:临时存储一个数据
  什么时候想操作这个数据了,直接用变量名即可
3.定义格式:
  数据类型 变量名 = 值   -> 将等号右边的值赋值给等号左边的变量
                         有等号必须先看等号右边的,哪怕等号右边有运算,我们都要先算出最终结果,再将结果赋值给等号左边的变量
      
  数据类型 变量名1 = 值,变量名2 = 值...   -> 一次性定义多个相同类型的变量
      
4.数据类型:
  java中的数据类型:
    基本类型:4类8种
          整型:  byte short int long
          浮点型: float double 
          字符型: char
          布尔型: boolean
    引用类型:
          类 数组 接口 枚举 注解 Record
              
5.注意:
  a.String不属于基本类型,属于引用类型,但是定义格式和基本类型一样
  b.整数默认类型int;小数默认类型double
      
6.从取值范围给基本类型从小到大排序: byte,short,char  -> int -> long -> float -> double      
java 复制代码
public class Demo01Var {
    public static void main(String[] args) {
        //整数
        int num1 = 10;
        num1 = 20;
        System.out.println(num1);
        //long型 -> 定义long型的变量,值后面加L或者l
        long num2 = 10L;

        //float 型 -> 定义float型的变量,值后面加F或者f
        float num3 = 10.5F;
        System.out.println(num3);
        //double型 -> 定义double型的变量
        double num4 = 10.5;
        System.out.println(num4);

        //char
        char num5 = 'a';
        System.out.println(num5);

        //boolean
        boolean num6 = true;
        boolean num7 = false;
        /*
          将num7代表的false赋值给了变量num6
          所以num6变成了false
         */
        num6 = num7;
        System.out.println(num6);

        //字符串->引用类型->字符串类型用String表示
        String s = "abc";
        System.out.println(s);
    }
}
java 复制代码
public class Demo02Var {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;

        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        /*
          /前后都是整数, 结果是整数
          /前后如果有一个为小数, 结果是小数
         */
        System.out.println(a / b);

        System.out.println("==================");

        /*
          从复用性上来看,将结果单独赋值给一个变量比较好
          比如:因为后面啥时候想使用a+b的结果,直接用add就行了
          没必要重新算一遍了
         */
        int add = a+b;
        System.out.println(add);
        int sub = a-b;
        System.out.println(sub);
        int mul = a*b;
        System.out.println(mul);
        int div = a/b;
        System.out.println(div);
    }
}
java 复制代码
public class Demo03Var {
    public static void main(String[] args) {
       /*
          \:代表的是转义字符

          a.可以将具有特殊含义的字符转成普通字符
          b.可以将普通字符转成具有特殊含义的字符
        */

        /*
           n:本身普通字符
           \n:换行符
         */
        System.out.println("hello\nworld");

        /*
           t:本身是普通字符
           \t:制表符,相当于tab键
         */
        System.out.println("hello\tworld");

        /*
           \:本身具有特殊含义
           \\:前面的\将后面的\转义了,此时后面的\就变成普通的字符了
         */
        //用字符串表示一个路径
        String path = "F:\\idea\\io";
        System.out.println(path);
    }
}
java 复制代码
public class Demo04Var {
    public static void main(String[] args) {
       var i = 10;
       System.out.println(i);
    }
}

2.变量使用时的注意事项

java 复制代码
1.变量不初始化(第一次赋值)不能直接使用
2.在同一个作用域(一对大括号就是一个作用域)中,不能定义重名的变量 
3.不用的作用域之间不要随意互相访问
  a.在小作用域中能使用大作用域中的内容
  b.在大作用域中不能直接使用小作用域中的内容
java 复制代码
public class Demo05Var {
    public static void main(String[] args) {
        int i = 10;
        System.out.println(i);

        //int i = 20;  只要变量名前面确定类型,就是定义
        i = 20;//二次赋值,不是重新定义
        System.out.println(i);

        {
            int j = 100;
            System.out.println(j);
            System.out.println(i);
        }
        //System.out.println(j);
    }
}

第三章.标识符

java 复制代码
1.概述:就是给类,方法,变量取的名字
2.硬性规定:
     a.不能以数字开头,不能是关键字
     b.名字中可以包含数字,_,$,字母,但是不要数字开头
  软性建议
     a.给类取名字:大驼峰式(每个单词首字母大写)
     b.给方法,变量取名字:小驼峰(从第二个单词开始首字母大写)

第四章.数据类型转换

java 复制代码
1.什么时候发生:
  a.等号左右两边类型不一致
  b.大类型和小类型做运算
2.什么叫大类型,什么叫小类型
  两个类型相遇了,取值范围大的就叫做大类型,取值范围小的就叫做小类型 -> 相对的
3.分类:
  自动类型转换
  强制类型转换(强转)

按照取值范围从小到大排列: byte short char -> int -> long -> float -> double

1.自动类型转换->小转大

java 复制代码
1.情况1:  取值范围大的类型 变量名 = 取值范围小的类型  -> 小类型自动提升为大类型
2.情况2:  取值范围大的类型和取值范围小的类型数据做运算  -> 小类型自动提升为大类型
java 复制代码
public class Demo01DataType {
    public static void main(String[] args) {
        /*
          等号右边的100是整数,整数默认类型int
          等号左边num1是long型
          将int型的数据给long型的变量,相当于将取值范围小的类型给取值范围大的变量
          发生了自动类型转换
         */
        //long num1 = 100;
        long num1 = 100L;
        System.out.println(num1);

        /*
         等号右边的10是整数,整数默认类型int
         等号左边num2是double型
         将int型数据给double型变量,相当于将取值范围小的类型给取值范围大的变量
         发生了自动类型转换
         */
        double num2 = 10;
        System.out.println(num2);


        double a = 10.0;
        int b = 10;

        /*
          大类型和小类型做运算了
          小类型会自动提升为大类型
          double+int  -> double+double
         */
        double sum = a+b;
        System.out.println(sum);

    }
}

2.强制类型转换_大转小

java 复制代码
1.情况1:取值范围小的类型 变量名 = 取值范围大的类型   -> 报错
2.怎么强转:
  取值范围小的类型 变量名 = (取值范围小的类型)取值范围大的类型
java 复制代码
public class Demo02DataType {
    public static void main(String[] args) {
        /*
          等号右边是小数,小数默认类型double
          等号左边i是int型
          将double型的数据赋值给int型的数据,相当于将取值范围大的类型赋值给取值范围小的类型
          需要强转
         */
         //int i = 2.5;
         int i = (int) 2.5;
         System.out.println(i);

        /*
           等号右边是小数,小数默认类型为double
           等号左边j是float型
           将double型数据赋值给float型数据,相当于将取值范围大的类型赋值给取值范围小的类型
           需要强转
         */
         //float j = 2.5;
         float j = (float)2.5;
         System.out.println(j);
    }
}

3.强转的注意事项

java 复制代码
1.不要随意写成强转形式,除非没有办法,否则会出现精度损失,数据溢出现象
2.byte和short如果等号右边是字面值,不超范围,不需要我们自己手动强转,jvm帮我们自动强转了
  byte和short的变量如果等号右边有变量参与运算,byte和short会自动提升为int型,如果最终结果重新赋值给byte或者short的变量,需要我们自己手动强转  
3.char类型如果做运算,会自动提升为int,会去ASCII码表中找这个字符对应的int值,如果ASCII码表中没有,去自动去unicode码表(万国码)中查找字符对应的int值     
java 复制代码
public class Demo03DataType {
    public static void main(String[] args) {
        //精度损失
        int a = (int) 2.9;
        System.out.println(a);

        /*
          数据溢出

          int用32位二进制表示
          100亿:36位二进制
         */
        int b = (int)10000000000L;
        System.out.println(b);//1410065408

        System.out.println("======================");

        byte num1 = 100;
        System.out.println(num1);

        /*
           byte = byte+int  -> int+int
         */
        byte result = (byte)(num1+1);
        System.out.println(result);

        System.out.println("===================");
        char c = 'a';
        System.out.println(c+0);
        System.out.println('中'+0);
    }
}

第五章.运算符

1.算数运算符

符号 说明
+ 加法
- 减法
* 乘法
/ 除法
%(模) 取余
java 复制代码
public class Demo01SuanShu {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        int add = a+b;
        System.out.println(add);
        int sub = a-b;
        System.out.println(sub);
        int mul = a*b;
        System.out.println(mul);
        int div = a/b;
        System.out.println(div);
        int mod = a%b;
        System.out.println(mod);
    }
}
java 复制代码
+:
  加法
  字符拼接-> 任意类型遇到字符串都会变成字符串
java 复制代码
public class Demo02SuanShu {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;

        System.out.println(""+a+b);
        System.out.println(a+b+"");

        int add = a+b;
        System.out.println("a与b的和为:"+add);
        System.out.println("add = " + add);

    }
}

2.自增自减运算符(也算算数运算符的一种)

java 复制代码
1.格式:
  变量++:后自加
  ++变量:前自加
  变量--:后自减
  --变量:前自减
2.++ -- 每次只+ - 1
3.分类:
 单独使用:++ -- 自己单独成为一句,没有和别的语句掺和使用
        符号在前在后都是先运算
 混合使用:++ -- 和其他语句混合使用
        符号在前:先运算,再使用运算后的值
        符号在后:先使用原值,完事之后再加减
java 复制代码
public class Demo03SuanShu {
    public static void main(String[] args) {
        //单独使用
        int i = 10;
        i++;
        System.out.println(i);

        //混合使用
        int j = 10;
        //int result = ++j;
        int result = j++;
        System.out.println(result);
        System.out.println(j);

        System.out.println("==================");
        int c = 10;
        c = c++;
        System.out.println(c);
        System.out.println(c);
    }
}

在实际开发过程中,我们用的都是单独使用

3.赋值运算符

java 复制代码
1.基本赋值运算符
  =
    
2.复合赋值运算符
  +=
     int i = 10;
     i+=1;   -> i = i+1
  -=
  *=
  /=
  %=  
         
3.注意:
  针对于byte,short参与复合赋值运算符运算,jvm会自动转型
java 复制代码
public class Demo04FuZhi {
    public static void main(String[] args) {
        int i = 10;
        i+=10;//i = i+10
        System.out.println(i);

        i/=3;
        System.out.println(i);

        i%=3;
        System.out.println(i);

        System.out.println("=================");
        byte b = 10;
        b+=1;//b = b+1
        //b = b+1;
        System.out.println(b);
    }
}

4.关系运算符(比较运算符)

java 复制代码
1.结果:boolean类型的结果 -> true -> false
2.作用:做判断条件使用    
符号 说明
== 判断符号前后结果是否相等,如果相等为true;否则为false
> 判断符号前的数据是否大于符号后的数据,如果大于为true;否则为false
< 判断符号前的数据是否小于符号后的数据,如果小于为true;否则为false
>= 判断符号前的数据是否大于或者等于符号后的数据,如果大于或者等于为true;否则为false
<= 判断符号前的数据是否小于或者等于符号后的数据,如果小于或者等于为true;否则为false
!= 判断符号前后结果是否不相等,如果不相等为true;否则为false
java 复制代码
public class Demo05Compare {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        boolean result1 = a==b;
        System.out.println(result1);// false

        System.out.println(a>b);// false
        System.out.println(a<b);// true
        System.out.println(a>=c);// true
        System.out.println(a<=c);// true
        System.out.println(a!=c);// false
    }
}

5.逻辑运算符

java 复制代码
1.结果:boolean型
2.作用:连接多个boolean条件的
符号 说明
&&(与) 有假则假,符号前后结果有一个为false,结果就是false;符号前后都是true,结果才是true
||(或) 有真则真,符号前后结果有一个为true,结果就是true;符号前后都是false,结果才是false
!(非,取反) 不是true,就是false;不是false,就是true
java 复制代码
public class Demo06LuoJi {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;

        boolean result = (a > b) && (a == c);
        System.out.println(result);

        boolean result01 = (a > b) || (a == c);
        System.out.println(result01);

        boolean result02 = !(a > b);
        System.out.println(result02);
    }
}
java 复制代码
&:有假则假,如果符号前面为false,还会继续判断符号后面的
&&:有假则假,如果符号前面为false.符号后面就不判断了 -> 短路效果

|:有真则真,如果符号前面为true,还会继续判断符号后面的 
||:有真则真,如果符号前面为true,符号后面就不判断了 -> 短路效果 
java 复制代码
public class Demo07LuoJi {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //boolean result = ++a > 100 & ++b > 100;
        boolean result = ++a > 100 && ++b > 100;
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
    }
}
java 复制代码
int score = 60
判断score的值是否在0-100之间
    
数学写法:0<=score<=100  
java写法:score>=0 && score<=100

6.三元运算符

java 复制代码
1.格式:
  boolean表达式?表达式1:表达式2
2.执行流程:
  先走boolean表达式,如果是true,就走?后面的表达式1,否则就走:后面的表达式2
java 复制代码
public class Demo08SanYuan {
    public static void main(String[] args) {
        int score = 60;
        String result = score>=60?"及格":"不及格";
        System.out.println(result);
    }
}
java 复制代码
需求:有两个和尚,分别身高为150  , 170 获取两个和尚的最高身高
java 复制代码
public class Demo09SanYuan {
    public static void main(String[] args) {
        int heShang1 = 150;
        int heShang2 = 170;
        int result = heShang1 > heShang2 ? heShang1 : heShang2;
        System.out.println(result);
    }
}
java 复制代码
需求:有三个和尚,分别身高为150 210 170 获取三个和尚的最高身高
java 复制代码
public class Demo10SanYuan {
    public static void main(String[] args) {
        int heShang1 = 150;
        int heShang2 = 210;
        int heShang3 = 170;
        int temp = heShang1 > heShang2 ? heShang1 : heShang2;
        int result = temp > heShang3 ? temp : heShang3;
        System.out.println(result);
    }
}
相关推荐
AI科技星1 小时前
基于全域数学0-1-∞体系的1.237宇宙临界常数及时空超导统一理论
c语言·开发语言·线性代数·量子计算·agi
Arman_1 小时前
Rust 接入阿里云 OSS 断点上传下载:rusty-cat 直连模式实战
开发语言·阿里云·rust·oss断点续传
微风欲寻竹影1 小时前
队列(Queue)-详解
java·数据结构
十五年专注C++开发1 小时前
QtFluentWidgets: 一套基于C++ Qt Widgets的Fluent Design风格控件库
开发语言·c++·qt·qtfluentwidgets
想不明白的过度思考者1 小时前
Unity全局事件中心与新版输入架构实现练习——上帝模式与英雄模式的输入系统映射切换
java·unity·架构
江屿风1 小时前
【c++笔记】类和对象流食般投喂(下)
开发语言·c++·笔记
小新同学^O^1 小时前
简单学习Spring原理
java·学习·spring
戴西软件2 小时前
戴西软件入选2026年安徽省制造业数智化转型服务商名单
java·大数据·服务器·前端·人工智能
爱棋笑谦2 小时前
springboot—数据源相关配置
java·spring boot·spring