day03-java类型转换和运算符

  • 3.1 表达式和语句

    • 表达式一共分为三种:

      (1)变量或常量 + 运算符构成的计算表达式

      (2)new 表达式,结果是一个数组或类的对象。(后面讲)

      (3)方法调用表达式,结果是方法返回值或void(无返回值)。(后面讲

    • 表达式:变量或常量 + 运算符构成的计算表达式

  • 3.2 顺序结构

    • 顺序结构就是程序从上到下行地执行。表达式语句都是顺序执行的。并且上一行对某个变量的修改对下一行会产生影响。

    • public class TestStatement{public static void main(String[] args){int x = 1;int y = 2;System.out.println("x = " + x);		System.out.println("y = " + y);	//对x、y的值进行修改x++;y = 2 * x + y;x = x * 10;	System.out.println("x = " + x);System.out.println("y = " + y);}
      }

  • 3.3 输入输出语句

    • 3.3.1 输出语句

      • 1、两种常见的输出语句

        • 换行输出语句: System.out.println(输出内容);

        • 不换行输出语句: System.out.print(输出内容);

        • 拼接输出语句: System.out.print("姓名:" + name +",age:" + age);

      • 2、格式化输出

        • %d:十进制整数

        • %f:浮点数

        • %c:单个字符

        • %b:boolean值

        • %s:字符串

    • 3.3.2 输入语句

      • 输入各种类型的数据

        • int num = input.nextInt();

        • boolean b = input.nextBoolean();

        • long big = input.nextLong();

        • String str = input.next();

        • char c = input.next().charAt(0);

        • input.close();//代码没有错误,但是会造成JVM以外的操作系统相关内存没有得到释放。

      • 键盘输入代码的四个步骤: 1、申请资源,创建Scanner类型的对象 2、提示输入xx 3、接收输入内容 4、全部输入完成之后,释放资源,归还资源

    • 示例代码:public class TestPrintlnAndPrint {public static void main(String[] args) {String name = "小好";int age = 18;//对比如下两组代码:System.out.println(name);System.out.println(age);System.out.print(name);System.out.print(age);System.out.println(); //()里面为空,效果等同于换行,输出一个换行符//等价于 System.out.print("\n"); 或  System.out.print('\n');//System.out.print();//错误,()里面不能为空   核心类库PrintStream类中没有提供print()这样的方法//对比如下两组代码:System.out.print("姓名:" + name +",");//""中的内容会原样显示System.out.println("年龄:" + age);//""中的内容会原样显示System.out.print("name = " + name + ",");System.out.println("age = " + age);}
      }

      注意事项:

      换行输出语句,括号内可以什么都不写,只做换行处理不换行输出语句,括号内什么都不写的话,编译报错如果()中有多项内容,那么必须使用 + 连接起来如果某些内容想要原样输出,就用""引起来,而要输出变量中的内容,则不要把变量名用""引起
  • 3.4 分支语句

    • 3.4.1 单分支条件判断:if

      • if语句第一种格式: if

        • if(条件表达式){ 语句体; }

      • 执行流程

        • - 首先判断条件表达式看其结果是true还是false - 如果是true就执行语句体 - 如果是false就不执行语句体

    • 3.4.2 双分支条件判断:if...else

      • if语句第二种格式: if...else

        • if(关系表达式) { 语句体1; }else { 语句体2; }

      • 执行流程

        • 首先判断关系表达式看其结果是true还是false

        • 如果是true就执行语句体1

        • 如果是false就执行语句体2

    • 3.4.3 多分支条件判断:if...else if

      • if语句第三种格式: if...else if ...else

        • if (判断条件1) { 执行语句1; } else if (判断条件2) { 执行语句2; }

      • 执行流程

        • 首先判断关系表达式1看其结果是true还是false

        • 如果是true就执行语句体1,然后结束当前多分支

        • 如果是false就继续判断关系表达式2看其结果是true还是false

        • 如果是true就执行语句体2,然后结束当前多分支

        • 如果是false就继续判断关系表达式…看其结果是true还是false

        • 如果没有任何关系表达式为true,就执行语句体n+1,然后结束当前多分支。

      • 案例:通过指定考试成绩,判断学生等级,成绩范围[0,100]- 90-100      优秀
        - 80-89        好
        - 70-79        良
        - 60-69        及格
        - 60以下    不及格import java.util.Scanner;public class Test11IfElseIf {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入成绩[0,100]:");int score = input.nextInt();if(score<0 || score>100){System.out.println("你的成绩是错误的");}else if(score>=90 && score<=100){System.out.println("你的成绩属于优秀");}else if(score>=80 && score<90){System.out.println("你的成绩属于好");}else if(score>=70 && score<80){System.out.println("你的成绩属于良");}else if(score>=60 && score<70){System.out.println("你的成绩属于及格");}else {System.out.println("你的成绩属于不及格");}input.close();}
        }import java.util.Scanner;public class Test11IfElseIf {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入成绩[0,100]:");int score = input.nextInt();if(score<0 || score>100){System.out.println("你的成绩是错误的");}else if(score>=90){System.out.println("你的成绩属于优秀");}else if(score>=80){System.out.println("你的成绩属于好");}else if(score>=70){System.out.println("你的成绩属于良");}else if(score>=60){System.out.println("你的成绩属于及格");}else {System.out.println("你的成绩属于不及格");}input.close();}
        }
        

    • 3.4.4 if..else嵌套

      • 在if的语句块中,或者是在else语句块中, 又包含了另外一个条件判断(可以是单分支、双分支、多分支)

      • 案例:从键盘输入一个年份值和月份值,输出该月的总天数要求:年份为正数,月份1-12。例如:输入2022年5月,总天数是31天。import java.util.Scanner;public class Test12NestIfElse {public static void main(String[] args){//从键盘输入一个年份和月份Scanner input = new Scanner(System.in);System.out.print("年份:");int year = input.nextInt();System.out.print("月份:");int month = input.nextInt();if(year>0){if(month>=1 && month<=12){//合法的情况int days;if(month==2){if(year%4==0 && year%100!=0 || year%400==0){days = 29;}else{days = 28;}}else if(month==4 || month==6  || month==9 || month==11){days = 30;}else{days = 31;}System.out.println(year+"年" + month + "月有" + days +"天");}else{System.out.println("月份输入不合法");}}else{System.out.println("年份输入不合法");}input.close();}
        }

    • 3.4.5 switch...case多分支选择结构

      • 语法格式:
        • switch(表达式){ case 常量值1: 语句块1; 【break;】 case 常量值2: 语句块2; 【break;】 。。。 【default: 语句块n+1; 【break;】 】 }

      • 避免case穿透
        • 从键盘输入星期的整数值,输出星期的英文单

      • import java.util.Scanner;public class Test13SwitchDemo1 {public static void main(String[] args) {//定义指定的星期Scanner input = new Scanner(System.in);System.out.print("请输入星期值:");int weekday = input.nextInt();//switch语句实现选择switch(weekday) {case 1:System.out.println("Monday");break;case 2:System.out.println("Tuesday");break;case 3:System.out.println("Wednesday");break;case 4:System.out.println("Thursday");break;case 5:System.out.println("Friday");break;case 6:System.out.println("Saturday");break;case 7:System.out.println("Sunday");break;default:System.out.println("你输入的星期值有误!");break;}input.close();}
        }
      • 利用case的穿透性
        • 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,switch语句执行终止。

          • 练习:根据指定的月份输出对应季

        • import java.util.Scanner;/** 需求:指定一个月份,输出该月份对应的季节。* 		一年有四季* 		3,4,5	春季* 		6,7,8	夏季* 		9,10,11	秋季* 		12,1,2	冬季*/
          public class Test14SwitchDemo2 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入月份:");int month = input.nextInt();/*switch(month) {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;case 8:System.out.println("夏季");break;case 9:System.out.println("秋季");break;case 10:System.out.println("秋季");break;case 11:System.out.println("秋季");break;case 12:System.out.println("冬季");break;default:System.out.println("你输入的月份有误");break;}*/// 改进版switch(month) {case 1:case 2:case 12:System.out.println("冬季");break;case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;default:System.out.println("你输入的月份有误");break;}input.close();}
          }
          
      • if语句与switch语句比较
        • if语句的条件是一个布尔类型值,if条件表达式为true则进入分支,可以用于范围的判断,也可以用于等值的判断,使用范围更广。

        • switch语句的条件是一个常量值(byte,short,int,char,枚举,String),只能判断某个变量或表达式的结果是否等于某个常量值,使用场景较狭窄。

        • 当条件是判断某个变量或表达式是否等于某个固定的常量值时,使用if和switch都可以,习惯上使用switch更多。当条件是区间范围的判断时,只能使用if语句。

        • 另外,使用switch可以利用穿透性,同时执行多个分支,而if...else没有穿透性。

  • 3.5 循环语句

    • 3.5.1 for循环

      • 语句格式

        • for(初始化语句①; 循环条件语句②; 迭代语句④){ 循环体语句③ }

      • 执行流程

        • 第一步:执行初始化语句①,完成循环变量的初始化; 第二步:执行循环条件语句②,看循环条件语句的值是true,还是false; - 如果是true,执行第三步; - 如果是false,循环语句中止,循环不再执行。 第三步:执行循环体语句③ 第四步:执行迭代语句④,针对循环变量重新赋值 第五步:根据循环变量的新值,重新从第二步开始再执行一遍

      • 死循环

        • for(;;){ 循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环 }

    • 3.5.2 关键字break

      • 使用场景:终止switch或者当前循环

    • 3.5.3 while循环

      • while循环语句基本格式

        • while (循环条件语句①) { 循环体语句②; }

      • 死循环

        • while(true){ 循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环 }

    • 3.5.4 do...while循环

      • 语句标准格式

        • do { 循环体语句①; } while (循环条件语句②);

      • 死循环

        • do{ 循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环 }while(true);

    • 3.5.5 循环语句的区别

      • 从循环次数角度分析

        • do...while循环至少执行一次循环体语句

        • for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句

      • 如何选择

        • 遍历有明显的循环次数(范围)的需求,选择for循环

        • 遍历没有明显的循环次数(范围)的需求,循环while循环

        • 如果循环体语句块至少执行一次,可以考虑使用do...while循环

        • 本质上:三种循环之间完全可以互相转换,都能实现循环的功能

      • 三种循环结构都具有四要素:

        • (1)循环变量的初始化表达式

        • (2)循环条件

        • (3)循环变量的修改的迭代表达式

        • (4)循环体语句块

    • 3.5.6 循环嵌套

      • 嵌套循环:是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。当然可以是三种循环任意互相嵌套。

    • 3.5.7 关键字:continue

      • 使用场景:提前结束本次循环,继续下一次的循环

  • 3.6 扩展

    • 3.6.1 验证码

      • 随机数用String拼接

    • String randomCode = "";for (int i = 0; i < 6; i++) {int randomNum = (int) (Math.random() * 10);randomCode += randomNum;}System.out.println(randomCode);
    • 3.6.2 equal方法

      • 代码

    •         while(true){System.out.print("请输入您的性别:");String str = input.next();if(str.equals("男")||str.equals("女")||str.equals("保密")){System.out.println("您的性别"+str);break;}else{System.out.println("输入无效,请重新输入");}}
      • 注意

        • equals方法用于比较两个对象的内容是否相等。它是在Object类中定义的,但通常需要被子类重写以提供具体的比较逻辑。

        • 例:对于两个字符串对象s1和s2,如果它们包含相同的内容,则s1.equals(s2)返回true,即使这两个对象可能位于内存中的不同位置。

        • equals方法在Java中用于比较两个对象的内容是否相等,与==运算符在引用比较上的不同行为相区分。当需要比较对象内容是否相等时,应使用equals方法,并确保在自定义类中适当地重写该方法以提供正确的比较逻辑。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化进阶: Pytest之Fixture拓展及conftest.py加载机制!

Pytest是一个功能强大的Python测试框架&#xff0c;它提供了很多有用的功能和扩展机制。其中之一是Fixture&#xff0c;Fixture是pytest中的一个装饰器&#xff0c;可以用来提供测试所需的数据和对象。 本篇文章将从头开始&#xff0c;详细介绍如何使用Fixture进行接口自动化测…

Linux安装Oracle11g(无图形界面下的静默安装)

Oracle11g安装文档-Linux静默安装 环境准备安装数据库配置监听器创建数据库测试打开防火墙 环境准备 创建组和用户 [rootlocalhost ~]# groupadd oinstall #创建oinstall组 [rootlocalhost ~]# groupadd dba  #创建dba组 [rootlocalhost ~]# useradd -g oinstall -G dba -m…

鸿蒙HarmonyOS开发实例:【分布式关系型数据库】

介绍 本示例使用[ohos.data.relationalStore]接口和[ohos.distributedDeviceManager] 接口展示了在eTS中分布式关系型数据库的使用&#xff0c;在增、删、改、查的基本操作外&#xff0c;还包括分布式数据库的数据同步同能。 效果预览 使用说明: 启动应用后点击“ ”按钮可…

《QT实用小工具·十七》密钥生成工具

1、概述 源码放在文章末尾 该项目主要用于生成密钥&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain.h" #include "qmessag…

ArrayList中多线程的不安全问题

ArrayList中的不安全问题 正常的输出 List<String> list Arrays.asList("1","2","3"); list.forEach(System.out::println);为什么可以这样输出&#xff0c;是一种函数是接口&#xff0c;我们先过个耳熟 Arrys.asList是返回一个ArrayL…

进程间通信 (匿名管道)

一、进程间通信的概念 进程间通信是一个进程把自己的数据交给另一个进程&#xff0c;它可以帮助我们进行数据传输、资源共享、通知事件和进程控制。 进程间通信的本质是让不同的进程看到同一份资源。因此&#xff0c;我们要有&#xff1a; 1、交换数据的空间。2、这个空间不能由…

hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

分析&#xff1a; 在启动hadoop服务的时候&#xff0c;遇到了这个问题&#xff1a; hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 这个一看就是&#xff0c;密钥问题 于是ssh 主机名就行测试 需要输入密码&#xff0c;就说明这里有问…

C++笔记(函数重载)

目录 引入&#xff1a; 定义&#xff1a; 易错案例&#xff1a; 引入&#xff1a; 对于实现相似功能的函数&#xff0c;在命名时&#xff0c;我们常会出现命名重复的问题。对于C语言&#xff0c;编译器遇到这种命名重复的情况&#xff0c;会进行报错。而我们的C为了更方便程…

【计算机毕业设计】校园网书店系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

分布式锁-redission

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码…

pycharm一直打不开

一直处在下面的页面&#xff0c;没有反应 第一种方案&#xff1a; 以管理员身份运行 cmd.exe&#xff1b;在打开的cmd窗口中&#xff0c;输入 netsh winsock reset &#xff0c;按回车键&#xff1b;重启电脑&#xff1b;重启后&#xff0c;双击pycharm图标就能打开了&#xf…

深度理解运放增益带宽积

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海。 增益带宽积是运算放大器的重要参数之一&#xff0c;指的是运放的增益和带宽的乘积&#xff0c;这个乘积…

STC89C52学习笔记(四)

STC89C52学习笔记&#xff08;四&#xff09; 综述&#xff1a;本文讲述了在STC89C51中数码管、模块化编程、LCD1602的使用。 一、数码管 1.数码管显示原理 位选&#xff1a;对74HC138芯片的输入端的配置&#xff08;P22、P23、P24&#xff09;&#xff0c;来选择实现位选&…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型&#xff0c;其强大的语言理解和生成能力&#xff0c;让无数用户惊叹不已。然而&#xff0c;使用的高门槛往往让国内普通用户望而却步。 最近&#xff0c;一款由月之暗面科技有限公司开发的智能助手——Kimi&#xff0c;很火爆哦。…

【Keil5-编译4个阶段】

Keil5-编译 ■ GCC编译4个阶段■ 预处理->编译->汇编->链接■ GNU工具链开发流程图■ armcc/armasm&#xff08;编译C和汇编&#xff09;■ armlink &#xff08;链接&#xff09;■ armar &#xff08;打包&#xff09;■ fromelf &#xff08;格式转换器&#xff09…

【LAMMPS学习】八、基础知识(1.7) LAMMPS 与 MDI 库代码耦合

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

【现代C++】委托构造函数

现代C中的委托构造函数&#xff08;Delegating Constructors&#xff09;是C11引入的特性&#xff0c;它允许一个构造函数调用同一个类中的另一个构造函数&#xff0c;以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。 1. 基本用法 在同一个类中&#xf…

(小红书平台)2024用户画像洞察报告

现今的小红书坐拥3亿月活用户&#xff0c;男女比例达到3:7&#xff0c;95后占比为50%&#xff0c;00后占比为35%&#xff0c;一二线城市用户占比50%。社区分享者超8000万&#xff0c;日均用户搜索渗透达到60%&#xff0c;UGC内容占比达90%。&#xff08;数据来源&#xff1a;小…

[lesson16]类的真正形态

类的真正形态 类的关键字 struct在C语言中以及有了自己的含义&#xff0c;必须继续兼容 在C中提供了新的关键字class用于类的定义 class和struct的用法是完全相同的 在用struct定义类时&#xff0c;所有成员的默认访问级别为public 在用class定义类时&#xff0c;所有成员…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代&#x1f4f2;&#xff0c;网络安全&#x1f512;成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁&#x1f525;&#xff0c;传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备&#x1f5a7;&#xff0c;作为网络架构中…