Nrich's blog Nrich's blog
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)

Nrich

小聪明
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)
  • Java

    • 黑马Java入门基础-学习笔记

      • Java 基础语法
        • 0. 类型转换问题
          • 类型转换(理解)
          • 自动类型转换
          • 表达式的自动类型转换
          • 强制类型转换
        • 1. 运算符
          • 1.1 算术运算符(理解)
          • 字符的“+”操作
          • 1.2 逻辑运算符(应用)
          • 短路逻辑运算符
          • 1.3 三元运算符(理解)
      • 数组
      • 方法
      • 面向对象基础
      • 常用API(String、ArrayList)
      • 面向对象进阶1(static、单例、代码块、继承)
      • 面向对象进阶2(包、权限修饰符、抽象类、接口)
      • 面向对象进阶3(多态、内部类、常用API)
      • 面向对象进阶4(常用日期API、正则、Arrays类、Lambda)
      • 面向对象进阶5(集合体系)
      • 面向对象进阶6(集合体系之Map)
      • 面向对象进阶-补充(可变参数)
    • 面向对象
    • 常用API
    • 并发、并行、异步、同步(暂存)
    • 《Spring Boot 进阶-郑天民》

  • GoLang

  • 开发
  • Java
  • 黑马Java入门基础-学习笔记
Nrich
2023-01-24
目录

Java 基础语法

# Java基础语法

# 0. 类型转换问题

# 类型转换(理解)

在Java中,会存在不同类型的数据需要一起参与运算,所以这些数据类型之间是需要相互转换的,分为两种情况:自动类型转换和强制类型转换。

# 自动类型转换

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

image-20230124112450097

把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如:

double num = 10; // 将int类型的10直接赋值给double类型
System.out.println(num); // 输出10.0

byte a = 12 ;
int b = a;
System.out.println(b); // 12

1
2
3
4
5
6
7

# 表达式的自动类型转换

在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。

image-20230124112548753

注意事项:

  • 表达式的最终结果类型由表达式中的最高类型决定。

  • 在表达式中,byte、short、char 是直接转换成int类型参与运算的。

byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2; 
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
1
2
3
4
5
6
7
8
  • boolean类型不能与其他基本数据类型相互转换。

# 强制类型转换

类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错,把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量必须进行强制类型转换。

强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;

注意事项:

  • 强制类型转换可能造成数据(丢失)溢出;
  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。

# 1. 运算符

# 1.1 算术运算符(理解)

# 字符的“+”操作

char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:

  • 'a' -- 97 a-z是连续的,所以'b'对应的数值是98,'c'是99,依次递加

  • 'A' -- 65 A-Z是连续的,所以'B'对应的数值是66,'C'是67,依次递加

  • '0' -- 48 0-9是连续的,所以'1'对应的数值是49,'2'是50,依次递加

// 可以通过使用字符与整数做算术运算,得出字符对应的数值是多少
char ch1 = 'a';
System.out.println(ch1 + 1); // 输出98,97 + 1 = 98

char ch2 = 'A';
System.out.println(ch2 + 1); // 输出66,65 + 1 = 66

char ch3 = '0';
System.out.println(ch3 + 1); // 输出49,48 + 1 = 49
1
2
3
4
5
6
7
8
9

算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。

tips:正是由于上述原因,所以在程序开发中我们很少使用byte或者short类型定义整数。也很少会使用char类型定义字符,而使用字符串类型,更不会使用char类型做算术运算。

提示

两个整数相除想得到小数结果:除数或被除数 x0.1

public class OperatorDemo1 {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        System.out.println(a / b); // 3.3333 ==> 3
        System,out.println(a * 1. / b); // 3.3333
        System.out.println(3 / 2);
        System.out.println(3 * 1.0 / 2); // 1.5
        System.out.println(3 / 2 * 1.0); // 1.0
        System.out.printin(a % b); // 1
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 1.2 逻辑运算符(应用)

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。

# 短路逻辑运算符

符号 作用 说明
&& 短路与 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果

在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。

  • 逻辑与&,无论左边真假,右边都要执行。

  • 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。

  • 逻辑或|,无论左边真假,右边都要执行。

  • 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。

# 1.3 三元运算符(理解)

三元运算符语法格式:

关系表达式 ? 表达式1 : 表达式2;
1
编辑 (opens new window)
上次更新: 2023/01/24, 08:14:58
数组

数组→

最近更新
01
YAML、Pod、Job、CronJob、ConfigMap、Secret
06-06
02
Kubernetes 的安装与基本架构
06-04
03
初识容器
05-30
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Nrich | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式