Javase学习笔记
Day01
2023年2月20日
18:10
(一)第一个java程序
注意:
1.Java程序严格区分大小写
2.java程序中使用的是英文半角符号
public class HelloWorld(该部分与文件名相同){
public static void main(String[] aegs){
System.out.println("你好 世界");
}
}
在当前路径上输入cmd
或者
![](https://i-blog.csdnimg.cn/blog_migrate/3c01bbfdab7e2d685239c5e95fcc5093.png)
c: 进入到c盘
d:进入到d盘
cd:进入
cd/ :回退到
javac:主要做编译
Java:主要做运行
在当前路径上输入cmd
执行javac 文件名.java,对源码进行编译
在输入Java HelloWorld即可
若出现中文乱码现象将.Java文件保持类型改变,改为 ANSI
(二)Java程序的运行过程
2023年2月20日
19:09
源代码:由程序员编写的,使用各种编程语言完成,还没有经过处理的程序文本
编译执行:把源代码每一条指令编译成机器语言,最终生成二进制文件。精力花费在编译的过程,而一旦编译完成后,运行的效率很高。
解释执行;只有在执行的时候,将源代码一行一行的解释成机器语言。
Java 是一种比较特殊的语言,半编译半解释执行
![](https://i-blog.csdnimg.cn/blog_migrate/654bff8c4d64ec3410f11b66c4d2144b.png)
println:换行打印,其中 ln代表换行
string:字符串,当声明一个字符串变量时,便可以在里面储存数据。
args:参数
游戏欢迎界面
![](https://i-blog.csdnimg.cn/blog_migrate/5b09d3a71d70b4213778c3e15c268eb6.png)
Day02
2023年2月20日
19:36
集成开发环境(IDE)
NetBean
Jbuilder
Eclipse
Intellij IDEA(现在多用)
java基本语法
在IDEA中 main 可以用快速引出 public static void main(String[] args){}框架
sout可以快速引出System.out.println();框架
2.1注释
2.1.1用法
(1)对源代码的说明,不参加程序的编译
(2)做代码删减的调试
2.1.2分类
单行注释 // 单行注释快捷键 ctrl+/
多行注释 /* */ 多行注释快捷键 ctrl+shift+/
移动代码 shift+alt+上/下
复制当前行 ctrl+d
文档注释 /** javadoc 生成说明文档 html
*/
以/开始 中间每一行开头一个 最后以/结尾
2.2变量
2.1.2 变量的概念
在内存中分配一块地址,来储存各种不同类型的数据。
2.1.3 变量的使用
变量必须先声明,才能使用
声明变量时,要指定变量的类型(基本数据类型8种,引用类型)
变量具有作用范围。以语句范围作为标准,同一个语句块中,变量名不能相同
变量在声明时可以没有初始值,使用时必须是有值的
JDK以后 Var 不是数据类型 是声明变量的一个指令
声明变量后必须赋值
即 var 变量名=值(可以是整数也可以是小数)
2.3标识符
用来给类,变量,方法,接口,对象,自定义数据类型的标识
2.3.2命名规则
标识符是由任意顺序的大小写字母,数字,下划线,美元符号组成的
标识符不能以数字开头
标识符是区分大小写的
标识符没有长度的限制
标识符中间不能有空格
标识符不能是Java的关键字
2.4关键字
2.4.1概念
java关键字是事先定义好的,对Java编译器有特殊含义的标识符,是编译器和程序员的一个约定,用来表示一种数据类型或者是数据结构,或者是操作指令等等。关键字不能作为用户自定义标识符使用
关键字列表
Java中默认的整数类型为int类型,默认的浮点数类型为double类型
long后缀加L,float类型后缀加f
2.5 分隔符
2.5.1概念
用来分隔程序代码的,要求任意两个相邻的标识符,数字,关键字或语句之间,必须至少有一个分隔符,让程序编译器能够识别
2.5.2分类
;分号:用来终止一个语句
,逗号:一次可以声明多个变量
.原点:用作包名的划分,用作引用变量或方法
{}大括号:用来包括程序类,语句块,方法,初始化数组值
[]中括号:一次可以声明多个变量
()小括号:1)改变运算优先级 2)定义方法参数 3)强制转换
空白:空格换行符制表符
2.5.3计算机中的存储
bit:二进制类,一个bit,存储一个0或一个1,是计算机运算的最基础单位
byte:字节,计算机文件大小的基础单位
1byte=8bit
十进制转二进制
例:10
![](https://i-blog.csdnimg.cn/blog_migrate/1b6da205049246fb738ef0e5e621da26.png)
二进制转十进制
例:1010
![](https://i-blog.csdnimg.cn/blog_migrate/b358f7de2fb8e2b64fcbf1296ad07095.png)
二进制:0B或0b开头
八进制:0开头
十六进制:0X或0x开头
![](https://i-blog.csdnimg.cn/blog_migrate/355d47420959b588ea107b5a22a03ac9.png)
2.5.4 八种数据类型
数字类型(整数类型,浮点类型),字符类型,逻辑类型(布尔类型)
![](https://i-blog.csdnimg.cn/blog_migrate/3a59e4b653306c3f85512adc74e85ce2.png)
long后面位数太多加后缀 L
![](https://i-blog.csdnimg.cn/blog_migrate/fe51754a63bc8737d42268016d8e80bd.png)
注意不要比较float和double类型
public class Float_double {
public static void main(String[] args) {
float f=3.14f;
double d=3.14d;
System.out.println(f);
System.out.println(d);
System.out.println(f == d);
}
}
如果是浮点数,默认情况下,是double类型的
float类型必须后缀 f 或 F
2.5.4.1 数据类型转换
自动转换:小的数据类型向大的数据类型转换,或者整数类型转换成浮点数类型,都是可以自动实现的。
强制转换;大的数据类型向小的数据类型转换,或者浮点数要转换成整数,需要使用强制转换。要在转换类型加括号,如果是浮点数转整数,直接去掉小数点,只保留整数(不考虑四舍五入的情况)
2.5.4.2 原码,反码,补码
二进制
正数(三码合一)
原码和补码相同
1 :0000 0001
负数:
-7
原码:1000 0111
反码原符号位不变,其他按位取反(0->1,1->0)第一位表示符号
1111 1000
补码:反码+1
1111 1001
130;原码,反码,补码相同
int储存类型
00000000 00000000 00000000 10000010
byte类型转换
10000010
符号:1为负
补码:00000010
反码:00000001
原码:11111110
![](https://i-blog.csdnimg.cn/blog_migrate/a9ab6eb81abe26ec002b01c5edaff6e6.png)
Java中默认的整数类型为int类型,默认的浮点数类型为double类型
long后缀加L,float类型后缀加f
![](https://i-blog.csdnimg.cn/blog_migrate/e7076ebb51316199302fc5c2adb5913b.png)
2.5.4.3 基本的运算法则
加法:+
减法:-
乘法:*
除法:/ 整数除法,直接去掉小数点后面的数字,只保留整数,不做四舍五入处理
求余数取模:%
2.5.4.4 从键盘接收
![](https://i-blog.csdnimg.cn/blog_migrate/2d8322c5ee81da31e98ee8bb5d11b5e8.png)
Day03
2023年2月22日
12:27
基本数据类型:字符型,逻辑型
类别 | 说明 | 长度 | 默认值 |
char | 字符型 | 16位(2字节) | 、u0000 |
boolean | 逻辑型(布尔类型) | flase |
1.字符型 char
Char c='a';
要求:
使用单引号,只能有一个字符(可以是数字,字母,汉字,符号或其他语言)
可以与ASCII码转换
每一个bit(字节)有0和1两种状态,一个byte可以组合出256种状态。用ASCII码来描述英文字符和8位二进制数对应的关系。ASCII一个定义了128个字符。只使用了1个字节的后7位,最前面的一位统一为0。
![](https://i-blog.csdnimg.cn/blog_migrate/a9e0910f52e6eade758f428d1f198af3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/961ad2ebc0e20ba9df5dd8b4def5dc4e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c6eb071c6152f4abc361c3e6a4d36a9a.png)
2.布尔类型
![](https://i-blog.csdnimg.cn/blog_migrate/0eb03c049d3bf3113395ac815a8f912c.png)
public class BooleanTest{
public static void main(String[] args){
boolean b=true;
boolean b1=false;
int x=10;
int y=5;
//boolean z=x<y;//false
boolean z=x>y;//true
System.out.println(z);
}
}
3.字符串
不是基本数据类型,是一种引用类型
使用string来声明
特殊转义字符
![](https://i-blog.csdnimg.cn/blog_migrate/cad78540ad8ffb3d70b0acbb8ac727c2.png)
4.字面量和常量
字面量:表达的信息如字面所示,程序源码直接给出的一个值,诸如:整数,浮点数和字符串
常量:不可变的
字面量常量
定义的常量:使用final关键词来修饰,不能被重新赋值
5.编码风格
驼峰式编码风格
1.类名:首字母大写
一个单词组成,首字母大写,后面全部小写 Student Teacher
两个或两个以上单词组成的,每个单词首字母大写,其他小写 Teacher Name
2.变量名, 包名,方法名:
1个单词组成,全部小写 a b c nama student
两个或两个以上单词组成的,第一个单词全部小写,后面每个单词首字母大写studentName studentFirstName
3.常量:
一个单词组成,全部大写 NAME
两个或两个以上单词组成的,全部大写,中间建议使用下滑线分隔 USE_NAME_STUDENT_NAME
6.运算符
6.1算数运算符
加+ ,减- ,乘* ,除 / 求余(取模)% 。
任意数据类型和字符串使用+ 运算,+都表示连字符,得到的结果,都是String类型(字符串)
可以用括号()改变优先级。
6.2 自增自减
自增:自身+1
自减:自身-1
i++:整个表达式的结果是i,计算完成后,i自身+1
![](https://i-blog.csdnimg.cn/blog_migrate/1427c6c967856100d6fc5ba5ffae276a.png)
i--:整个表达式的结果是i,计算完成后,i自身-1
++i:先计算i自身+1,再将计算结果赋值给表达式
![](https://i-blog.csdnimg.cn/blog_migrate/7fb0381ed5edda032d5ccef03430d0cb.png)
--i: 先计算i自身-1,在将计算结果赋值给表达式
特殊情况:
![](https://i-blog.csdnimg.cn/blog_migrate/e0dc61fd2bdc14e59d868d8b4f23d842.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2ead61fde247a5ea4367e6ad11d28918.png)
6.3**关系运算符
大于>
大于等于>=
小于<
小于等于<=
等于==
不等于!=
(单个= 表示赋值)
![](https://i-blog.csdnimg.cn/blog_migrate/33ee253a571e1a0c2fdf8e2715a7b3e8.png)
6.4逻辑运算符
逻辑与运算A&B:使用&进行运算,要求符号左右两边都有表达式,并且必须是boolean类型的表达式,如果A
和B表达式都是true,则结果是true,否则是false
逻辑或运算A|B:使用|进行运算,要求符号左右两边都有表达式,并且必须是boolean类型的表达式,如果A和
B表达式其中有一个是true,则结果是true,否则是false
逻辑非运算1A:使用!进行运算,只有右侧有表达式,并且必须是boolean类型的表达式,如果A为true,则结果为
false,如果A是false,则结果是true
逻辑异或运算 A^B:使用八进行运算,只要两边相同,返回false,两边不同,返回true
短路与运算 A&&B:和上面与运算的规则相同,如果左侧表达式为false,则右侧不运算,直接返回结果为false,
如果左侧表达式为true,则右侧再运算
短路或运算A||B:和上面或运算的规则相同,如果左侧表达式为rue,则右侧不运算,直接返回结果为true,如
果左侧表达式为false,则右侧再运算
如果要求右侧表达式,不管在什么情况下,都要计算到,只能使用逻辑与和逻辑或运算,不能使用短路与和短路或
运算
![](https://i-blog.csdnimg.cn/blog_migrate/04a89c16025cd8d6ba5dc0c5a938e488.png)
6.5 按位运算**(**1相当于真 0相当于假)
将数字转化为二进制,按位运算,只能计算整数(字符型可以做转换),不能计算浮点数
按位与运算:使用&符号,两边同时为1,才为1,不然为0
Public classBitwise{
Public static void main(String[]args){
Int x=1;
Int y=2;
System.out.println(x & y);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/520c3b84422ac12b7af4b016c89036f0.png)
按位或运算:使用|符号,两边有一边为1,则运算结果为1,否则为0
![](https://i-blog.csdnimg.cn/blog_migrate/955afac1b950674dd0e4d4059b3ee0ca.png)
按位异或运算:两边使用^符号,两边相同,则结果为0,两边不同,则结果为1
![](https://i-blog.csdnimg.cn/blog_migrate/ad35cf38ddabaf02e82c61408db2f635.png)
不通过第三方变量,将两个值做交换处理
public class Bitwise{
public static void main(String[] args){
intx=8;//00001000
inty=5;//00000101
//不通过第三方变量,将两个值做交换处理
x=x^y;//x=13(00001101)
y=y^x;//y=8(00001000)
x=x^y;//x=5(00000101)
//System.out.println(x^y);//(00001101)13
System.out.println(x+"\t"+y);
}
}
按位取反运算:使用~ 符号,按位取反,如果是0,则取值为1,如果是1,则取值为0
int x=1;//00000001
System.out.println(~x);
//(11111110)补码
//其反码为(11111101)
//原码为(10000010)(-2)
6.6 移位运算
有符号移位
左移位运算:使用<<符号表示,整体将二进制位向左侧移动,右侧补0,相当于乘2
右移位运算:使用>>符号表示,整体将二进制位向右侧移动,左侧补0,右移动移位,
相当于除2
如果移动的位数超过所能表述的长度,则采用求余的方式计算
*例如:如果移动32位时,*32%32=0
*如果移动33位时,*33%32=1
无符号移位
无符号右移位运算:使用>>>符号表示,不考虑正负数的问题
正数移动和右移相同
负数移动不考虑最左侧负号的问题,意义不大
6.7 赋值运算
![](https://i-blog.csdnimg.cn/blog_migrate/2d9f28318183d2bb0bce2725a971e714.png)
![](https://i-blog.csdnimg.cn/blog_migrate/21d6cef206261f3bb7fd6b44ec377091.png)
6.8 三元运算符(条件运算符)
变量=表达式1 ? 表达式2 : 表达式3
不允许 表达式1 ? 表达式2 : 表达式3 单独存在必须赋值给一个变量或放在语句中
表达式1必须是x必须是Boolean类型的值,如果表达式1为true,则整个表达式取值为表达式2,否则为表达式3
6.9 运算符优先级
![](https://i-blog.csdnimg.cn/blog_migrate/39b3199cc69a5a65a73e8187a90f2313.png)
Day04
2023年2月24日
13:29
顺序结构
分支结构(选择结构)
循环结构
![](https://i-blog.csdnimg.cn/blog_migrate/d099b54bb8c3691401115ba4b72e4181.png)
1.选择结构
1.1 if
if(boolean类型表达式){
条件成立,执行代码
}
例如:
public class if_Demo1 {
public static void main(String[] args) {
//从键盘接收一个整数,打印是否是偶数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个整数");
int i=scanner.nextInt();
//boolean b=i%2==0;
if(i%2==0){
System.out.println("是偶数");
}
}
}
1.2 if else
if(boolean类型的值){
成立的条件true,执行这里的代码
}else{
必须和对应的if一起出现,不能单独出现
条件不成立false,执行这里的代码
}
例如:
判断一个数的奇偶
public class If_Else_Demo {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数字");
int i=scanner.nextInt();
boolean b=i%2==0;
if (b){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
猜硬币正反面的游戏
public class If_Else_Demo1 {
public static void main(String[] args) {
//猜硬币正反面的游戏
//获取随机数
double d=Math.random();;//0-1之间的随机小数
d=d*2;//0到2之间的随机小数
int x=(int)d;//0 1
System.out.println("欢迎来到猜硬币游戏");
System.out.println("请猜正反面 0正面 1反面");
Scanner scanner=new Scanner(System.in);
int u= scanner.nextInt();
if(x==u){
System.out.println("猜对了");
}else{
System.out.println("猜错了");
}
}
}
1.3 if elseif else
计算血型
public class If_ElseIf_Dome {
public static void main(String[] args) {
//电脑算命 计算星座 计算属相 计算血型
Scanner scanner=new Scanner(System.in);
System.out.println("请选择血型 1:A型 2:B型 3:O型4:AB型");
int c= scanner.nextInt();
if(c==1){
System.out.println("你是A型血");
} else if(c==2){
System.out.println("你是B型血");
} else if(c==3) {
System.out.println("你是O型血");
} else if(c==4){
System.out.println("你是AB型血");
} else {//容错
System.out.println("选择血型错误");
}
}
}
从键盘录入一个出生月份,反馈是哪个季节
public class If_ElseIf_Dome1 {
public static void main(String[] args) {
//从键盘录入一个出生月份,反馈是哪个季节
Scanner scanner = new Scanner(System.in);
System.out.println("请录入您的出生月份月份");
int month = scanner.nextInt();//春12 1 2/夏3 4 5 /秋6 7 8/冬9 10 11
if (month == 12 || month == 1 || month == 2) {
System.out.println("冬天出生");
} else if (month == 3 || month == 4 || month == 5) {
System.out.println("夏天出生");
} else if (month>=6 && month<=8) {
System.out.println("秋天出生");
} else if (month>=9 && month<=11) {
System.out.println("冬天出生");
} else {//容错
System.out.println("录入月份错误");
}
}
}
1.4嵌套使用
三个数比较大小
public class If_Nested_Demo {
public static void main(String[] args) {
//三个数比较大小
Scanner scanner=new Scanner(System.in);
System.out.println("请输入三个数字比较大小");
int a= scanner.nextInt();
int b= scanner.nextInt();
int c= scanner.nextInt();
if (a>b){
if (a>c){
System.out.println(a+"最大");
}else{
System.out.println(c+"最大");
}
}else{
if(b>c){
System.out.println(b+"最大");
}else{
System.out.println(c+"最大");
}
}
}
}
石头,剪刀,布游戏
public class Game {
public static void main(String[] args) {
//石头,剪刀,布
//0 1 2分别代表 石头,剪刀,布
double d = Math.random();//0-1之间的随机小数
d = d * 3;
int x = (int) d;
Scanner scanner = new Scanner(System.in);
System.out.println("大佬请出拳 0代表石头 1代表剪 2代表布");
int y = scanner.nextInt();
if (y == 0) {
System.out.println("大佬出石头");
//当大佬是石头,系统对三种情况
if (x == 0) {
System.out.println("系统出石头,平局");
} else if (x == 1) {
System.out.println("系统出剪刀,胜");
} else if (x == 2) {
System.out.println("系统出布,负");
}
}
if (y == 1) {
System.out.println("大佬出剪刀");
//当大佬是剪刀,系统对三种情况
if (x == 0) {
System.out.println("系统出石头,负");
} else if (x == 1) {
System.out.println("系统出剪刀,平局");
} else if (x == 2) {
System.out.println("系统出布,胜");
}
}
if (y == 2) {
System.out.println("大佬出布");
//当大佬是布,系统对三种情况
if (x == 0) {
System.out.println("系统出石头,胜");
} else if (x == 1) {
System.out.println("系统出剪刀,负");
} else if (x == 2) {
System.out.println("系统出布,平局");
}
}else{
System.out.println("系统报错");
}
}
}
易错部分:
if或else后面接分号 ;
if...if..的用法和if...else...的用法是不同的
括号的嵌套
1.5 switch case default break
语法:
switch(变量){//变量类型 byte short int char string(JDK7) enum
case 常量1:操作 ;break;
case 常量2:
case 常量3:
default:
}
常量必须是声明的类型,并且不允许有重复值出现
public class switch_Demo1 {
public static void main(String[] args) {
int x=3;
switch (x){
case 1:
System.out.println("走一号路线");
break;
case 2:
System.out.println("走二号路线");
break;
case 3:
System.out.println("走三号路线");
break;
default:
System.out.println("另辟蹊径");
break;
}
System.out.println("走出来了");
}
}
switch case简洁用法(当我们条件分支下执行的代码相同时,可以合并处理)
public class Switch_Month {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入出生月份");
int month= scanner.nextInt();
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("录入信息错误");
}
}
}
witch case简洁用法
public class Calc {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入第一个操作数");
int x= scanner.nextInt();
System.out.println("请输入第二个操作数");
int y= scanner.nextInt();
System.out.println("请录入操作符:+ - * / ");
String r="";
String op= scanner.next();//从键盘接收一个字符串
switch (op) {
case"+":
r=x + "+" + y + "=" + (x + y);
break;
case"-":
r=x + "-" + y + "=" + (x - y);
break;
case"*":
r=x + "*" + y + "=" + (x * y);
break;
case"/":
if (y!=0) {
r=x + "/" + y + "=" + (x / y);
}else {
r="除数不能为0";
}
break;
default:
r="操作符错误";
}
System.out.println(r);
}
}
包的概念:类似与磁盘上的目录,写法是公司互联网地址的反向写法。在程序中,会出现打包语句
Package com.coder.xxxx;
打包语句,必须是Java类的最上面的代码除了空白和注释,不允许有其他代码出现
Day05
循环结构
1.while循环
while(boolean类型){
当条件成立,反复执行这一段代码(循环体)
}
public class WhileTest1 {
public static void main(String[] args) {
int i=1;
//死循环
while(i<=10){
System.out.println(i);
i++;//i==i+1;
}
}
}
break用法:表示退出当前循环,后面的语句不在执行。一般都放在条件分支中
2.do while循环
直到型循环
不管如何,都会执行一次循环体
语法:
do{
循环体
}while(boolean类型值);//后面有分号
算1+2+3+...+100
public class DoWhileTest2 {
public static void main(String[] args) {
int i=1;
int s=0;//累加器
do{
s=i+s;
i++;
}while(i<=100);
System.out.println(s);
}
}
猜价格游戏
public class Game_GuessNum {
public static void main(String[] args) {
int p=(int)(Math.random()*100)+1;
Scanner scanner=new Scanner(System.in);
System.out.println("请录入价格");
int u= scanner.nextInt();
int s=1;//计数器
do{
if (p>u){
System.out.println("猜小了");
}else if(p<u){
System.out.println("猜大了");
}else{
System.out.println("猜对了");
break;
}
System.out.println("请重新猜一个价格");
u= scanner.nextInt();//为u重新赋值,让用户重新猜一次
s++;
}while(true);
if (s<=3){
System.out.println("天才");
} else if (s>3 && s<=7) {
System.out.println("正常");
}else{
System.out.println("弱智");
}
}
}
3.for 循环
for(表达式1;表达式2;表达式3){
循环体
}
//for循环执行的过程
//1.执行表达式1,赋初始值
//2.执行表达式2,条件判定(boolean类型的值)如果条件不成立,就退出循环
//3.如果表达式2条件成立,执行循环体
//4.执行表达式3,让循环条件变动
//5.从第2步开始循环
for(int i=1;i<=10;i++){
System.out.println(i);
}
//躲7游戏 组织100个人,从1开始数到100,所有7和7的倍数,
// 以及数字中包含7字样的,个位数是7 i%10==7 十位数是7
// 全部输出"过"
//其他正常数字输出
//第一个人,从1-9之间随机从键盘接收一个数
public class Game {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请说出一个1到9之间的数字");
int x= scanner.nextInt();
while (true){
if (x>=1 && x<=9) {
break;
}
System.out.println("请重新录入数字");
x= scanner.nextInt();
}
for(int i=x;i<=100+x;i++){
if(i%7==0 || i%10==7 || i/10==7){
System.out.println("过");
}else{
System.out.println(i);
}
}
}
}
for循环的特殊用法1
for(;;){
System.out.println(i++);
if(i>=10){
break;
}
}
for循环的特殊用法2
for(int i=1,j=5;i<=5;i++,j--){
System.out.println(i+"\t"+j);
}
for循环的特殊用法3
//如果控制两种不同类型的变量,需要在外面做声明处理
int i=0;
double j=0;
for(i=1,j=5;i<=5;i++,j--){
System.out.println(i+"\t"+j);
}
快速生成for循环的处理方法
fori从0到指定值循环
100.fori 从0-100循环
100.forr从100-0循环
for循环变量的初始,最好在for循环中声明,可以遵循迪米特法则
//迪米特法则: don't talk to strange
//最少知识原则:耦合度越低,程序员越容易扩展,设计越合理
//高内聚,低耦合
4.continue,break
break:退出当前循环,break后面的语句不执行
continue:结束本次循环,continue后的语句本次不再执行,从循环的下一次开始
5.循环嵌套
假设有36块砖,由36个人搬走,男人一次搬4块砖,女人一次搬3块砖,2个小孩抬1块砖
要求36人,一次性将36块砖搬走,问:男人,女人,小孩分别有多少人
x+y+z=36
4x+3y+0.5z=36
穷举法(暴力破解)
public class ForNested {
//36*36*36
public static void main(String[] args) {
for (int x = 1; x <= 9; x++) {//x=1
for (int y = 1; y <= 12 ; y++) {//y=1
for (int z=2; z <=36-x-y; z+=2) {//z=1 z=36
if(x+y+z==36 && 4*x+3*y+0.5*z==36){
System.out.println("男人:"+x);
System.out.println("女人:"+y);
System.out.println("小孩:"+z);
}
}
}
}
}
}
打印矩形
public class ForPrintGraphic {
public static void main(String[] args) {
for (int i =1 ; i <= 3; i++) {//i=1
for (int j = 1; j <=20; j++) {//j=1~10
System.out.print("*");
}
System.out.println();//换行
}
}
}
打印三角形
public class ForPrintGraphic {
public static void main(String[] args) {//i=1
//打印正三角形
/*for (int i = 1; i <=5; i++) {
for (int j = 1; j <=i ; j++) {
System.out.print("*");
}
System.out.println();
}*/
//打印倒三角形
for (int i = 1; i <=5 ; i++) {
for (int j = 5; j >=i ; j--) {
System.out.print("*");
}
System.out.println();
}
//打印矩形
/*for (int i =1 ; i <= 3; i++) {//i=1
for (int j = 1; j <=20; j++) {//j=1~10
System.out.print("*");
}
System.out.println();//换行
}*/
}
}
6.带标号的continue和break
public class ContinueDemo1 {
public static void main(String[] args) {
a://加一个标号 标号可以任意取名字(符合标识符的命名规则)
for (int i =1; i <=10; i++) {
for (int j = 1; j <=5 ; j++) {
if(j==4){
break a;//退出标号循环
//continue a;//结束本次循环,从标号循环的位置执行下一次循环
}
System.out.print(j+"\t");
}
System.out.println();
}
}
}