java基础入门-01-【基础、运算符、判断和循环、数组、方法】

Java基础入门-01-【基础、运算符、判断和循环、数组、方法】

  • Java入门到起飞(含斯坦福大学练习题+力扣算法题+大厂java面试题)
  • 1、Java入门
    • 常用CMD命令
    • Java基础学习
    • JDK的安装目录介绍
    • HelloWorld.java小案例
    • 配置PATH环境变量
    • Notepad软件的安装和使用
    • Java开发应用
    • Java的主要特性
    • 语言的编译方式
  • 2、Java基础概念
    • 2.1. 注释
      • 使用的技巧
      • 注意点
    • 2.2. 关键字
      • 2.2.1 概念
      • 2.2.2 第一个关键字class
    • 2.3. 字面量
      • 区分技巧
      • 制表符 \t
    • 2.4. 变量
      • 2.4.1 什么是变量?
      • 2.4.2 变量的定义格式
        • 2.4.2.1 格式详解
        • 2.4.2.2 常用的数据类型
        • 2.4.2.3 变量的注意事项
      • 2.4.3 变量的练习
      • 2.4.4 进制
      • 2.4.5 进制之间的转换
      • 2.4.6 ASCII码表
    • 2.5. 数据类型
      • 2.5.1 Java语言数据类型的分类
      • 2.5.2 基本数据类型的四类八种
        • 说明
        • 需要记忆以下几点
      • 2.5.3 定义8种基本数据类型变量
        • **注意点**
      • 2.5.4 练习1
      • 2.5.5 练习2
      • 2.5.6 练习3
    • 2.6. 标识符
      • 2.6.1 硬性要求:
      • 2.6.2 软件建议:
      • 2.6.2.1 小驼峰命名法
      • 2.6.2.2 大驼峰命名法
      • 阿里巴巴命名规范细节:
    • 2.7. 键盘录入
  • 3、运算符
    • 3.1.运算符和表达式
        • 运算符:
        • 表达式:
    • 3.2.算术运算符
        • 练习:数值拆分
    • 3.3.隐式转换
        • 概念:
        • 简单记忆:
        • 两种提升规则:
        • 取值范围从小到大的关系:
    • 3.4.隐式转换的练习
        • 案例一:
        • 案例二:
        • 案例三:
        • 案例四:
        • 案例五:
        • 案例六:
    • 3.5.强制转换
        • 概念:
        • 书写格式:
    • 3.6.字符串的+操作
        • 核心技巧:
    • 3.7.字符串相加的练习:
    • 3.8.字符的+操作
        • 规则:
        • 案例:
    • 3.9.算术运算符的总结
    • 3.10.自增自减运算符
        • 分类:
        • 使用方式:
        • 注意点:
        • 案例:
        • 自增自减运算符的应用场景:
    • 3.11.赋值运算符
    • 3.12.扩展赋值运算符
        • 分类:
        • 运算规则:
        • 案例:
        • 注意点:
    • 3.13.关系运算符
      • 分类:
        • 注意点:
    • 3.14.逻辑运算符
        • & 和 | 的使用:
        • 使用场景:
        • ^(异或)的使用:
        • !(取反)的使用:
    • 3.15.短路逻辑运算符
        • &&:
        • ||:
        • 逻辑核心:
        • 举例:
        • 总结:
        • 建议:
    • 3.16.三元运算符
        • 格式:
        • 计算规则:
        • 注意点:
        • 案例:
    • 3.17.练习1-两只老虎
    • 3.18.练习2-求三个数的最大值
    • 3.19.运算符的优先级
    • 3.20.原码、反码、补码
  • 4、判断和循环
    • 第一章 流程控制语句
      • 1.1 流程控制语句分类
      • 1.2 顺序结构
    • 第二章 判断语句:if语句
      • 2.1 if语句格式1
        • 练习1:老丈人选女婿
        • 练习2:考试奖励
        • 第一种格式的细节:
      • 2.2 if语句格式2
        • 练习1:吃饭
        • 练习2:影院选座
      • 2.3 if语句格式3
        • 练习1:考试奖励
    • 第三章 switch语句
      • 3.1 格式
      • 3.2 **执行流程:**
        • 练习:运动计划
      • 3.3 switch的扩展知识:
        • 练习:休息日和工作日
    • 第四章 循环结构
      • 4.1 for循环结构(掌握)
        • 4.1.1 for循环格式:
          • for循环练习-输出数据
          • for循环练习-求和
          • for循环练习-求偶数和
          • for循环练习-统计次数
      • 4.2 while循环
        • 4.2.1 格式:
          • 练习1:打印5次HelloWorld
          • 练习2:珠穆朗玛峰
      • 4.3 do...while循环
      • 4.4 三种格式的区别:
  • 5、循环高级和数组
    • 5.1.1.无限循环
      • 概念:
      • for格式:
      • while格式:
      • do...while格式:
      • 无限循环的注意事项:
    • 5.1.2.条件控制语句
      • break:
      • continue:
    • 5.1.3. Random
      • 使用步骤:
    • 5.1.4. 逢七过
    • 5.1.5. 平方根
    • 5.1.6.判断是否为质数
    • 5.1.7. 猜数字小游戏
    • 5.2.1.数组
      • 概念:
    • 5.2.2.数组的定义
      • 格式一:
      • 格式二:
      • 详解:
      • 注意点:
    • 5.2.3.数组的静态初始化
      • 完整格式:
      • 格式详解:
      • 注意点:
      • 简化格式:
      • 练习1:
      • 练习2:
      • 练习3:
    • 5.2.4.地址值
    • 5.2.5.数组元素访问
      • 格式:
      • 作用:
      • 代码示例:
    • 5.2.6.索引
      • 索引的特点:
    • 5.2.7.数组的遍历
    • 5.2.8.数组的动态初始化
      • 格式:
      • 举例:
      • 数组的默认初始化值:
    • 5.2.9.数组两种初始化方式的区别
      • 使用场景:
      • 举例:
    • 5.2.10.数组常见问题
    • 5.2.11.数组的练习
      • 练习1:求和
      • 练习2:统计个数
      • 练习3:变化数据
      • 练习4:求最值
      • 练习5:统计个数
      • 练习6:交换数据
      • 练习7:打乱数据
  • 6、方法
    • 6.1. 方法概述
      • 6.1.1 方法的概念
    • 6.2. 方法的定义和调用
      • 6.2.1 无参数方法定义和调用
      • 6.2.3 无参数方法的练习
    • 6.3. 带参数方法定义和调用
      • 6.3.1 带参数方法定义和调用
      • 6.3.2 形参和实参
      • 6.3.3 带参数方法练习
    • 6.4. 带返回值方法的定义和调用
      • 6.4.1 带返回值方法定义和调用
      • 6.4.2 带返回值方法练习1
      • 6.4.3 带返回值方法练习2
      • 6.4.4 带返回值方法练习3
    • 6.5. 方法的注意事项
      • 6.5.1 方法的注意事项
      • 6.5.2 方法的通用格式
    • 6.6. 方法重载
      • 6.6.1 方法重载
      • 6.6.2 方法重载练习
      • 6.7.3 数组遍历
      • 6.7.4 数组最大值
      • 6.7.6 获取索引
  • 7、综合练习
    • 练习一:飞机票
    • 练习二:打印素数
    • 练习三:验证码
    • 练习四:复制数组
    • 练习五:评委打分
    • 练习六:数字加密
    • 练习六扩展:
    • 练习七:数字解密
    • 练习八:抽奖
      • 解法一:
      • 解法二:
    • 练习九:双色球

Java入门到起飞(含斯坦福大学练习题+力扣算法题+大厂java面试题)

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第1张图片
版本要求jdk-17_windows-x64_bin
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第2张图片

1、Java入门

常用CMD命令

常见的CMD命令如下:

操作 说明
盘符名称: 盘符切换。E:回车,表示切换到E盘。
dir 查看当前路径下的内容。
cd 目录 进入单级目录。cd itheima
cd … 回退到上一级目录。
cd 目录1\目录2… 进入多级目录。cd itheima\JavaSE
cd \ 回退到盘符目录。
cls 清屏。
exit 退出命令提示符窗口。

Java基础学习

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第3张图片

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第4张图片

JDK的安装目录介绍

目录名称 说明
bin 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。
conf 该路径下存放了JDK的相关配置文件。
include 该路径下存放了一些平台特定的头文件。
jmods 该路径下存放了JDK的各种模块。
legal 该路径下存放了JDK各模块的授权文档。
lib 该路径下存放了JDK工具的一些补充JAR包。

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第5张图片

HelloWorld.java小案例

public class HelloWorld{
   
	public static void main(String[] args){
   
		System.out.println("HelloWorld");
	}
}

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第6张图片

配置PATH环境变量

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第7张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第8张图片

Notepad软件的安装和使用

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第9张图片

Java开发应用

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第10张图片

Java的主要特性

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第11张图片

语言的编译方式

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第12张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第13张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第14张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第15张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第16张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第17张图片

JVM(Java Virtual Machine):Java虚拟机
JRE(Java Runtime Environment):Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit):称为Java开发工具,包含了JRE和开发工具
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第18张图片

2、Java基础概念

2.1. 注释

​ 注释是对代码的解释和说明文字。

Java中的注释分为三种:

  • 单行注释:
// 这是单行注释文字
  • 多行注释:
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。
  • 文档注释(暂时用不到):
/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第19张图片

使用的技巧

​ 如果我们要对代码进行解释,那么就可以使用注释。

​ 当注释的内容比较少,一行就写完了,可以用单行注释。

​ 如果注释的内容比较多,需要写在多行,那么可以使用多行注释。

注意点

​ 注释的内容不会参与编译和运行的,仅仅是对代码的解释说明而已。

​ 所以,不管在注释当中写什么内容,都不会影响代码运行的结果。

2.2. 关键字

2.2.1 概念

​ 被Java赋予了特定含义的英文单词。

​ 当我们在代码中写了关键字之后,程序在运行的时候,就知道要做什么事情了。

注意:关键字很多,不用刻意去记。

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第20张图片

2.2.2 第一个关键字class

表示定义一个类。创建一个类。

类:Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的。

class后面跟随的就是这个类的名字,简称:类名。

在类名后面会有一对大括号,表示这个类的内容。

举例:

public class HelloWorld{
   
    
   
}

解释:class表示定义类。

​ 类名:HelloWorld

​ HelloWorld后面的大括号表示这个类的范围。

2.3. 字面量

作用:告诉程序员,数据在程序中的书写格式。

字面量类型 说明 程序中的写法
整数 不带小数的数字 666,-88
小数 带小数的数字 13.14,-5.21
字符 必须使用单引号,有且仅能一个字符 ‘A’,‘0’, ‘我’
字符串 必须使用双引号,内容可有可无 “HelloWorld”,“黑马程序员”
布尔值 布尔值,表示真假,只有两个值:true,false true 、false
空值 一个特殊的值,空值 值是:null
public class Demo {
   
    public static void main(String[] args) {
   
        System.out.println(10); // 输出一个整数
        System.out.println(5.5); // 输出一个小数
        System.out.println('a'); // 输出一个字符
        System.out.println(true); // 输出boolean值true
        System.out.println("欢迎来到黑马程序员"); // 输出字符串
    }
}

区分技巧

  1. 不带小数点的数字都是整数类型的字面量。
  2. 只要带了小数点,那么就是小数类型的字面量。
  3. 只要用双引号引起来的,不管里面的内容是什么,不管里面有没有内容,都是字符串类型的字面量。
  4. 字符类型的字面量必须用单引号引起来,不管内容是什么,但是个数有且只能有一个。
  5. 字符类型的字面量只有两个值,true、false。
  6. 空类型的字面量只有一个值,null。

制表符 \t

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第21张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第22张图片

2.4. 变量

2.4.1 什么是变量?

​ 变量就在程序中临时存储数据的容器。但是这个容器中只能存一个值。

2.4.2 变量的定义格式

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

2.4.2.1 格式详解

​ 数据类型:限定了变量当中能存储什么类型的数据。

​ 如果要存10,那么数据类型就需要写整数类型。

​ 如果要存10.0,那么数据类型就需要写小数类型。

​ 变量名:其实就是这个容器的名字。

​ 当以后想要使用变量里面的数据时,直接使用变量名就可以了。

​ 数据值:真正存储在容器中的数据。

​ 分号:表示语句的结束,就跟以前写作文时候的句号是一样的。

2.4.2.2 常用的数据类型

​ 整数:int

​ 小数:(浮点数)double

​ 其他数据类型稍后讲解

举例:

public class VariableDemo{
   
	public static void main(String[] args){
   
		//定义一个整数类型的变量
		//数据类型 变量名 = 数据值;
		int a = 16;
		System.out.println(a);//16
		
		//定义一个小数类型的变量
		double b = 10.1;
		System.out.println(b);//10.1
	}
}
2.4.2.3 变量的注意事项
  • 变量名不能重复
  • 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读,所以了解一下即可。
  • 变量在使用之前必须要赋值。

案例:

public class VariableDemo2{
   
	public static void main(String[] args){
   
		//1.变量名不允许重复
		//int a = 10;
		//int a = 20;
		//System.out.println(a);
		
		//2.一条语句可以定义多个变量
		//了解。
		//int a = 10, b = 20, c = 20,d = 20;
		//System.out.println(a);//?
		//System.out.println(b);//?
		
		
		//3.变量在使用之前必须要赋值
		int a = 30;
		System.out.println(a);
	}
}

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第23张图片

2.4.3 变量的练习

​ 需求:说出公交车到终点站之后,车上一共有多少乘客?

​ 一开始没有乘客。

​ 第一站:上去一位乘客,没有下来乘客。

​ 第二站:上去两位乘客,下来一位乘客。

​ 第三站:上去两位乘客,下来一位乘客。

​ 第四站:没有上去乘客,下来一位乘客。

​ 第五站:上去一位乘客,没有下来乘客。

​ 问:到了终点站之后,车上一共多少乘客?

​ 代码解析:

public class VariableTest1{
   
	//主入口
	public static void main(String[] args){
   
		//一开始没有乘客。
		int count = 0;
		//第一站:上去一位乘客
		//在原有的基础上 + 1
		count = count + 1;
		//System.out.println(count);
		//第二站:上去两位乘客,下来一位乘客
		count = count + 2 - 1; 
		//第三站:上去两位乘客,下来一位乘客
		count = count + 2 - 1;
		//第四站:下来一位乘客
		count = count - 1;
		//第五站:上去一位乘客
		count = count + 1;
		//请问:到了终点站,车上一共几位乘客。
		System.out.println(count);//3
	}
}

2.4.4 进制

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第24张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第25张图片

2.4.5 进制之间的转换

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第26张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第27张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第28张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第29张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第30张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第31张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第32张图片
java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第33张图片

2.4.6 ASCII码表

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第34张图片

2.5. 数据类型

2.5.1 Java语言数据类型的分类

  • 基本数据类型
  • 引用数据类型(面向对象的时候再深入学习)

2.5.2 基本数据类型的四类八种

数据类型 关键字 内存占用 取值范围
整数 byte 1 负的2的7次方 ~ 2的7次方-1(-128~127)
short 2 负的2的15次方 ~ 2的15次方-1(-32768~32767)
int 4 负的2的31次方 ~ 2的31次方-1
long 8 负的2的63次方 ~ 2的63次方-1
浮点数 float 4 1.401298e-45 ~ 3.402823e+38
double 8 4.9000000e-324 ~ 1.797693e+308
字符 char 2 0-65535
布尔 boolean 1 true,false
说明

​ e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。

​ 在java中整数默认是int类型,浮点数默认是double类型。

需要记忆以下几点

byte类型的取值范围:

​ -128 ~ 127

int类型的大概取值范围:

​ -21亿多 ~ 21亿多

整数类型和小数类型的取值范围大小关系:

​ double > float > long > int > short > byte

最为常用的数据类型选择:

  • 在定义变量的时候,要根据实际的情况来选择不同类型的变量。

    比如:人的年龄,可以选择byte类型。

    比如:地球的年龄,可以选择long类型。

  • 如果整数类型中,不太确定范围,那么默认使用int类型。

  • 如果小数类型中,不太确定范围,那么默认使用double类型。

  • 如果要定义字符类型的变量,那么使用char

  • 如果要定义布尔类型的变量,那么使用boolean

2.5.3 定义8种基本数据类型变量

public class VariableDemo3{
   
    public static void main(String[] args){
   
        //1.定义byte类型的变量
        //数据类型 变量名 = 数据值;
        byte a = 10;
        System.out.println(a);

        //2.定义short类型的变量
        short b = 20;
        System.out.println(b);

        //3.定义int类型的变量
        int c = 30;
        System.out.println(c);

        //4.定义long类型的变量
        long d = 123456789123456789L;
        System.out.println(d);

        //5.定义float类型的变量
        float e = 10.1F;
        System.out.println(e);

        //6.定义double类型的变量
        double f = 20.3;
        System.out.println(f);

        //7.定义char类型的变量
        char g = 'a';
        System.out.println(g);

        //8.定义boolean类型的变量
        boolean h = true;
        System.out.println(h);

    }
}
注意点
  • 如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。
  • 如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。
  • 如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。)
  • 如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以)

2.5.4 练习1

需求:定义5个变量记录老师的信息并打印

代码示例:

public class VariableTest1{
   
	public static void main(String[] args){
   
		//1.定义字符串类型的变量记录老师的姓名
		String name = "黑马谢广坤";
		//2.定义整数类型的变量记录老师的年龄
		int age = 18;
		//3.定义字符类型的变量记录老师的性别
		char gender = '男';
		//4.定义小数类型的变量记录老师的身高
		double height = 180.1;
		//5.定义布尔类型的变量记录老师的婚姻状况
		boolean flag = true;
		
		//输出5个变量的值
		System.out.println(name);
		System.out.println(age);
		System.out.println(gender);
		System.out.println(height);
		System.out.println(flag);
		
	}
}

2.5.5 练习2

需求:将(电影名称,主演,年份,评分)四个信息选择不同类型的变量,随后打印出来。

代码示例:

public class VariableTest2{
   
	public static void main(String[] args){
   
		//1.定义字符串变量记录电影的名称
		String movie = "送初恋回家";
		//2.定义三个变量记录主演的名字
		String name1 = "刘鑫";
		String name2 = "张雨提";
		String name3 = "高媛";
		//3. 定义整数类型的变量记录年龄的年份
		int year = 2020;
		//4.定义小数类型的变量记录电影的评分
		double score = 9.0;
		
		//打印变量的信息
		System.out.println(movie);
		System.out.println(name1);
		System.out.println(name2);
		System.out.println(name3);
		System.out.println(year);
		System.out.println(score);
		
	}
}

2.5.6 练习3

需求:选择其中一部手机,将(手机价格,手机品牌)两个信息选择不同类型的变量,随后打印出来。

代码示例:

public class VariableTest3{
   
	public static void main(String[] args){
   
		//1.定义小数类型的变量记录手机的价格
		double price = 5299.0;
		
		//2.定义字符串类型的变量记录手机的品牌
		String brand = "华为";
		
		//输出变量记录的值
		System.out.println(price);
		System.out.println(brand);
	}
}

2.6. 标识符

业内大多数程序员都在遵守阿里巴巴的命名规则。

在day02的资料文件夹中有。

2.6.1 硬性要求:

​ 必须要这么做,否则代码会报错。

  • 必须由数字、字母、下划线_、美元符号$组成。
  • 数字不能开头
  • 不能是关键字
  • 区分大小写的。

2.6.2 软件建议:

​ 如果不这么做,代码不会报错,但是会让代码显得比较low。

2.6.2.1 小驼峰命名法

适用于变量名和方法名

  • 如果是一个单词,那么全部小写,比如:name
  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

2.6.2.2 大驼峰命名法

适用于类名

  • 如果是一个单词,那么首字母大写。比如:Demo、Test。
  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld

不管起什么名字,都要做到见名知意。

阿里巴巴命名规范细节:

  1. 尽量不要用拼音。但是一些国际通用的拼音可视为英文单词。

    正确:alibaba、hangzhou、nanjing

    错误:jiage、dazhe

  2. 平时在给变量名、方法名、类名起名字的时候,不要使用下划线或美元符号。

    错误:_name

    正确:name

2.7. 键盘录入

​ 键盘录入的实际功能Java已经帮我们写好了,不需要我们自己再实现了,而Java写好的功能都放在了Scanner这个类中,所以,我们只要直接使用Scanner这个类就可以了。

使用步骤:

第一步:

​ 导包:其实就是表示先找到Scanner这个类在哪。

第二步:

​ 创建对象:其实就表示申明一下,我准备开始用Scanner这个类了。

第三步:

​ 接收数据:也是真正干活的代码。

代码示例:

//导包,其实就是先找到Scanner这个类在哪
import java.util.Scanner;
public class ScannerDemo1{
   
	public static void main(String[] args){
   
		//2.创建对象,其实就是申明一下,我准备开始用Scanner这个类了。
		Scanner sc = new Scanner(System.in);
		//3.接收数据
		//当程序运行之后,我们在键盘输入的数据就会被变量i给接收了
		System.out.println("请输入一个数字");
		int i = sc.nextInt();
		System.out.println(i);
	}
}

3、运算符

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第35张图片

3.1.运算符和表达式

运算符:

​ 就是对常量或者变量进行操作的符号。

​ 比如: + - * /

表达式:

​ 用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。

​ 比如:a + b 这个整体就是表达式。

​ 而其中+是算术运算符的一种,所以这个表达式也称之为算术表达式。

3.2.算术运算符

分类:

+ - * / %

运算特点:

+ - * :跟小学数学中一模一样没有任何区别.
/1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的。
案例:
System.out.println( 10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
%:取模、取余。
   他做的也是除法运算,只不过获取的是余数而已。
案例:
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
应用场景:
//可以利用取模来判断一个数是奇数还是偶数
System.out.println(15 % 2);//1  奇数
练习:数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

代码示例:

//1.键盘录入一个三位数
//导包 --- 创建对象 --- 接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();//123

//2.获取这个三位数的个位、十位、百位并打印出来
//公式:
//针对于任意的一个数而言
//个位: 数字 % 10
int ones = number % 10;
//十位: 数字 / 10 % 10
int tens = number / 10 % 10;
//百位: 数字 / 100 % 10
int hundreds = number / 100  % 10;

//输出结果
System.out.println(ones);
System.out.println(tens);
System.out.println(hundreds);

公式:

​ 获取任意一个数上每一位数。

个位:数字 % 10

十位:数字 / 10 % 10

百位:数字 / 100 % 10

千位:数字 / 1000 % 10

。。。以此类推。。。

3.3.隐式转换

java基础入门-01-【基础、运算符、判断和循环、数组、方法】_第36张图片

概念:

​ 也叫自动类型提升。

​ 就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。

简单记忆:

​ 就是小的给大的,可以直接给。

两种提升规则:
  • 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
  • byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
取值范围从小到大的关系:

​ byte short int long float double

3.4.隐式转换的练习

请看下面案例是否有误,如果有问题,请说出原因,如果没有问题,请说出运算过程和运算结果

案例一:
double d = 10;
System.out.println(d);//10.0

解释:

​ 10是整数,整数默认是int类型的。

​ 而在取值范围的顺序中:byte short int long float double

​ 在赋值的时候把一个int类型的赋值给了一个double类型的。把一个小的赋值给一个大的是可以直接给的。

案例二:
byte b = 100;
int i = b;//可以成功赋值

解释:

​ 因为byte的取值范围是小的,int的取值范围是大的,在底层进行了隐式转换,不需要我们额外写代码单独实现,是可以直接赋值。

案例三:
int i = 10;
long n = 20L;
??? result = i + n;
问变量result是什么类型的?

解释:

​ 变量i是int类型的,变量n是long类型的。

​ 而在取值范围的顺序中:byte short int long float double

​ 变量i里面的值会自动提升为long类型的,最终的结果其实就是两个long相加,那么最终的result是long类型的。

案例四:
int i = 10;
long n = 100L;
double d = 20.0;
??? result = i + n + d;
问变量result是什么类型的?

解释:

​ 变量i是int类型,变量n是long类型,变量d是double类型。

​ 而在取值范围的顺序中:byte short int long float double

​ 所以变量i和变量n里面的值在参与运算的时候,都会进行类型提升,变成double。

​ 最终其实就是三个double进行相加,那么最终的结果就是double类型的。

案例五:
byte b1 = 10;
byte b2 = 20;
??? result = b1 + b2;//int
问变量result是什么类型的?

解释:

​ 因为b1和b2都是byte类型的。所以在参与计算的时候,变量b1和变量b2里面的值都会自动提升为int类型的。最终其实就是两个int类型的相加,最终结果也是int类型的。

案例六:
byte b = 10;
short s = 20;
long n = 100L;
??? result = b + s + n;
问变量result是什么类型的?long

解释:

​ 变量b是byte类型的,变量s是short类型的,变量n是long类型的。

​ byte,short,char类型的变量在参与运算的时候,变量里面的值会直接先提升为int。

第一步:变量b和变量s里面的值会先提升为int参与运算。

​ int + int + long

第二步:而long类型的取值范围是大于int的取值范围的。

​ 所以变量b和变量s里面的值会再次提升为long。

​ long + long + long。

所以最终结果是long类型的。

3.5.强制转换

概念:

​ 如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作。

​ 如果一定要这么干,就需要加入强制转换。

书写格式:

​ 目标数据类型 变量名 = (目标数据类型)被强转的数据;

简单理解:

​ 要转成什么类型的,那么就在小括号中写什么类型就可以了。

案例:

public class OperatorDemo2 {
   
    public static void main(String[] args) {
   
        double a = 12.3;
        int b = (int) a;
        System.out.println(b);//12
    }
}

注意点:

​ 强制转换有可能会导致数据发生错误。(数据的精度丢失)

3.6.字符串的+操作

核心技巧:
  • 当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。
  • 当连续进行+操作时,从左到右逐个执行的。

3.7.字符串相加的练习:

案例1:

1 + "abc" + 1

结果:“1abc1”

解释:

​ 第一步: 1 + “abc”。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"1abc"

​ 第二步: “1abc” + 1。这个过程中,有字符串参与的,所以做的也是拼接操作,产生一个新的字符串"1abc1"

案例2:

1 + 2 + "abc" + 2 + 1

结果:“3abc21”

解释:

​ 第一步:1 + 2 。在这个过程中,没有字符串参与的,所以做的是加法运算,结果为3。

​ 第二步:3 + “abc”。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc"。

​ 第三步:“3abc” + 2。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串"3abc2"。

​ 第四步:“3abc2” + 1。在这个过程中,有字符串参与的,所以做的是拼接操作,产生一个新的字符串“3abc21”

案例3:

String name = "黑默丁格";
System.out.println("我的名字是" + name);

结果: 我的名字是黑默丁格

解释:当字符串跟变量相加的时候,实际上是跟变量里面的值进行拼接。

3.8.字符的+操作

规则:

​ 当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。

案例:
char c = 'a';
int result = c + 0;
System.out.println(result);//97

ASCII码表中:

​ ‘a’ ----- 97

​ ‘A’ ----- 65

3.9.算术运算符的总结

分类:

+ - * / %  这些操作跟小学数学几乎是一模一样的。

注意点:

  • / 和 % 的区别:他们两个都是做除法运算,/取结果的商。% 取结果的余数。
  • 整数操作只能得到整数,如果想要得到小数,必须有浮点数参与运算。

算术运算符的高级用法:

是以+为例进行的讲解,其余减法,乘法,除法的运算规则也是一样的。

特例:字符串只有+操作,没有其他操作。

3.10.自增自减运算符

分类:
++  自增运算符
--  自减运算符

++:就是把变量里面的值+1

–:就是把变量里面的值-1

使用方式:
  • 放在变量的前面,我们叫做先++。 比如:++a
  • 放在变量的后面,我们叫做后++。 比如:a++
注意点:

​ 不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。

案例:
//++
int a = 10;
a++;//就是让变量a里面的值 + 1
System.out.println(a);//11
++a;//就是让变量a里面的值 + 1
System.out.println(a);//12
自增自减运算符的应用场景:

某些情况下,变量需要进行加1或者减1的时候使用。

比如:过生日多一岁,就用到了自增运算符。

比如:购物商场中,选择商品数量,也用到了自增或者自减运算符。

比如:统计很多数据中,有多少个数据满足要求,也用到了自增运算符。

3.11.赋值运算符

最为常用的: =

运算过程:就是把等号右边的结果赋值给左边的变量

案例:

public class OperatorDemo6 {
   
    public static void main(String[] args) {
   
        //1.最为简单的赋值运算符用法
        int a = 10;//就是把10赋值给变量a
        System.out.println(a);

        //2.如果等号右边需要进行计算。
        int b = 20;
        int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(c);

        //3.特殊的用法
        a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(a);//20
    }
}

3.12.扩展赋值运算符

分类:

​ +=、-=、*=、/=、%=

运算规则:

​ 就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。

案例:
public class OperatorDemo7 {
   
    public 

你可能感兴趣的:(java入门,java)