Java类型转换、运算符、流程控制语句你真的懂了吗?

类型转换:

1.数据类型转换之隐式转换(表示数据范围从小到大)

173324bbb3ae48d9b9fd4d0059fb8136.png

  • 小的数据类型,和大的数据类型运算,小的会提升为大的之后,再进行运算
  • 特殊关注:byte short char 三种数据在运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算

​2.类型转换之强制转换

强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量

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

范例:int k = (int)88.88;

注意:强制类型转换,有可能会发生精度损失

    精度损失:简单理解,将容积为8升的容器中的水,倒入容积为4升的容器中,如果水超出了4升,就洒了。

常量优化机制:

在编译时(javac),整数常量的计算会直接算出结果,并且会自动判断该结果是否在byte取值范围内在:编译通过不在:编译失败

3、算术运算符

  • Java程序中,整数运算,结果只能得到整数,想得到小数,需要浮点数参与运算

  • 整数的除法运算得到的是商

  • 整数的取余运算得到的是余数

字符的+操作知识总结:

d841e1421b8f4d45a317c322bcc7afbd.png

c7e93602c457441b873f039115740fe0.png

自增自减运算符

6a4d1888e41f4f15a47c2976c65cbdf1.png

赋值运算符

a3f095e54b3d454eb3d67b4801e13186.png

关系运算符(小于、小于等于、大于、等于、大于等于、不等于)

逻辑运算符

b5650335a5ba431585c5e617d7e782dc.png

  • &&:逻辑与  运算结果与&相同,但具有短路效果,一旦发现坐标的表达式结果为false,右边的表达式将不在参与运算

  • ||​:逻辑或​: 运算结果与|相同,但具有短路效果,一旦发现左边的表达式结果为true,右边的表达式将不在运算

在我们的代码书写中,逻辑与和或的运算,实际使用就是短路的逻辑运算符

三元运算符

0fdbb13e4dc64636a3a34ed5d23d05f0.png

public class TernaryOperatorExample {  
    public static void main(String[] args) {  
        int num1 = 10;  
        int num2 = 20;  
  
        // 使用三元运算符比较两个数的大小,并返回较大的数  
        int maxNum = (num1 > num2) ? num1 : num2;  
  
        // 输出结果  
        System.out.println("较大的数是:" + maxNum);  
    }  
}

顺序结构

流程控制语句分类

  • 顺序结构

  • 分支结构(if, switch)

  • 循环结构(for, while, do…while)

​顺序结构:顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

if结构

d4331b0777684874b13a47480faa96d6.png

if...else结构

c86771b9bead4f1ab70393c75a805f42.png

if...else...if结构

3a52af169f2d462f8478e18e39115102.png

 

switch语句

d1a1c7f04b2e4b3088375103e58d6266.png

执行流程:

  • 首先计算switch()小括号中的值

  • 其次,按顺序从上到下,依次跟case和default进行比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束

注意事项

  • switch中()支持的数据类型

    1.5之前 byte short char(字符型) int1.5之后 enum (枚举 1.5新特性)1.7之后 String(字符串)

  • case后面跟随的是待匹配的值,只能是常量并且不能重复。

  • default就跟else是一样的,当上面所有的值都不匹配,那么就会执行default里面的语句体

switch语句练习

需求:键盘录入星期数,显示今天的减肥活动

周一:跑步  
周二:游泳  
周三:慢走  
周四:动感单车
周五:拳击  
周六:爬山  
周日:好好吃一顿 


import java.util.Scanner;

public class Test01 {
    public static void main(String[] args){
            // 1. 键盘录入星期数据,使用变量接收
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入星期几");
            int week = sc.nextInt();
            // 2. 多条件判断,采用switch语句实现
            switch(week){
                // 3. 在不同的case中,输出对应的减肥计划
                case 1:
                    System.out.println("跑步");
                    break;
                case 2:
                    System.out.println("游泳");
                    break;
                case 3:
                    System.out.println("慢走");
                    break;
                case 4:
                    System.out.println("动感单车");
                    break;
                case 5:
                    System.out.println("拳击");
                    break;
                case 6:
                    System.out.println("爬山");
                    break;
                case 7:
                    System.out.println("好好吃一顿");
                    break;
                default:
                    System.out.println("您的输入有误");
                    break;
            }
     }
}
  • 什么情况下会出现case穿透 ?

    如果switch语句中,case省略了break语句, 就有可能会出现case穿透。

  • 出现case穿透之后有什么现象?

    后面的case条件将不再进行比较,直接进入语句体执行。

  • case穿透什么时候结束?

    遇到下一个break或者整个switch语句结束。

  • 什么情况下用case穿透?

    当多个条件干的事是一样的时候。

示例代码:

需求 : 键盘录入星期数,输出工作日、休息日 (1-5)工作日,(6-7)休息日

/*
case穿透是如何产生的?
		
		如果switch语句中,case或者default省略了break语句, 就会开始case穿透.
		
		现象:
			当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行
			直到看见break,或者将整体switch语句执行完毕,才会结束。
*/
public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入星期数:");
		int week = sc.nextInt();
		
		switch(week){
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
				System.out.println("工作日");
				break;
			case 6:
			case 7:
				System.out.println("休息日");
				break;
		}
	}	
}

for循环

for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}
  • 格式解释:

    • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样

    • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去

    • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情

    • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

  • 执行流程:

    ①执行初始化语句

    ②执行条件判断语句,看其结果是true还是false

    ​ 如果是false,循环结束

    ​ 如果是true,继续执行

    ③执行循环体语句

    ④执行条件控制语句

    ⑤回到②继续

//求和思想
public class ForTest02 {
    public static void main(String[] args) {
		//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
		int sum = 0;
		//从1开始到5结束的数据,使用循环结构完成
		for(int i=1; i<=5; i++) {
			//将反复进行的事情写入循环结构内部
             // 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
			sum += i;
			/*
				sum += i;	sum = sum + i;
				第一次:sum = sum + i = 0 + 1 = 1;
				第二次:sum = sum + i = 1 + 2 = 3;
				第三次:sum = sum + i = 3 + 3 = 6;
				第四次:sum = sum + i = 6 + 4 = 10;
				第五次:sum = sum + i = 10 + 5 = 15;
			*/
		}
		//当循环执行完毕时,将最终数据打印出来
		System.out.println("1-5之间的数据和是:" + sum);
	}
}

案例 水仙花数:

水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数

  • 例如153 3*3*3 + 5*5*5 + 1*1*1 = 153

思路:

  1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取

  2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数

public class ForTest04 {
    public static void main(String[] args) {
		//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
		for(int i=100; i<1000; i++) {
			//在计算之前获取三位数中每个位上的值
			int ge = i%10;
			int shi = i/10%10;
			int bai = i/10/10%10;
			
			//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
			if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
				//输出满足条件的数字就是水仙花数
				System.out.println(i);
			}
		}
    }
}

循环语句-while循环

初始化语句;
while (条件判断语句) {
	循环体语句;
    条件控制语句;
}

while循环执行流程:

①执行初始化语句

②执行条件判断语句,看其结果是true还是false

​ 如果是false,循环结束

​ 如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

public class WhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
		//for循环实现
		for(int i=1; i<=5; i++) {
			System.out.println("HelloWorld");
		}
		System.out.println("--------");
		//while循环实现
		int j = 1;
		while(j<=5) {
			System.out.println("HelloWorld");
			j++;
		}
    }
}

案例1 珠穆朗玛峰

需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

public class WhileTest {
    public static void main(String[] args) {
		//定义一个计数器,初始值为0
		int count = 0;
		//定义纸张厚度
		double paper = 0.1;
		//定义珠穆朗玛峰的高度
		int zf = 8844430;
		//因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
		//折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
		while(paper <= zf) {
			//循环的执行过程中每次纸张折叠,纸张的厚度要加倍
			paper *= 2;
			//在循环中执行累加,对应折叠了多少次
			count++;
		}
		//打印计数器的值
		System.out.println("需要折叠:" + count + "次");
    }
}

dowhile循环

初始化语句;
do {
	循环体语句;
	条件控制语句;
}while(条件判断语句);

执行流程:

① 执行初始化语句

② 执行循环体语句

③ 执行条件控制语句

④ 执行条件判断语句,看其结果是true还是false

如果是false,循环结束

如果是true,继续执行

⑤ 回到②继续

public class DoWhileDemo {
    public static void main(String[] args) {
        //需求:在控制台输出5次"HelloWorld"
		//for循环实现
		for(int i=1; i<=5; i++) {
			System.out.println("HelloWorld");
		}
		System.out.println("--------");
		//do...while循环实现
		int j = 1;
		do {
			System.out.println("HelloWorld");
			j++;
		}while(j<=5);
    }
}

三种循环的区别

  • for、while:

    ​ 先判断,再执行。

    ​ 当第一次循环的时候,判断就为假,那么循环体是执行不到的。

    do...while:

    ​ 先执行,再判断。

    ​ 当第一次循环的时候,判断就为假,那么循环体至少执行一次。

  • for和while的区别

    • 初始化变量作用域

      for:初始化变量是定义在循环里面的,所以循环结束变量不能使用。

      while:对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用。

    • 使用习惯

      for:当我们知道循环的次数。

      while:当我们不知道循环的次数,但是知道循环的结束条件。

      注意:for和while循环二者之间可以相互转换,上面说的使用习惯只是多用于这种情况。

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602946.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase学习1:分布式数据库与集中式数据库的差异

目录 1. 传统集中式数据库 2. 数据库中间件的分库分表 3. 分布式数据库的基本特点及对比分析 4. OceanBase和传统数据库的对比 5. 小结 1. 传统集中式数据库 优点 成熟稳定:经过近40年的发展&#xff0c;应用到各行各业&#xff0c;产品技术非常成熟稳定行业适配性强:适配…

ElementUI Select选择器多选获取选中对象

html <el-form-item label"账户标签&#xff1a;" prop"tags"><el-selectstyle"width: 500px"value-key"tagId"v-model"form.tags"clearablefilterablemultipleplaceholder"请搜索选择账户标签"><…

电脑连接公司打印机教程

第一步&#xff1a;连接上公司Wifi 第二步&#xff1a;打开设置 第三步&#xff1a;安装打印机驱动程序 3.1 查看打印机型号 打印机上面有个贴纸&#xff0c;上面就写有哦 3.2 进入该网页 打印机驱动,打印机驱动下载 - 打印机驱动网 (dyjqd.com) 下滑点击这里下载&#xff0…

C语言实验-数组、字符串以及指针

一&#xff1a; 求一个NN矩阵主、次对角线上所有元素之和。矩阵输入、矩阵输出、矩阵对角线求和分别用三个子函数实现。&#xff08;N的值由用户从键盘输入&#xff09; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>void print(int(*arr…

添砖Java之路其一——Java跨平台原理,JRE与JDK(为什么要安装)。

目录 前言&#xff1a; Java跨平台工作原理简单的理解&#xff1a; JRE与JDK&#xff1a; 前言&#xff1a; 最近又开始学Java了&#xff0c;所以又开一个板块来记录我Java的笔记。 Java跨平台工作原理简单的理解&#xff1a; 简单概括&#xff1a;简单来说Java跨平台原理…

【喜讯】热烈祝贺蒋林华教授当选玻利维亚国家科学院院士

2024年4月29日&#xff0c;人工智能领域知名专家蒋林华教授受邀出席北京中关村论坛侨海创新发展平行论坛&#xff0c;在玻利维亚国家参议院参议员马马尼纳瓦罗希拉里昂&#xff08;Mamani Navarro Hilarion&#xff09;和拉莫斯索帕萨桑托斯&#xff08;Ramos Socpaza Santos&a…

2024年51cto下载的视频怎么导出

如果你喜欢在51cto上观看各种专业技术视频&#xff0c;那么你可能想将喜欢的视频保存到本地设备中&#xff0c;以便随时随地观看。今天&#xff0c;我们就来探讨一下如何在2024年将51cto下载的视频导出到你的设备中 下载51cto的工具我已经打包好了&#xff0c;有需要的自己下载…

Cheetah3D for Mac - 轻松打造专业级3D作品

对于追求专业级3D作品的设计师来说&#xff0c;Cheetah3D for Mac无疑是一款不可多得的工具。 这款软件拥有强大的建模、渲染和动画功能&#xff0c;能够满足您在3D设计方面的各种需求。通过简单的操作&#xff0c;您可以轻松构建出复杂的3D模型&#xff0c;并为其添加逼真的材…

道可道,非常道,名可名,非常名;学习道德经新解读!打破思想钢印——早读(逆天打工人爬取热门微信文章解读)

你读过道德经吗? 引言Python 代码第一篇 洞见 原来这就是&#xff1a;穷人的思想钢印第二篇 人民日报 来了&#xff01;新闻早班车要闻社会政策 结尾 知识始于好奇 终于智慧 好奇心驱使我们探索 而智慧则是自由思想的结晶 引言 玄之又玄 众妙之门 今天真的是大开我的眼界 我之…

卡尔曼滤波实战

入门内容 假如有个超声波&#xff0c;它传回的数据是这样的&#xff0c;这样的数据是用不了的 我们想要的是稳定的数据 此时我们引入滤波&#xff0c;把里面的噪声去掉&#xff0c;使得数据更平滑 适用系统&#xff1a; 符合两个特质&#xff1a;线性和高斯。 也叫线性高斯…

力扣顺序表思路讲解

本篇文章&#xff0c;我给大家带来的是顺序表题目讲解&#xff0c;希望大家看完有所收获&#xff0c;废话不多说&#xff0c;我们现在开始 审题 大白话&#xff1a;给了一个数组和一个目标值。如果数组里的两个元素相加 目标值&#xff0c;则返回这两个元素的下标。那么大家需…

中霖教育:考下注册会计师能从事哪些工作?

考下注册会计师能够从事哪些工作&#xff1f; 1 企业从事会计和财务工作 大部分的CPA持证人&#xff0c;会在企业里&#xff0c;从事会计和财务工作。但是能拿到多少薪资&#xff0c;也要看你所进入的平台。如果是小企业&#xff0c;实力一般&#xff0c;也就几干块工资。如果…

AI大模型应用与实践指南

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

系统图表:洞察数据的价值与魅力

在数字化、信息化迅猛发展的今天&#xff0c;数据已经成为企业决策、科学研究、社会管理等领域的核心资源。而如何高效、准确地理解和利用这些数据&#xff0c;成为摆在我们面前的重要课题。系统图表作为数据可视化的重要呈现工具&#xff0c;不仅能帮助我们洞察数据的内在规律…

Transformer详解:从放弃到入门(完结)

前几篇文章中&#xff0c;我们已经拆开并讲解了Transformer中的各个组件。现在我们尝试使用这些方法实现Transformer的编码器。   如图所示&#xff0c;编码器(Encoder)由N个编码器块(Encoder Block)堆叠而成&#xff0c;我们依次实现。 class EncoderBlock(nn.Module):def …

粤港澳青少年信息学创新大赛 Python 编程竞赛(初中部分知识点整理)

一、考试大纲梳理 知识内容 知识目标 计算机基础与编程环境&#xff0c;历史&#xff0c;存储与网络变量定义和使用基本数据类型&#xff08;整型&#xff0c;浮点型&#xff0c;字符型&#xff0c;布尔型&#xff09;&#xff0c;数据类型的转换控制语句结构&#xff08;顺序…

车规级低功耗汽车用晶振SG-9101CGA

车规级晶振SG-9101CGA属于爱普生9101系列&#xff0c;是一款可编程晶振。SG-9101CGA车规级晶振采用2.5x2.0mm封装&#xff0c;利用PLL技术生产&#xff0c;此款振荡器的频率范围从0.67M~170MHZ任一频点可选&#xff0c;步进1ppm&#xff0c;采用标准CMOS输出&#xff0c;最大输…

极验4 一键解混淆

提示&#xff01;本文章仅供学习交流&#xff0c;严禁用于任何商业和非法用途&#xff0c;未经许可禁止转载&#xff0c;禁止任何修改后二次传播&#xff0c;如有侵权&#xff0c;可联系本文作者删除&#xff01; AST简介 AST&#xff08;Abstract Syntax Tree&#xff09;&a…

【Redis7】10大数据类型之Zset类型

文章目录 1.Zset类型2.常用命令3.示例3.1 ZADD,ZRANGE和ZREVRANGE3.2 ZSCORE,ZCARD和ZREM3.3 ZRANGEBYSCORE和ZCOUNT3.4 ZRANK和ZREVRANK3.5 Redis7新命令ZMPOP 1.Zset类型 Redis的Zset&#xff08;Sorted Set&#xff0c;有序集合&#xff09;是一种特殊的数据结构&#xff0…

【教学类-18-03】20240508《蒙德里安“红黄蓝黑格子画”-A4横版》(大小格子)

作品展示 背景需求&#xff1a; 2年前制作了蒙德里安随机线条 【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》&#xff08;大班)_蒙德里安模版-CSDN博客文章浏览阅读1k次。【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》&#xff08;大班)…