第二章 Java基本语法(二)

本文主要内容:
运算符、if-else、switch-case

一、位运算符

在这里插入图片描述在这里插入图片描述

运算符之五:位运算符
每左移一位,相当于是在原来的基础上乘2.
int i = 21;
System.out.println(“i<<2:”+(i<<2));
输出:i<<2:84

结论:
1.位运算符操作的都是整形的数据
2.<<:在一定范围内,每向左移一位,相当于*2
3.>>: 在一定范围内,每向右移一位,相当于/2
在这里插入图片描述

交换两个变量的值:
方式一:定义临时变量

int temp = num1;
num1 = num2;
num2 = temp;

方式二:

num1 = num1+num2;
num2 = num1 - num2;
num1 = num1 - num2;

方式三:位运算符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三元运算符:

1.结构:(条件表达式)?表达式1:表达式2
2.说明
①条件表达式的结果为boolean类型
②根据条件表达式真或假,决定执行表达式1还是表达式2
如果表达式为true,则执行表达式1,如果表达式为false,则执行表达式2
③表达式1和表达式2要求是一致的

double num = (m>m)? 2 : 1.0;
String maxStr = (m>n) ? "m大" : ((m==n) ? "m和n相等""n大");

获取三个值的最大值

int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1>n2) ? n1: n2;
int max2 = (max1 > n3) ? max1 : n3 ;
System.out.println("三个数中的最大值为:"+"max2");]

凡是可以使用三元运算符的地方,都可以改写成if-else
反之,不成立。
如果程序既可以选择三元运算符,又可以选择if-else,则优先选择三元运算符。原因:简洁,执行效率高
在这里插入图片描述

二、流程控制语句

说明:
1.else结构是可选的
2.针对于条件表达式:
如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
3.如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该哪个结构声明在上面。
4.如果多个条件表达式之间有包含关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。

5.if-else结构是可以相互嵌套的
第一种:
if(条件表达式){
执行表达式
}
第二种:二选一
if(条件表达式){
执行表达式1
}else{
执行表达式2
}

第三种:多选一
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}else if{条件表达式}{
执行表达式2
}
在这里插入图片描述
在这里插入图片描述

彩票中奖的程序:
系统生成一个随机两位数(10-99),与输入的数匹配两位奖励10000,匹配一位奖励1000,两个数字顺序颠倒奖励3000,一个数字对位置不对奖励500,其他情况无奖励。

import java.util.Scanner;
public class test {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入你的数据:");int num = scan.nextInt();//生成[10,99)之间的数。int value = (int)(Math.random()*90+10);System.out.println(value);if(num%10 ==value%10) {if(num/10 == value/10) {System.out.println("奖励10000美元!");}else {System.out.println("奖励1000美元");}}else {if(num/10 == value/10) {System.out.println("奖励1000美元!");}else {System.out.println("没有奖励");}}if((num/10 == value%10) && num%10 == value/10) {System.out.println("奖励3000美元");}if((num/10 == value%10) && num%10 != value/10) {System.out.println("奖励500美元");}if((num/10 != value%10) && num%10 == value/10) {System.out.println("奖励3000美元");}}
}

如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan =new Scanner(System.in)
3.调用Scanner类的相关方法(next()/nextXxx()),来获取指定类型的变量

注意:
需要根据相应的方法,来输入指定类型的值。如果输入的数据与要求的类型不匹配时,会报异常:InputMisMatchException,导致程序终止

我的实现:
代码:

import java.util.Scanner;class ScannerTest{public static void main(String[] args){Scanner scan =new Scanner(System.in);int num = scan.nextInt();System.out.println(num);    }
}

在这里插入图片描述
在这里插入图片描述

除了String类型写scan.next(); 其它数据类型都写清楚是什么类型的,比如scan.nextInt();
对于char型的获取,Scanner没有提供相关的方法,只能够输入一个字符串。

System.out.println("请输入你的性别:(男/女)");
String gender = scan.next();  //"男"
char genderChar = gender.charAt(0);    //获取索引为0位置上的字符

在这里插入图片描述

switch-case结构
在这里插入图片描述

说明:
1.根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
当调用完执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束
在这里插入图片描述

2.break可以使用在switch-case 结构中,一旦执行到break语句,则跳出switch-case结构。
3.switch结构中的表达式,只能是如下的6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)。
4.break关键字是可选的
5.case之后只能声明常量,不能声明范围
6.default相当于if-else结构中的else
default结构是可选的,而且位置是灵活的。
如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
7.凡是可以使用switch-case的结构,都可以转换为if-else,反之不成立。
8.我们写分支结构是,当发现既可以使用switch-case,(t同时switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case.
原因:switch-case执行效率稍高。

编写程序:从键盘上输入2020年的“month”和“day”,要求通过程序输出输入的日期是2020年的第几天

import java.util.Scanner;
class SwitchCaseTest2 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入2019年的month:");int month = scan.nextInt();System.out.println("请输入2019年的day:");int day = scan.nextInt();//定义一个变量来保存总天数int sumDays = 0;switch(month){case 12:sumDays += 30;case 11:sumDays += 31;case 10:sumDays += 30;case 9:sumDays += 31;case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:sumDays += 28;case 2:sumDays += 31;case 1:sumDays += day;}System.out.println("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天");}
}

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

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

相关文章

第二章 Java基本语法(三)

本文主要内容&#xff1a; 循环结构、特殊关键字break和continue的使用&#xff0c;质数问题的优化 循环结构&#xff1a;Boolean类型 程序编写&#xff1a; 从键盘输入两个正整数m和n&#xff0c;找出他们的最大公约数和最小公倍数。 import java.util.Scanner; public clas…

Matlab入门(一)

MATLAB学习笔记 本系列主要内容来源&#xff1a;matlab官方付费课程的学习笔记 截图较多&#xff0c;之后更新会尽量增加文字说明 matlab简单常用的命令 数组 round:四舍五入函数。

MATLAB入门(二)

可以使用 plot 函数在一张图上绘制两个相同长度的向量。 plot(x,y)plot 函数接受一个附加参数。使用该参数&#xff0c;您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。 plot(x,y,"r--o")以上命令将会绘制一条红色 虚线 (–)&#x…

Spring @Lazy批注用例

Spring框架几乎可以毫不费力地为您解决许多常见的编程问题&#xff0c;但是它的某些功能比其他功能鲜为人知。 在本文中&#xff0c;我们将仔细研究属于该组的Lazy批注。 阅读了几个示例之后&#xff0c;您应该能够将注释应用于日常开发任务。 1. 懒豆初始化 Spring的默认行为…

MATLAB入门(三)

求平均值 两种方法生成列向量 读取文件 将数据保存到小数点后两位 result round(M,2);将矩阵中的每个元素都三次方 x3 x.^3将矩阵中的数据按照升序排序 sort(data)创建一个行变量计算每一个列变量的平均值 avg mean(data)diff函数 Y diff(X) 计算沿大小不等于 1…

Java学习 第三章 数组(一)一维数组

第三章 数组 3-1 数组的概述 数组&#xff1a;多个相同类型数据按一定的顺序排列的集合&#xff0c;并使用一个名字命名&#xff0c;并通过编号的方式对这些数据进行统一管理。 数组相关概念&#xff1a; 数组名、下标&#xff08;索引、角标&#xff09;、元素、数组的长度 数…

几个有用的word小技巧,保准提升效率~

这几天改报告改到头秃。年底了&#xff0c;实验室各种项目在结项&#xff0c;作为一名研一新生&#xff0c;理所应当地承担起了体力活的工作。主要负责项目报告的研究背景调研、报告汇总、格式调整等。 格式调整&#xff0c;看起来非常简单的一项工作&#xff0c;却是最费时费…

Java学习 第三章 数组(二)多维数组

多维数组的使用 由数组构成的数组 二维数组&#xff1a; ① 二维数组的声明和初始化 ② 如何调用数组的指定位置的元素 ③ 如何获取数组的长度 ④ 如何遍历数组 ⑤ 数组元素的默认初始化值 &#xff1a;见ArrayTest1.java 数组元素是整形&#xff1a;0 数组元素是浮点型&…

Spring Boot 2中的功能切换

无论您是否喜欢&#xff0c;软件开发都是一项协作活动。 整合工作一直被妖魔化&#xff0c;并被视为必不可少的邪恶。 有几种方法可以解决有效集成的挑战。 功能切换开关属于该组。 在本文中&#xff0c;您将在实践中看到如何在Spring Boot应用程序中使用功能切换&#xff08;也…

Java学习 第三章 数组(三)排序算法

** Java学习 第三章 数组&#xff08;三&#xff09;排序算法 ** 主要内容&#xff1a;排序算法、排序算法横向比较、Arrays工具类的使用、数组常见异常 1.数组中涉及到的常见算法&#xff1a;排序算法 1.1 排序算法分类&#xff1a;内部排序和外部排序 1.2 十大内部排序算…

xmx java_为什么我的Java进程比Xmx消耗更多的内存?

xmx java你们有些人去过那里。 您已经在启动脚本中添加了-Xmx选项&#xff0c;并放松了下来&#xff0c;因为您知道Java进程将不会消耗比经过微调的选项所允许的更多的内存。 然后&#xff0c;您感到非常讨厌。 要么自己检查开发/测试框中的过程表&#xff0c;要么事情真的变坏…

卫星通信系统概述

卫星通信系统指通过在轨人造卫星作为中继站对无线电信号进行转发&#xff0c;实现地面及空间等用户之间信息传输的系统。卫星通信系统组成包括空间段及地面段&#xff0c;系统组成如图所示。其中空间段主要指在轨卫星、对在轨卫星进行操控的地面站&#xff0c;这些地面站主要实…

Opnet入门

一、opnet快速入门 1.系统界面&文件菜单说明 2.常用文件名后缀及描述 3.Opnet建模层次 用户只有一种节点域模型 三、 OPNET Modeler网络仿真机制 1.事件的属性 每次点击next会出现以下界面&#xff1a; 2.事件的执行 调度型&#xff1a;按照正常程序调度事件 强制性&…

【强化学习】Policy Gradient原理

1.Policy Gradient和DQN系列强化算法最大的区别在于&#xff1a; DQN系列基于Value&#xff0c;也就是说执行完所有的动作并保存所得到的价值&#xff0c;根据这些价值计算出最优价值函数&#xff0c;并以此选择动作&#xff0c;最终获得一个特定的策略。 Policy Gradient基于策…

ajax的url怎么将后缀补上_蜂蜜杏仁怎么做?杏仁和蜂蜜腌制方法

蜂蜜杏仁怎么做?杏仁和蜂蜜腌制方法蜂蜜杏仁是一种非常好吃的小零食&#xff0c;很多小可爱都喜欢吃蜂蜜杏仁。不过有些时候忘记补货&#xff0c;就会断粮&#xff0c;于是大家都想要在家里自制蜂蜜杏仁。不过你知道蜂蜜杏仁应该怎么做吗?蜂蜜杏仁的做法其实并不难&#xff0…

【强化学习】Actor Critic原理

PG算法是一种只基于policy的一种方法&#xff0c;存在的问题就是该算法需要完整的状态序列&#xff0c;且单独对策略函数进行迭代更新&#xff0c;不太容易收敛。 Actor-critic方法呢是一种将 策略(Policy Based)和价值(Value Based)相结合的方法。下面继续来理一下AC方法的思路…

【强化学习】A3C原理

先解释一下什么叫异步、什么叫并发&#xff1a; **异步&#xff1a;**和同步相对&#xff0c;同步是顺序执行&#xff0c;而异步是彼此独立&#xff0c;在等待某个事件的过程中继续做自己的事&#xff0c;不要等待这一事件完成后再工作。线程是实现异步的一个方式&#xff0c;异…

jboss eap 7.0_创建委托登录模块(用于JBoss EAP 6.1)

jboss eap 7.0[如果只想查看代码&#xff0c;请向下滚动] 动机 在RHQ中&#xff0c;我们需要一个安全域&#xff0c;该域可用于通过容器管理的安全性来保护REST-api及其Web应用程序。 过去&#xff0c;我只是使用经典的DatabaseServerLoginModule对DatabaseServerLoginModule进…

【强化学习】可视化学习tensorboard

tensorflow定义了一个图结构&#xff1a; 代码&#xff1a; a tf.constant(3.0, name"a")b tf.constant(4.0, name"b")c tf.add(a, b, name"add")var tf.Variable(tf.random_normal([2, 3], mean0.0, stddev1.0), name"variable"…

面向初学者的JSF 2.0教程

1.什么是JSF&#xff1f; JSF是Java Server Faces的首字母缩写。 它是一种服务器端处理技术&#xff0c;它允许将服务器端代码嵌入到网页中。 由于可以将服务器端处理和呈现代码嵌入网页本身&#xff0c;因此使项目的整体编码更加简单。 减少总体数量以及文件大小。 JSF包含2个…