• Java 基础语法


    Java 基础语法




    类型转换

    自动类型转换

    什么是自动类型转换,为什么要学习自动类型转换?

    • 类型范围小的变量,可以直接赋值类型范围大的变量。

    自动类型转换的底层原理
    在这里插入图片描述
    自动类型转换的其他形式
    在这里插入图片描述

    1. 为什么要进行类型转换?
    • 存在不同类型的变量赋值给其他类型的变量。
    1. 自动类型转换是什么样子的?
    • 类型范围小的变量,可以直接赋值类型范围大的变量。

    表达式的自动类型转换

    表达式的自动类型转换

    • 在表达式中,小范围类型的变量会自动转换成较大范围的类型再运算。
      在这里插入图片描述
      注意事项:
    • 表达式的最终结果类型由表达式种的最高类型决定
    • 在表达式中,byte、short、char直接转换成 int类型参与运算的。
    1. 表达式的自动类型转换是什么样的?
    • 小范围的类型会自动转换成大范围的类型运算。
    1. 表达式的最终结果类型是由谁决定的?
    • 最终类型由表达式中的最高类型决定。
    1. 表达式中有哪些类型转换是需要注意的?
    • byte short char 是直接转换成 int 类型参与运算的。

    强制类型转换

    场景
    在这里插入图片描述
    问题

    • 类型范围大的数据或者变量,不能直接赋值类型范围小的变量,会报错。

    强制类型转换

    • 可以强行将类型范围打的变量、数据赋值给类型范围小的变量。
      在这里插入图片描述
      强制类型转换底层原理
      在这里插入图片描述
      注意事项
    • 强制类型转换可能造成数据(丢失)溢出;
    • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
    1. 什么是强制类型转换?
    • 可以强行将类型范围大的变量、数据复制给类型范围小的变量。
    • 数据类型 变量 = (数据类型)变量、数据
    1. 强制类型转换有哪些需要注意的?
    • 可能出现数据丢失。
    • 小数强制转换成整数是直接截断小数保留整数。

    运算符

    基本算数运算符

    运算符

    • 运算符:对字面量或者变量进行操作的符号

    算数运算符
    在这里插入图片描述

    1. 算数运算符有哪些?
    • +、-、*、/、%
    1. ==/==需要注意什么,为什么?
    • 如果两个整数做除法,其结果一定是整数,因为最高类型是整数。

    案例:数值拆分
    在这里插入图片描述

    + 符号做连接符

    “+” 做连接符

    • “+” 符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。

    独门秘籍

    • 能算则算,不能算就在一起。(计算机很聪明)
    // 目标:+ 符号做连接符的识别
    int a = 5;
    System.out.println("abc" + 'a');    // abca
    System.out.println("abc" + a);  // abc5
    System.out.println(5 + a);  // 10
    System.out.println("abc" + 5 + 'a');    // abc5a
    System.out.println(15 + "abc" + 15);    // 15abc15
    System.out.println(a + 'a');    // 102,'a'的底层是二进制存储,是97,所以结果是102
    System.out.println(a + "" + 'a');   // 5a
    System.out.println(a + 'a' + " itheima ");  // 102 itheima
    System.out.println("itheima" + a + 'a');    // itheima5a
    System.out.println("itheima" + (a + 'a'));  // itheima102
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. + 除了做基本数学运算,还有哪些功能?
    • 与字符串做 + 运算时会被当成连接符,其结果还是字符串。
    • 能算则算,不能算就在一起。

    自增自减运算符

    自增自减运算符
    在这里插入图片描述
    注意:

    • ++ 和 – 既可以放在变量的后边,也可以放在变量的前边。
    • ++、–只能操作变量,不能操作字面量。

    自增自减的使用注意事项

    • ++、–如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别
      • 放在变量的前面,先对变量进行 +1、-1,再拿变量的值进行运算。
        在这里插入图片描述
      • 放在变量的后面,先拿变量的值进行运算,再对变量的值进行 +1、-1
        在这里插入图片描述
    1. 自增、自减运算符是什么,有什么作用?
    • ++、–。对当前变量 +1、-1
    1. 自增、自减运算符在变量前后有区别吗?
    • 如果单独使用放前后是没有区别的。
    • 非单独使用:在变量前,先进行变量自增 / 自减,再使用变量。
    • 非单独使用:在变量后,先使用变量,再进行变量自增 / 自减。

    案例:自增、自减拓展案例(有些面试题会出现)

    int c = 10;
    int d = 5;
    int rs3 = c++ + ++c - --d - ++d + 1 + c--;
    // c 10 11 12 11
    // d 5 4 5
    // rs3 = 10 + 12 - 4 - 5 + 1 + 12 = 26
    System.out.println(c);	// 11
    System.out.println(d);	// 5
    System.out.println(rs3);	// 26
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    赋值运算符

    基本赋值运算符

    • 就是 “=”
    int a = 10; // 先看 “=” 右边,把数据10赋值给左边的变量 a 存储。
    
    • 1

    扩展赋值运算符
    在这里插入图片描述
    注意:扩展的赋值运算符隐含了强制的类型转换。

    1. 赋值运算符有哪些?
    • =、+=、-=、*=、/=、%=
    1. 作用是什么?
    • 基本作用是赋值。
    • += 还可以实现数据的累加,把别人的数据加给自己。

    关系运算符

    关系运算符

    • 是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
      在这里插入图片描述
      注意:在做相等判断时,千万不要把 == 误写成 =

    逻辑运算符

    逻辑运算符概述

    • 可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。
      在这里插入图片描述在这里插入图片描述
      短路逻辑运算符
      在这里插入图片描述
      注意:逻辑与 “&”、逻辑或 “|”:无论左边是 false 还是 true,右边都要执行

    示例:

    int a = 10;
    int b = 20;
    // System.out.println(a > 100 & ++b > 10); // false
    // System.out.println(b);  // b = 21
    System.out.println(a > 100 && ++b > 10);    //false
    System.out.println(b);  // b = 20
    
    int i = 10;
    int j = 20;
    // System.out.println(i > 2 | ++j > 10);  // true
    // System.out.println(j);  // j = 21
    System.out.println(i > 2 || ++j > 10);  // true
    System.out.println(j);  // 20
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 逻辑运算符有哪些,有什么特点?
    • 逻辑与 “&”:有一个为 false、结果是 false
    • 短路与 &&:一个为 false、结果是 false。前一个为 false,后一个条件不执行了
    • 逻辑或 “!”:有一个为 true、结果是 true
    • 短路或 “!!”:一个为 true、结果是 true。前一个为 true,后一个条件不执行了
    • 逻辑非 “!”:!false = true、!true = false
    • 逻辑异或 “^”:相同是 false、不同是 true
    • 注意:实际开发中、常用的逻辑运算符还是:&&、||、!

    三元运算符

    三元运算符介绍

    • 格式:条件表达式 ? 值1 : 值2;
    • 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2
      在这里插入图片描述

    案例:求三个整数的最大值
    需求:定义三个整数,找出最大值并打印在控制台。
    分析:

    1. 用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
      • num1 > num2 ? num1 : num2;
    2. 用三元运算符,让临时最大值,和第三个整数,进行比较,并记录结果。
      • tem > num3 ? tem : num3;
    3. 输出结果
    int i = 10;
    int j = 30;
    int k = 50;
    // 1. 找出2个整数的较大值
    int temp = i > j ? i : j;
    // 2. 拿临时变量与第三个变量的值继续比较
    int rsMax1 = temp > k ? temp : k;
    System.out.println(rsMax1);
    
    System.out.println("---------------拓展知识----------------");
    int rsMax2 = i > j ? (i > k ? i : k) : (j > k ? j : k);
    System.out.println(rsMax2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    运算符优先级

    运算符优先级

    • 在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于 “+、-”。
      在这里插入图片描述
      运算符优先级
    // 目标:看看 Java 是否存在优先级,大家以后需要注意优先级问题
    System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true
    System.out.println((10 > 3 || 10 > 3) && 10 < 3);   // false
    
    • 1
    • 2
    • 3

    案例知识:键盘录入技术

    需求:

    • 请完成 Java 程序与用户的交互,比如录入用户输入的名称、年龄,怎么办?
      在这里插入图片描述

    API(Application Programming Interface,应用程序编程接口)

    • Java 写好的程序(功能代码),咱么可以直接调用。
    • Oracle 也为 Java 写好的程序提供了相应的 API 文档(技术使用说明书)

    下载 API 文档
    http://www.oracle.com/technetwork/java/javase/downloads/index.html

    键盘录入功能实现的三个步骤:

    1. 导包:告诉程序去 JDK 的哪个包中找扫描器技术
    2. 谢依阿华功能代码代表得到键盘扫描器对象
    3. 等待接受用户输入数据
    // 1. 导包操作(并不需要自己写,以后通过工具进行导入更方便)
    import java.util.Scanner;
    public class ScannerDemo {
    	public static void main(String[] args) {
    	// 目标:学会使用键盘录入技术
    	// 2. 得到一个键盘扫描器对象
    	Scanner sc = new Scanner(System.in);
    	
    	// 3. 调用 sc 对象的功能等待接受用户输入的数据
    	// 这个代码会等待用户输入数据,指导用户输入完数据并按了回车键就会把数据拿到。
    	System.out.println("请输入您的年龄:");
    	int age = sc.nextInt();
    	System.out.println("年龄是:" + age);
    	
    	System.out.println("请输入您的名称:");
    	String name = sc.next();
    	System.out.println("欢迎:" + name);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    注意:

    • System、String 在 JDK 中的 Java.lang 包下
    • lang 包不需要我们导包,是默认的包
    1. API 是什么?
    • Application Programming Interface,应用程序编程接口。
    • Java 写好的程序,咱们可以直接调用。
    1. 键盘录入的开发步骤
    • 导包:import java.util.Scanner;
    • 抄写代码得到扫描器对象:Scanner sc = new Scanner(System.in)
    • 抄写代码等待接收用户输入的数据:sc.nextInt()、sc.next()
  • 相关阅读:
    ASEMI肖特基二极管SBT10100VCT参数,SBT10100VCT应用
    Maven工程Missing artifact 解决方法
    [附源码]java毕业设计四六级考试管理系统
    学习探索-使用伪元素清除浮动元素造成的高度坍塌
    Linux安装使用Minio
    JavaScript数组常用的方法整理
    最新时间注入攻击和代码分析技术
    kafka的安装、部署及应用
    【开发心得】微信网页应用授权登录
    两台交换机端口不同的强制双工速率配置的端口协商情况
  • 原文地址:https://blog.csdn.net/weixin_51524504/article/details/126603070