【JavaSE】基本语法(42~133)

42.Java基本语法-每天一考

1.JDK,JRE,JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些?
JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)
JRE = JVM + Java核心类库

2.为什么要配置path环境变量?如何配置?
JAVA_HOME = bin的上一层目录
path = %JAVA_HOME%\bin

3.常用的几个命令行操作都有哪些?(至少4个)
cd、md、rd、del、cd…、cd/

4.创建如下的类,使得运行的话可以输出:
创建java文件:ChairMan.java

 public class ChairMan{
	public static void main(String[] args){
		System.out.println("姓名:张三\n");//
		//System.out.println();
		System.out.println("性别:男");
		System.out.println("家庭住址:中国");
	}
 }

5.编译和运行上述代码的指令
编译:javac ChairMan.java
运行:java ChairMan

43.Java基本语法-复习1
44.Java基本语法-复习2

45.Java基本语法-关键字和保留字

官方网站
关键字(keyword)的定义和特点
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使 用。自己命名标识符时要避免使用这些保留字 goto 、const

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

46.Java基本语法-标识符及命名规范

标识符:
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
技巧:凡是自己可以起名字的地方都叫标识符。

定义合法标识符规则:
由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
练习:miles, Test, a++, --a, 4#R, $4, #44, apps, class, public, int, x, y, radius

47.Java基本语法-标识符的命名规范

包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

48.Java基本语法-变量的定义

变量的概念:
内存中的一个存储区域
该区域的数据可以在同一类型范围内不断变化
变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

变量的作用:
用于在内存中保存数据

49.Java基本语法-定义变量的注意点

使用变量注意:
Java中每个变量必须先声明,后使用
使用变量名来访问这块区域的数据
变量的作用域:其定义所在的一对{ }内
变量只有在其作用域内才有效
同一个作用域内,不能定义重名的变量

声明变量
语法:<数据类型> <变量名称>,例如:int var;

变量的赋值
语法:<变量名称> = <值>,例如:var = 10;

声明和赋值变量
语法: <数据类型> <变量名> = <初始化值>,例如:int var = 10;

50.Java基本语法-变量的分类

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

51.Java基本语法-整型变量的使用说明

在这里插入图片描述

52.Java基本语法-浮点型变量的使用说明

在这里插入图片描述

53.Java基本语法-char变量的使用说明

在这里插入图片描述

54.Java基本语法-乱码的情况和字符集的说明

了解:ASCII 码
在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有 0 和 1 两种状态, 因此 8 个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。一个字节一 共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从0000000 到 11111111。

ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的 关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如 空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这 128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前 面的1位统一规定为0。

缺点:
不能表示所有字符。
相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中却代表 了字母Gimel (ג)

了解: Unicode 编码
乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因 此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读, 就会出现乱码。

Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。

Unicode 的缺点:Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码 应该如何存储:无法区别 Unicode 和 ASCII:计算机无法区分三个字节表示一个符号 还是分别表示三个符号。另外,我们知道,英文字母只用一个字节表示就够了,如果 unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有 二到三个字节是0,这对于存储空间来说是极大的浪费

了解: UTF-8
UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。

UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则:
对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。
对于多字节的UTF-8编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为1,第一 个字节的第 n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的 所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。

55.Java基本语法-boolean型变量的使用

boolean 类型用来判断逻辑条件,一般用于程序流程控制:
if条件控制语句;
while循环控制语句;
do-while循环控制语句;
for循环控制语句;

boolean类型数据只允许取值true和false,无null。
不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示。———《java虚拟机规范 8版》

56.Java基本语法-自动类型提升运算1

57.Java基本语法-自动类型提升运算2

此时的容量大小指的是,表示数的范围的大和小。比如float容量要大于long的容量
在这里插入图片描述

58.Java基本语法-强制类型转换运算

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
double d1 = 12.3;int i1 = (int)d1;

通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可 以实现把字符串转换成基本类型。
如: String a = “43”; int i = Integer.parseInt(a);
boolean类型不可以转换为其它的数据类型。

59.Java基本语法-变量运算规则的两个特殊情况

在这里插入图片描述

60.Java基本语法-String类型变量的使用

String不是基本数据类型,属于引用数据类型,翻译为:字符串
使用方式与基本数据类型一致。例如:String str = “abcd”;
一个字符串可以串接另一个字符串,也可以直接串接其他8种类型的数据,且运算只能是连接运算:+。例如:
str = str + “xyz” ;int n = 100; str = str + n;

61.Java基本语法-两个关于String的练习题

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

62.Java基本语法-String类型使用的强化说明

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

63.Java基本语法-不同进制的表示方式

所有数字在计算机底层都以二进制形式存在。

对于整数,有四种表示方式:
二进制(binary):0,1 ,满2进1.以0b或0B开头。
十进制(decimal):0-9 ,满10进1。
八进制(octal):0-7 ,满8进1. 以数字0开头表示。
十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0
在这里插入图片描述
在这里插入图片描述

64.Java基本语法-二进制转换为十进制的说明

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位; 当是long类型时,二进制默认占64位,第64位是符号位

二进制的整数有如下三种形式:
原码:直接将一个数值换成二进制数。最高位是符号位
负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
负数的补码:其反码加1。

计算机以二进制补码的形式保存所有的整数。
正数的原码、反码、补码都相同
负数的补码是其反码+1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

65.Java基本语法-二进制转换为十进制的练习

在这里插入图片描述6

66.Java基本语法-十进制转二进制的操作

在这里插入图片描述

67.Java基本语法-二进制与八进制十六进制间的转换

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

68.Java基本语法-每天一考

  1. 标识符的命名规则有哪些? 不遵守,编译不通过。

  2. 标识符的命名规范有哪些?不遵守,编译运行都可以通过
    包名:xxxyyyzzz
    类名、接口名:XxxYyyZzz
    变量名、方法名:xxxYyyZzz
    常量名:XXX_YYY_ZZZ

  3. Java变量按照数据类型怎么划分?并指出Java的基本数据类型有哪8种,并指出各自占用的内存空间大小
    byte short int long
    char
    float double
    boolean
    引用数据类型:类、接口、数组

  4. 说明基本数据类型变量之间自动类型提升的运算规则。
    byte、short、char -int long float double

  5. 说明基本数据类型变量之间强制类型转换的使用规则和强转可能出现的问题。
    容量大>容量小
    使用强转符:()
    精度损失。

69.Java基本语法-复习1
70.Java基本语法-复习2:变量的定义
71.Java基本语法-复习3:变量的运算规则
72.Java基本语法-复习3:算术运算符的使用1

73.Java基本语法-复习3:算术运算符的使用2

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
在这里插入图片描述
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是 负数则不可忽略。此外,取模运算的结果不一定总是整数。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只 保留整数部分而舍弃小数分。 例如:int x=3510;x=x/1000*1000; x的 结果是?

“+”除字符串相加功能外,还能把非字符串转换成字符串.例如:System.out.println(“5+5=”+5+5); //打印结果是? 5+5=55 ?

74.Java基本语法-算术运算符的练习
75.Java基本语法-关于敲代码和练指法

76.Java基本语法-赋值运算符的使用

在这里插入图片描述
77.Java基本语法-赋值运算符的课后练习

78.Java基本语法-比较运算符的使用

在这里插入图片描述

79.Java基本语法-逻辑运算符的使用说明

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。 理解:异或,追求的是“异”!。同假异真

80.Java基本语法-逻辑运算符的使用测试

在这里插入图片描述

81.Java基本语法-逻辑运算符的课后练习

82.Java基本语法-左移右移位运算符的使用

在这里插入图片描述

左移2位,在右侧填充2个0

在一定范围内
每左移一位,相当于*2
每右移一位,相当于/2

在这里插入图片描述

83.Java基本语法-其它位运算符的使用

在这里插入图片描述

84.Java基本语法-位运算符的练习

//方式一:定义临时变量的方式
//推荐的方式
//int temp = numl;
//num1 = num2;
//num2 = temp;

//方式二:好处:不用定义临时变量
//弊端:1.相加操作可能超出存储范围
//2.有局限性:只能适用于数值类型
//num1 = num1 + num2;
//num2 = num1 - num2;
//num1 = num1 - num2;

//方式三:使用位运算符
num1 = num1 А num2;
num2 = num1 * num2;
nun1 = num1 А num2;

85.Java基本语法-三元运算符的使用

表达式1和表达式2为同种类型

三元运算符与if-else的联系与区别:
1.三元运算符可简化if-else语句
2.三元运算符要求必须返回一个结果
3.if后的代码块可有多个语句

在这里插入图片描述

86.Java基本语法-三元运算符与if-else的转换

87.Java基本语法-运算符的优先级

在这里插入图片描述

88.Java基本语法-关于流程控制的说明

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
顺序结构
分支结构
循环结构

89.Java基本语法-if-else结构的基本使用

在这里插入图片描述
90.Java基本语法-每日一考
91.Java基本语法-复习1:算术与比较运算符
92.Java基本语法-复习2:比较与逻辑运算符
93.Java基本语法-复习3:位运算符与三元运算符

94.Java基本语法-使用Scanner从键盘获取int型数据

在这里插入图片描述

95.Java基本语法-使用Scanner从键盘获取多种类型数据

String name = scan.next();
System.out.println(name);

System.out.println(“请输入你的芳龄:“);
int age = scan.nextInt();
System.out.println(age);

System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println(weight);

System.out.println("你是否相中我了呢?(true/false)");
boolean isLove = scan.nextBoolean();
System.out.println(isLove);

//对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串
System.out.println("请输入你的性别:(男/女)");
String gender=scan.next();//"男"
char genderChar=gender.charAt(0);//获取素引为a位置上的字符
System.out.println(genderChar);

96.Java基本语法-if-else的例题1
97.Java基本语法-if-else的例题2

98.Java基本语法-if-else课后练习1:笔试题

//对下列代码,若有输出,指出输出结果
int x = 4;  
int y = 1;  
if (x > 2) {
	if (y > 2)
		System.out.println(x + y);  
	System.out.println("atguigu");
} else
System.out.println("x is " + x);

/**因为if (x > 2) 判断通过
if (y > 2)判断不通过
因为省略了大括号,默认只能照顾System.out.println(x + y); 
所以输出的语句为:System.out.println("atguigu");
**/
boolean b = true;
//如果写成if(b=false)能编译通过吗?如果能,结果是?
if(b == false)
	System.out.println("a");
else if(b)
	System.out.println("b");
else if(!b)
	System.out.println("c");
else
	System.out.println("d");
	
/**先输出b
如果写成if(b=false)能编译通过吗?如果能,结果是?
能编译通过,结果是c,因为if(b = false)
**/

99.Java基本语法-if-else课后练习2:狗的年龄

100.Java基本语法-if-else课后练习3:彩票问题

假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
1.如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2.如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3.如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4.如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5.如果用户输入的数字没有匹配任何一个数字,则彩票作废。

提示:使用(int)(Math.random() * 90 + 10)产生随机数。 Math.random() : [0,1) * 90 ->[0,90) + 10 ->[10,100) ->[10,99]

//课后练习4:如何获取一个随机数:10 - 99
int value = (int)(Math.random() * 90 + 10);
// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99]
System.out.println(value);
//公式:[a,b]  :  (int)(Math.random() * (b - a + 1) )+ a

101.Java基本语法-if-else课后练习4:高富帅

/*
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/

import java.util.Scanner;

class IfExer1 {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入你的身高:(cm)");
		int height = scan.nextInt();
		System.out.println("请输入你的财富:(千万)");
		double wealth = scan.nextDouble();

		/*
		方式一:
		System.out.println("请输入你是否帅:(true/false)");
		boolean isHandsome = scan.nextBoolean();

		if(height >= 180 && wealth >= 1 && isHandsome){
			System.out.println("我一定要嫁给他!!!");
		}else if(height >= 180 || wealth >= 1 || isHandsome){
			System.out.println("嫁吧,比上不足,比下有余。");
		}else{
			System.out.println("不嫁!");
		}
		*/

		//方式二:
		System.out.println("请输入你是否帅:(是/否)");
		String isHandsome = scan.next();

		
		if(height >= 180 && wealth >= 1 && isHandsome.equals("是")){
			System.out.println("我一定要嫁给他!!!");
		}else if(height >= 180 || wealth >= 1 || isHandsome.equals("是")){
			System.out.println("嫁吧,比上不足,比下有余。");
		}else{
			System.out.println("不嫁!");
		}
	}
}

102.Java基本语法-switch-case结构的基本使用

在这里插入图片描述

103.Java基本语法-switch-case结构的使用说明

switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0新增),String (jdk 7.0);
case子句中的值必须是常量,不能是变量名或不确定的表达式值;
同一个switch语句,所有case子句中的常量值互不相同;
break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

说明:
①根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
②break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
③ switch结构中的表达式,只能是如下的6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
④ case 之后只能声明常量。不能声明范围。

104.Java基本语法-switch-case的例题1

1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}

2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

/*
例题:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
*/
class SwitchCaseTest1 {
	public static void main(String[] args) {
		
		/*
		int score = 78;
		switch(score){
		case 0:
		case 1:
		case 2:
			...
		case 100:	
		}

		int score = 78;
		if(score >= 60){		
		}else{
		
		}
		*/
		
		int score = 78;
		switch(score / 10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格");
			break;
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			System.out.println("及格");
			break;

		}
		
		//更优的解决方案:
		switch(score / 60){
		case 0:
			System.out.println("不及格");
			break;
		case 1:
			System.out.println("及格");
			break;
		}	
	}
}

105.Java基本语法-switch-case的例题2

1.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

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

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

2  15:  31 + 15
5 7: 31 + 28 + 31 + 30 + 7 
....

说明:break在switch-case中是可选的
*/
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;

		//方式一:冗余
		/*
		if(month == 1){
			sumDays = day;
		}else if(month == 2){
			sumDays = 31 + day;
		}else if(month == 3){
			sumDays = 31 + 28 + day;
		}else if(month == 4){
			sumDays = 31 + 28 + 31 + day;
		}
		//...
		else{//month == 12
			//sumDays = ..... + day;
		}
		*/

		//方式二:冗余
		/*
		switch(month){
		case 1:
			sumDays = day;
			break;
		case 2:
			sumDays = 31 + day;
			break;
		case 3:
			sumDays = 31 + 28 + day;
			break;
		...
		}
		*/

		//break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
		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 + "天");
	}
}

106.Java基本语法-switch-case课后练习:日期积累

从键盘分别输入年、月、日,判断这一天是当年的第几天

注:判断一年是否是闰年的标准:
可以被4整除,但不可被100整除或可以被400整除

/*
从键盘分别输入年、月、日,判断这一天是当年的第几天
 
   注:判断一年是否是闰年的标准:
       1)可以被4整除,但不可被100整除
	或
       2)可以被400整除


说明:
1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。

*/
import java.util.Scanner;
class SwitchCaseExer {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入year:");
		int year = scan.nextInt();
		System.out.println("请输入month:");
		int month = scan.nextInt();
		System.out.println("请输入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;
			//判断year是否是闰年
			if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){
				sumDays += 29;
			}else{
				sumDays += 28;
			}

		case 2:
			sumDays += 31;
		case 1:
			sumDays += day;
		}

		System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天");
	}
}

107.Java基本语法-switch-case课与if-else转换说明

  • 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
  • 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case
  • 原因:switch-case执行效率稍高

108.Java基本语法-s循环结构及for循环的理解

循环结构:在某些条件满足的情况下,反复执行特定代码的功能

循环语句分类
for 循环
while 循环
do-while 循环

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

109.Java基本语法-for循环结构的使用

int num = 1;
for(System.out.print('a');num <= 3;System.out.print('c'),num++){
	System.out.print('b');
}
//输出结果:abcbcbc
//System.out.print('c'),num++为迭代条件,每次for循环执行一次
//个人认为这里这么写没什么意义,因为完全可以写到循环体里面,可能有其它更合适的应用场景吧

110.Java基本语法-for循环的例题

111.Java基本语法-每天一考

1.switch后面使用的表达式可以是哪些数据类型的。
byte 、 short 、char 、int 、枚举类型变量、String类型。

2.使用switch语句改写下列if语句:

 int a = 3;
 	 int x = 100;
 	 if(a==1)
		x+=5;
 	 else if(a==2)
		x+=10;
 	 else if(a==3)
		x+=16;
 	 else		
		x+=34;

int a = 3;
int x = 100;
switch(a){
case 1:
	x+=5;
	break;
case 2:
	x+=10;
	break;
case 3:
	x+=16;
	break;
default:
	x+=34;
	//break;
}

3.谈谈你对三元运算符、if-else和switch-case结构使用场景的理解

int c;
if(a != b){
	c = a;
}else{
	c = b;
}

int c = (a != b)? a : b;

int c = a;

4.如何从控制台获取String和int型的变量,并输出?使用代码实现

import java.util.Scanner;
Scanner scan = new Scanner(System.in);

String info = scan.next(); 
int id = scan.nextInt();
  1. 使用for循环遍历100以内的奇数,并计算所有的奇数的和并输出。
int sum = 0;
for(int i = 1;i <= 100;i++){
	if(i % 2 != 0){
		Sysout(i);
		sum += i;
	}
}
syout(sum);

112.Java基本语法-复习

113.Java基本语法-for循环的例题

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60。
说明:break关键字的使用

import java.util.Scanner;
class ForTest{

	public static void main(String[] args){
	
		Scanner scan = new Scanner(System.in);

		System.out.println("请输入第一个正整数:");
		int m = scan.nextInt();
		
		System.out.println("请输入第二个正整数:");
		int n = scan.nextInt();
		
		//获取最大公约数
		//1.获取两个数中的较小值
		int min = (m <= n)? m : n;
		//2.遍历
		for(int i = min;i >= 1 ;i--){
			if(m % i == 0 && n % i == 0){
				System.out.println("最大公约数为:" + i);
				break;//一旦在循环中执行到break,就跳出循环,直接跳出for
			}
		}
		
		//获取最小公倍数
		//1.获取两个数中的较大值
		int max = (m >= n)? m : n;
		//2.遍历
		for(int i = max;i <= m * n;i++){
			if(i % m == 0 && i % n == 0){				
				System.out.println("最小公倍数:" + i);
				break;			
			}
		}		
	}
}

114.Java基本语法-for循环课后练习

115.Java基本语法-while循环的基本使用

在这里插入图片描述

/*
①
while(②){
	③;
	④;
}

执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

说明:
1.写while循环千万小心不要丢了迭代条件。一旦丢了,就可能导致死循环!
2.我们写程序,要避免出现死循环。
3.for循环和while循环是可以相互转换的! 
  区别:for循环和while循环的初始化条件部分的作用范围不同。


算法:有限性。

*/
class  WhileTest{
	public static void main(String[] args) {
		
		//遍历100以内的所有偶数
		int i = 1;
		while(i <= 100){
			
			if(i % 2 == 0){
				System.out.println(i);
			}
			
			i++;
		}
		//出了while循环以后,仍可以调用。
		System.out.println(i);//101

	}
}

116.Java基本语法-do-while循环的基本使用

在这里插入图片描述

/*
do-while循环的使用

一、循环结构的4个要素
① 初始化条件
② 循环条件  --->是boolean类型
③ 循环体
④ 迭代条件

二、do-while循环结构:

①
do{
	③;
	④;

}while(②);

执行过程:① - ③ - ④ - ② - ③ - ④ - ... - ②

说明:
1.do-while循环至少会执行一次循环体!
2.开发中,使用for和while更多一些。较少使用do-while

*/
class DoWhileTest {
	public static void main(String[] args) {
		
		//遍历100以内的偶数,并计算所有偶数的和及偶数的个数
		int num = 1;
		int sum = 0;//记录总和
		int count = 0;//记录个数
		do{
			
			if(num % 2 == 0){
				System.out.println(num);
				sum += num;
				count++;
			}

			num++;

		}while(num <= 100);
		

		System.out.println("总和为:" + sum);
		System.out.println("个数为:" + count);

		//*************体会do-while至少执行一次循环体***************
		int number1 = 10;
		while(number1 > 10){
			System.out.println("hello:while");
			number1--;
		}

		int number2 = 10;
		do{
			System.out.println("hello:do-while");
			number2--;
		}while(number2 > 10);

	}
}

117.Java基本语法-while(true)结构的使用

/*
题目:
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。

说明:
1. 不在循环条件部分限制次数的结构:for(;;) 或 while(true)
2. 结束循环有几种方式?
     方式一:循环条件部分返回false
	 方式二:在循环体中,执行break
*/

import java.util.Scanner;

class ForWhileTest {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		int positiveNumber = 0;//记录正数的个数
		int negativeNumber = 0;//记录负数的个数

		for(;;){//while(true){
			
			int number = scan.nextInt();

			//判断number的正负情况
			if(number > 0){
				positiveNumber++;
			}else if(number < 0){
				negativeNumber++;
			}else{
				//一旦执行break,跳出循环
				break;
			}

		}

		System.out.println("输入的正数个数为:" + positiveNumber);
		System.out.println("输入的负数个数为:" + negativeNumber);		
	}
}

118.Java基本语法-嵌套循环的使用1

将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环内层循环

实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的 循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开 始下一次的循环。

设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

/*
嵌套循环的使用
1.嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环

2.
外层循环:循环结构B
内层循环:循环结构A

3. 说明
① 内层循环结构遍历一遍,只相当于外层循环循环体执行了一次
② 假设外层循环需要执行m次,内层循环需要执行n次。此时内层循环的循环体一共执行了m * n次

4. 技巧:
   外层循环控制行数,内层循环控制列数
*/
class ForForTest {
	public static void main(String[] args) {
		
		//******
		//System.out.println("******");
		for(int i = 1;i <= 6;i++){
			System.out.print('*');
		}

		System.out.println("\n");

		/*
		******
		******
		******
		******
		*/
		for(int j = 1;j <= 4;j++ ){
			for(int i = 1;i <= 6;i++){
				System.out.print('*');
			}
			System.out.println();
		}

		/*			i(行号)		j(*的个数)
		*			1			1
		**			2			2
		***			3			3
		****		4			4
		*****		5			5
		*/

		for(int i = 1;i <= 5;i++){//控制行数
			for(int j = 1;j <= i;j++){//控制列数
				System.out.print("*");
			
			}
			System.out.println();
		}
		
		/*			i(行号)		j(*的个数)   规律:i + j = 5 换句话说:j = 5 - i;
		****		1			4
		***			2			3
		**			3			2
		*			4			1
		*/	

		for(int i = 1;i <= 4;i++){
			for(int j = 1;j <= 5 - i;j++){
				System.out.print("*");	
			}
			System.out.println();
		}

		/*
		*
		**
		***
		****
		*****
		****
		***
		**
		*
		*/

		//略

/*

----* 
---* * 
--* * * 
-* * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    * 

*/

	//上半部分


	//下半部分
		
	}
}

119.Java基本语法-嵌套循环的使用2

120.Java基本语法-嵌套循环练习:九九乘法表

/*
嵌套循环的应用1:

九九乘法表
1 * 1 = 1
2 * 1 = 2  2 * 2 = 4
。。。
9 * 1 = 9 。。。 9 * 9 = 81


*/
class NineNineTable {
	public static void main(String[] args) {
		
		for(int i = 1;i <= 9;i++){
			
			for(int j = 1;j <= i;j++){
				System.out.print(i + " * " + j + " = " + (i * j) + "  ");
			}

			System.out.println();
		}
	}
}

121.Java基本语法-质数输出的实现方式一

/*
100以内的所有质数的输出。
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

最小的质数是:2
*/
class PrimeNumberTest {
	public static void main(String[] args) {
		
		boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值

		for(int i = 2;i <= 100;i++){//遍历100以内的自然数
			
		
			for(int j = 2;j < i;j++){//j:被i去除
				
				if(i % j == 0){ //i被j除尽
					isFlag = false;
				}
				
			}
			//
			if(isFlag == true){
				System.out.println(i);
			}
			//重置isFlag
			isFlag = true;
		
		}
	}
}

122.Java基本语法-质数输出的算法优化一

/*
100000以内的所有质数的输出。实现方式一
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

对PrimeNumberTest.java文件中质数输出问题的优化
*/
class PrimeNumberTest1 {
	public static void main(String[] args) {
		
		boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
		int count = 0;//记录质数的个数

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long start = System.currentTimeMillis();

		for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
			
			//优化二:对本身是质数的自然数是有效的。
			//for(int j = 2;j < i;j++){
			for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除
				
				if(i % j == 0){ //i被j除尽
					isFlag = false;
					break;//优化一:只对本身非质数的自然数是有效的。
				}
				
			}
			//
			if(isFlag == true){
				//System.out.println(i);
				count++;
			}
			//重置isFlag
			isFlag = true;
		
		}

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long end = System.currentTimeMillis();
		System.out.println("质数的个数为:" + count);
		System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13

	}
}

123.Java基本语法-质数输出的算法优化二

124.Java基本语法-break和continue的基本使用

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

/*
break和continue关键字的使用
				使用范围			循环中使用的作用(不同点)		相同点
break:			switch-case			
				循环结构中			结束当前循环					关键字后面不能声明执行语句	

continue:		循环结构中			结束当次循环					关键字后面不能声明执行语句



*/
class BreakContinueTest {
	public static void main(String[] args) {

		for(int i = 1;i <= 10;i++){
		
			if(i % 4 == 0){
				break;//123
				//continue;//123567910
				//System.out.println("今晚迪丽热巴要约我!!!");
			}
			System.out.print(i);
		}

		System.out.println("\n");
		//******************************
		
		label:for(int i = 1;i <= 4;i++){
		
			for(int j = 1;j <= 10;j++){
				
				if(j % 4 == 0){
					//break;//默认跳出包裹此关键字最近的一层循环。
					//continue;

					//break label;//结束指定标识的一层循环结构
					continue label;//结束指定标识的一层循环结构当次循环
				}
				
				System.out.print(j);
			}
			
			System.out.println();
		}
	}
}

125.Java基本语法-带标签的break和continue的使用

126.Java基本语法-质数输出的实现方式二


/*
100000以内的所有质数的输出。实现方式二
质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。

对PrimeNumberTest.java文件中质数输出问题的优化
*/
class PrimeNumberTest2 {
	public static void main(String[] args) {
		
		
		int count = 0;//记录质数的个数

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long start = System.currentTimeMillis();

		label:for(int i = 2;i <= 100000;i++){//遍历100000以内的自然数
			
			for(int j = 2;j <= Math.sqrt(i);j++){//j:被i去除
				
				if(i % j == 0){ //i被j除尽
					continue label;
				}
				
			}
			//能执行到此步骤的,都是质数
			count++;
		
		}

		//获取当前时间距离1970-01-01 00:00:00 的毫秒数
		long end = System.currentTimeMillis();
		System.out.println("质数的个数为:" + count);
		System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13

	}
}

127.Java基本语法-项目一的演示
128.Java基本语法-项目一中Utility工具类的说明
129.Java基本语法-项目一整体框架的搭建
130.Java基本语法-项目一退出功能的实现
131.Java基本语法-项目一收支明细功能的实现
132.Java基本语法-项目二登记收入功能的实现
133.Java基本语法-项目一登记支出功能的实现

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hvitur

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值