当前位置:   article > 正文

Java基本语法(初学者必看,值得收藏)_java基础语法知识

java基础语法知识

此文记录自己学习Java基本语法过程中的笔记,用于自己复习。因初次学习,难免有不恰当的地方,仅供各位读者参考。

一、计算机基础

1.计算机组成

硬件

​     输入设备

​         接受外部的数据,指令

​         键盘、鼠标、摄像头、扫描仪,麦克风

​     输出设备

​         显示、输出内部的数据

​         显示器、音箱、打印机

​     存储设备

​         内存

​             特点:瞬时存储、易失性、存取速度快

​         外存

​             硬盘、U盘、等

​             特点:永久存储、存储速度慢

​         存储单位:bit位 b

​             字节byte B 1B=8b

             KB 1KB=1024B

​             MB 1M=1024KB

​             GB 1G=1024M

​             TB

​     处理器CPU

​         控制器:分析指令,分配协调其它组件工作

​         运算器:运算

​ 这些组件是协调进行工作。输入设备–控制器–运算器+存储器–>输出设备

软件

​     系统软件:Windows,Mac,Linux,Android

​         图行化的操作系统

​         DOS:Win+R–》cmd启动

​             目录切换:cd (change dir)

​             cd 目录路径名

​             相对路径:从当前路径开始

​             绝对路径:从某个盘符的跟路径开始

​             回到上一级 cd …
​             跨盘符:盘符名:

​         注意事项:可以使用Tab进行提示补全

​             如果路径中含有空格等特殊字符建议路径名加引号

​             不区分大小写

​             借助方向上下键使用历史指令

​     应用软件

​         QQ、微信

2.程序

生活中的程序:为了解决某个问题,进行一系列的有序动作

计算机中的程序:为了让计算机帮我们解决某个问题,而编写的一系列有序指令集

3.编程语言

机器语言:01010111100000

​     特点:可读性不高,维护性;执行效率高

汇编语言:借助一些助记符来编写程序,add 1,1 result

​     特点:可读性有改善;代码很冗长,要求对计算机的硬件组成非常了解。运行速度也比较快

高级语言:a=1 b=2 c=a+b

​ C语言是鼻祖,C++,C#,Python,Java等

​ 编译型语言:源代码—经过编译器的编译—可执行文件 翻译家:整体翻译-----Java

​ 解释型语言:源代码—经过解释器的解释—从上到下逐行解释执行 同声传译

二、Java

1.Java简介

编译型高级语言、面向对象、跨平台(跨操作系统)、分布式

jvm: java virtual machine java虚拟机

2.发展历史

1996年1月,Sun公司发布了Java的第一个开发工具包*(JDK 1.0)*

1998年12月8日,第二代Java平台的企业版J2EE发布。

J2ME(Java2 Micro Edition,Java2平台的微型版):移动端,现在被Android替代

J2SE(Java 2 Standard Edition,Java 2平台的标准版):提供核心功能

J2EE(Java 2Enterprise Edition,Java 2平台的企业版)

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。

2009年,甲骨文公司宣布收购Sun

2014年,甲骨文公司发布了Java8正式版

3.JDK的安装和配置

JDK

java development kit java程序开发包,供开发用

jre

java runtime environment java运行时环境 ,供java程序

未配置环境变量,会提示

C:\Users\yy>javac -version
‘javac’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。

配置环境变量:就是为了在任何目录下都能使用bin目录下的指令

搜索:编辑环境变量配置,在系统变量中

新增:JAVA_HOME:C:\Program Files\Java\jdk1.8.0_333

添加Path: %JAVA_HOME%\bin

CLASSPATH:可以暂不配

4.第一个Java程序

1)写源程序(后缀名java)

public class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World!!!")System.out.println("Hello World!!!")}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2)编译(后缀名是class)

javac 文件名.java

编译成了文件名.class

3)运行

java 文件名

注意点:

1、文件名要与public修饰的class 名一致

2、要用英文命名,每个单词首字母大写,驼峰法,见名知意

3、乱码是编码格式导致的

4、main方法是java程序的入口,有四要素public,static,void,String[]

5、java中开始的大括号一般在行末,结束的大括号跟这个层级对齐

6、每个指令以分号结束

三、Java基础

1.输出

在控制台输出一定的内容,然后换行

System.out.println("hello world"); 
  • 1

在控制台输出一定的内容,不换行

System.out.print("hello world");
  • 1

输出一个空行

System.out.println();
  • 1

练习

太棒了!

马上就端午了!

回家!

转义字符

转义字符描述举例
\""System.out.println(“\”");
\\\System.out.println(“\\”);
\t一个Tab键的距离System.out.println(“你好\t张三”);
\n换行System.out.println(“你好\n张三”);

练习:打印购物清单

2.代码注释

作用:解释代码,是给程序员看的,方便维护

​ 编译器不处理注释,所以不影响程序的执行效率

​ 提倡代码注释多多益善

分类:

​ 1、单行注释。//

​ 2、多行注释。/* */

​ 3、文档注释。/** */

3.变量

1).概念

我有10块钱,吃早饭花6元,还剩多钱?

1、开空间,存储数据

2、CPU运算,更新空间的值

变量:内存中的一块空间

​ 这块空间中存储的值是可以发生的变化的

2).变量三要素:

​ 变量值:空间存储的数据;

​ 变量类型:存储数据的类型,来决定分配多大的空间

​ 变量名:存储空间的别名,快速地找到取出其中的数据

3).数据类型:

基本数据类型

数值:整数

​ int 4个字节 32位 [-231-231-1]===[-2,147,483,648,2,147,483,647]

​ byte 1个字节

​ short 2个字节

​ long 8个字节

​ 小数/浮点数

​ float 4个字节

​ double 8个字节

字符型

​ char 存储单个字符 使用单引号引起来 如 ‘男’ ‘1’ 2个字节

​ ‘0’----48 ‘A’----65 ‘a’-----97

布尔型

​ boolean 真true 假 false

引用数据类型

​ 字符串

​ String 存储0-N个字符 使用双引号引起来 如“helloworld”

怎么确定数据类型:

​ 手机号码?字符串;

​ 身份证号号码?字符串;

​ 订单号?字符串

​ 银行存款¥1,234,456元?double

​ 不需要计算,可以存储为字符串。

4).变量名

​ 命名规范:

​ 1)只能使用$,字母,数字,_,不能以数字开头

​ 2)不能使用关键字。public class static void String

​ 3) 要见名知意 age name score

​ 4)使用驼峰法(Camel命名法),第一个单词首字母小写,其后每个单词首字母大写:stuJavaScore

​ 5)区分大小写 age Age是两个不同的变量

5).变量的使用:

1、申请空间(声明):数据类型 变量名;

​ int money;

​ double score;

2、存储数据(赋值)

​ money = 10;

可以合成一步:数据类型 变量名=值;

​ String name=“王明”;

​ boolean flag=true;

3、使用变量

​ System.out.println(name);

注意:变量必须先声明,后赋值,再使用。

练习:

输出MP3的数据:

品牌:漫步者

价格:299.9

颜色:白

库存:100

是否首发:false

输出某个学生的信息

姓名:王丽

性别:女

身高:165.8

年龄:18

常住地是否是西安?true

4.常量

1).概念

​ 常量:内存中的一块空间,空间中存储的数据不能改变

2).常量的使用

​ 语法:final 数据类型 变量名=值;

​ 命名规则:全部用大写,单词之间用_做分隔,如USER_ROLE_VIP

​ 字面常量:1,234,‘a’,“abc”,false

​ 默认的数据类型:整数默认的数据类型是int,如果给long类型赋值,需要添加l/L,建议大写L;

​ 小数默认的数据类型是double,如果给float类型赋值,需要添加f/F;

​ 使用场景:1、固定不变的量建议使用常量,PI,WEEK_DAY

​ 2、特殊的含义,STATE_ON,STATE_OFF

5.运算符

1).赋值运算符

语法:变量名=表达式;

运算规则:从右往左

int a=12;

int b=a;

int c=a+1;

从键盘输入数据

//导包

import java.util.Scanner;

//初始化scanner

Scanner scanner=new Scanner(System.in);

//接收一个整数

int a=scanner.nextInt();

//接收一个double类型的数据

scanner.nextDouble();

//接收一个字符串
String str=scanner.next();

2).算术运算符

+ - * / %

//整除,整数/整数,结果一定是整数

int a=3/2 //结果是1

//求余 %

int b=13%2;

拆分一个三位数

int num2=986; // 98 6/// 9 86
int bai2=num2/100;
int ge2=num2%10;
//int shi2=num2/10%10;
int shi2=num2%100/10;
System.out.println(num2+"的百位数字是:"+bai2);
System.out.println(num2+"的十位数字是:"+shi2);
System.out.println(num2+"的个位数字是:"+ge2);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

单目运算符:自增自减运算符++,–

++

int a=1;

a++; //a=a+1

++在后,先用再+

++在前,先+再用

		int a=1;
		//a=a+2;
		a+=2;
		System.out.println(a);

		System.out.println("-------");
		int b=12;
		//b++;
		//++b;   //b=b+1;
		//b--;
		--b;
		System.out.println(b);

		System.out.println("-------");
		int c=5;
		// ++在后,先用再+
		//--在后,先用再-
		//System.out.println(c++);
		int d=c++;
		System.out.println(c);
		System.out.println(d);

		System.out.println("-------");
		//++在前,先+再用
		//--在前,先-再用
		int x=15;
		//System.out.println(++x);
		int y=++x;
		System.out.println(x);
		System.out.println(y);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

3).关系运算符

> < >= <= == !=

关系表达式的结果是boolean

== 等于

注意:关系表达式不要连写 1<a<6

		int num1=23;
		int num2=23;
		boolean flag=num1<num2;
		System.out.println(flag);
  • 1
  • 2
  • 3
  • 4

double类型在底层是不精确存储,不建议进行==比较

		double d1=1.0;
		double d2=1.0000000000000000000123;
		System.out.println(d1==d2);
  • 1
  • 2
  • 3

字符串之间的等值比较不能用==,而要用.equals()

		String str1="abc";
		String str2="abc";
		System.out.println(str1==str2);
		Scanner sc=new Scanner(System.in);
		String str3=sc.next();
		System.out.println(str1==str3); //比较字符串的地址是否一致
		boolean f=str1.equals(str3);  //比较字符串的值是否一致
		System.out.println(f);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

char类型在底层是数值存储,也可以进行大小比较

		char c='a';
		char d='b';
		System.out.println(c==97);
		System.out.println(c<d);
  • 1
  • 2
  • 3
  • 4

练习

从键盘上输入一个数,输出是否是偶数?

4).逻辑运算符

链接多个条件/关系表达式

&& 逻辑与 两个条件同时成立,整个表达式才成立 :同真则真,有假则假

|| 逻辑或 两个条件只要有一个成立,则整个表达式成立 :有真则真,同假则假

支持短路,即第一个表达式的结果就可判断整个表达式的结果,则第二个表达式就无需判断

!取反

		int num1=15;
		int num2 =1;
		boolean f=(num1<10)&&(num2>2);
		System.out.println(f);
		boolean f2=(num1<10)||(num2>2);
		System.out.println(f2);

		//&& || 支持短路
		boolean f3=(num1<10)||(num2++<3);
		System.out.println(f3);
		System.out.println(num2);
		
		//取反
		boolean f4=!f3;
		System.out.println(f4);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

练习

输入一个数,判断是否是个四位整数

5).位运算符

<< 左移:相当于乘法,乘以2的N次方

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZVwyfHrh-1654775053762)(D:\AF2205\typora_img\image-20220602121405988.png)]

		int a=5;
		int b=5<<1;
		System.out.println(b);  //结果是10
  • 1
  • 2
  • 3

>>右移:相当于整除,除以2的N次方

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6yVHmBl7-1654775053768)(D:\AF2205\typora_img\image-20220602121815120.png)]

		int c=5>>1;
		System.out.println(c);
  • 1
  • 2

& 按位与 :同1则1,遇0则0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJrbuFDJ-1654775053769)(D:\AF2205\typora_img\image-20220602121608471.png)]

		int m = 5;
		int n=13;
		System.out.println(m&n);
  • 1
  • 2
  • 3

​ 逻辑运算 (3>7)&(2<8) 不支持短路

		int m = 5;
		int n=13;
		System.out.println((m>6)&(n++>4));
		System.out.println(n);  //n=14
  • 1
  • 2
  • 3
  • 4

​ 判断奇偶数:

		int x=20;
		boolean f=(x&1)==0;
		System.out.println("是偶数吗?"+f);
  • 1
  • 2
  • 3

|按位或:有1则1,同0则0[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9hv7sCJ-1654775053770)(D:\AF2205\typora_img\image-20220602122037618.png)]

		int num1=5;
		int num2=13;
		System.out.println(num1|num2);	//13	
  • 1
  • 2
  • 3

​ 逻辑运算,不支持短路(略)

​ 取一个数最近的偶数:或1,最低位置1,然后-1,最低位就变成了0

		int num3=25;
		int num4=(num3|1)-1;
		System.out.println((num4&1)==0);
  • 1
  • 2
  • 3

^ 按位异或 :不同为1,相同为0

​ 对同一个数字异或两次,可以获取原数字

​ 可用于加密和解密

		int num5=5;
		int num6=13;
		System.out.println(num5^num6); //8
		System.out.println(num5^num6^num6); //5
  • 1
  • 2
  • 3
  • 4

6).优先级

先运算,再比较,然后连接,最后赋值

小括号的优先级最高,建议添加小括号增强代码的可读性。

(2*(1+1)+23)*2

7).交换算法

int a=5;int b=8;实现a,b两个数的交换

方法一:申请临时变量

temp=a;

a=b;

b=temp;

方式二:加减法

a=a+b;

b=a-b;

a=a-b;

方式三:异或法

a=a^b;

b=a^b;

a=a^b;

四、程序流程结构

1.顺序结构

从上往下依次执行

		Scanner sc=new Scanner(System.in);
		System.out.println("请输入您的用户名:");
		String name=sc.next();
  • 1
  • 2
  • 3

2.选择结构

使用场景:需要先判断条件,再决定如何执行。

1).if结构

简单if

​ 语法:

​ if(条件表达式){

​     执行语句;

​ }

​ 条件表达式:结果是boolean,可以是变量,关系表达式,逻辑表达式等

​ 执行流程:先判断条件表达式的值,如果为true,执行语句;否则继续执行结构后的其它语句

​ 使用场景:只有一个分支

​ 案例:

	int a=24;
	int b=52;
	//如果a>b;输出a>b,否则什么都不输出
	if(a>b){
		System.out.println("a>b");	
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

​ 练习:有两个数,输出较大的那个数

	System.out.println("----------输出两个数中较大的那个-----");
	int m=120;
	int n=25;
	if(m>=n){
		System.out.println("较大的数是"+m);
	}
	if(m<n){
		System.out.println("较大的数是"+n);
	}
	
	/*
	int max=m;
	if(max<n){
		max=n;
	}
	System.out.println("较大的数是"+max);
	*/		
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

if…else:

​ 语法:

​ if(条件表达式){

​ 执行语句1;

​ }else{

​ 执行语句2;

​ }

​ 执行流程:先判断条件表达式的值,如果为true,执行语句1;否则就执行语句2。

​ 使用场景:两路分支。

​ 案例:

	System.out.println("----------输出两个数中较大的那个-----");
	int m=120;
	int n=25;
	if(m>=n){
		System.out.println("较大的数是"+m);
	}else{
		System.out.println("较大的数是"+n);
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

​ 练习1:键盘中输入密码(正确的密码是123),输出密码正确或密码错误。

​ 练习2: 从键盘上输入一个数,判断奇偶性。

多重if结构

​ 语法:

​ if(条件1){

​     语句1;

​ }else if(条件2){

​     语句2;

​ }else if(条件3){

​     语句3

​ }…

​ else{

​     语句4;

​ }

​ 执行流程:先判断条件1,如果为true,则执行语句1;

​ 否则就判断条件2,如果为true,则执行语句2;

​ 否则就判断条件3,如果为true,则执行语句3;

​ 否则就执行语句4.

​ 使用场景:一个维度连续区间的多路分支。

​ 案例:

		//猜数
		//> < = 
		int num=18;
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		if(n>num){
			//>
			System.out.println("猜大了");	
		}else if(n<num){
			System.out.println("猜小了");	
		}else{
			//==
			System.out.println("猜对了");	
		}
	
		//根据成绩评等级
		//0-60 差  60-80中 80-90良 90-100 优
		int score=58;
		if(score<60){
			System.out.println("差");
		}else if(score<80){
			System.out.println("中");
		}else if(score<90){
			System.out.println("良");
		}else{
			System.out.println("优");
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

​ 练习:根据积分输出可以享受的折扣。[0-2000] 9折 (2000,4000]8折,(4000,6000]7折,(6000,)5折

嵌套if结构

​ 语法:

​ if(条件1){

​     if(条件2){

​         语句1;

​     }else{

​         语句2;

​     }

​ }else{

​     语句3;

​ }

​ 执行流程:先判断条件1,如果条件1不成立,则执行else;

​ 如果成立,就判断条件2是否成立,如果成立,语句1;否则就执行语句2。

​ 使用场景:多个维度的多路分支。

​ 案例:

		// 100比赛,时间少于10s就可以进入决赛,否则淘汰
		//如果性别是男,就进入男子决赛;否则就进入女子决赛
		int time=12;
		char sex='女';
		if(time<10){
			if(sex=='男'){
				System.out.println("恭喜进入男子决赛");
			}else{
				System.out.println("恭喜进入女子决赛");
			}
		}else{
			System.out.println("谢谢参与");
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

​ 练习:超市活动,会员消费满200元打7折,不满打9折;非会员消费满300打8折,否则不打折。

​ 键盘输入是否是会员,及消费金额来判断享受折扣。

三目运算符:变量 a = 表达式?值1:值2;

//输出两个数中较大的数 
	int a=120; 
	int b=25; 
	int result=a>b?a:b; 
	String result=a>b?"a大":"b大"; 

	if(a>b) { 
		result=a; 
	}else { 
		result=b; 
	}
	System.out.println("结果是"+result);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2).swich选择结构

第一名----冠军T恤 第二名 -----书包 第三名-----气球 其它-----什么都不奖励

语法:

	switch(表达式) {
	case 常量1breakcase 常量2break;
	case 常量3break;
	default:
		break;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

执行流程:先计算表达式的值,再与case后面的常量进行比较,如果相等,则执行冒号后面到break之
间的代码。
        如果和任何一个case都不匹配,则执行default的代码
使用场景:等值的多分支结构

备注:

1、表达式 结果的类型只能:byte,short,char,int,String(jdk1.7+),枚举
2、case 常量
        常量的数据类型要与表达式的数据类型一致
        常量不能重复
        常量没有先后顺序
3、break 中断指令,跳出switch结构
4、default 表达式和所有的case都匹配不上,就执行其后的语句。和case语句没有先后顺序

		int mingCi=1; 
		switch(mingCi) { 
		case 1: 
			System.out.println("冠军T恤 "); 
			break; 
		case 2: 
			System.out.println("书包 "); 
			break; 
		case 3: 
			System.out.println("气球 "); 
			break; 
		default: 
			System.out.println("什么都不奖励"); 
			break; 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

练习1:

===欢迎登陆学习平台=
1)登录
2)注册
3)退出
=========================
请选择:1
登录

练习2:翻译对应的英文缩写。CN—中国,UK—英国 USA—美国,其它----我也不认识
case穿透:case后面的break省略,则不会和下一个case匹配,直接执行其后的代码,直到碰到
break,这叫做case穿透。有时候我们可以利用case穿透简化代码的编写。

		//晚自习 周一,周三,A老师辅导 周二,周四,B老师辅导,周五,考试,周六周日休息 
		String today="周二"; 
		switch(today) { 
		case "周一": 
		case "周三": 
			System.out.println("欧老师辅导");
			break; 
		case "周二": 
		case "周四": 
			System.out.println("张老师辅导"); 
			break; 
		case "周五": 
			System.out.println("考试"); 
			break; 
		case "周六": 
		case "周日": 
			System.out.println("休息");
			break; 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

练习:1、一三五做面 ,二四六做米饭,周日吃大餐。
           2、根据月份输出该月对应的天数。

3).if和switch嵌套使用

		//输出成绩的优良中差 
		Scanner sc=new Scanner(System.in); 
		System.out.println("请输入你的成绩:[0,100]"); 
		int a=sc.nextInt(); 
		if(a<0||a>10) { 
			System.out.println("输入有误"); 
		}else { 
			switch(a/10) { 
			case 0: 
			case 1: 
			case 2: 
			case 3: 
			case 4: 
			case 5: 
				System.out.println("差"); 
				break; 
			case 6: 
			case 7: 
				System.out.println("中"); 
				break; 
			case 8: 
				System.out.println("良"); 
				break; 
			case 9: 
			case 10: 
				System.out.println("优"); 
				break; 
			default: 
				System.out.println("输入有误"); 
				break; 
			} 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

3.循环结构

场景:重复做的事情
循环的特点:
    循环操作:重复的事情,可以一样的,也可以是有规律的
    循环条件:循环继续的条件,循环结束的条件

1).while

语法:
while(循环条件){
        循环操作;
}
执行流程:先判断循环条件,条件如果成立,就执行循环操作;循环操作执行完成,继续判断条件;
条件如果成立,就执行循环操作;。。。直到条件不成立,循环结束。
特点:先判断,再执行
如果条件不成立,循环操作可能一次都不执行
案例:

		//输出********** 
		//循环操作:输出* sout(*) 
		//循环条件: 循环变量i i=[1-10] 循环变量需要更新 
		int i=1;//循环变量的初始化 
		while(i<=10) { 
			System.out.print("*"); 
			i++; 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

练习:输出10遍 好好学习,天天向上
while循环适用在循环操作可能一次都不执行的场景

		/**
		 * 1登录 2 注册 3退出 
		 * 如果输入的不是1,2,3,提示用户重新输入,直到输入正确为止。
		 * 
		 * 循环操作:sout("请重新输入") 接收键盘输入 
		 * 循环条件:输入的不是1,2,3 
		 * 
		 * */
		System.out.println("1登录 2 注册 3退出"); 
		System.out.println("请选择");
		Scanner input=new Scanner(System.in); 
		int num=input.nextInt(); 
		
		//
		while(num!=1&&num!=2&&num!=3) { 
			System.out.println("输入错误,请重新输入");
			num=input.nextInt(); 
		}
		
		switch(num) { 
		case 1: 
			System.out.println("登录"); 
			break; 
		case 2: 
			System.out.println("注册"); 
			break; 
		case 3: 
			System.out.println("推出"); 
			break; 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

使用while,注意判断条件。另可以使用boolean类型作条件判断

/** 
		 * * 1登录 2 注册 3退出 
		 * * 菜单自动循环 :除非输入3,程序结束 
		 * */ 
		Scanner input=new Scanner(System.in); 
		int num=1; 
		boolean flag=true;//true要循环 false退出
//		while(num!=3) { 
		while(flag) { 
			System.out.println("1登录 2 注册 3退出"); 
			System.out.println("请选择"); 
			
			num=input.nextInt(); 
			switch(num) { 
			case 1: 
				System.out.println("登录"); 
				break; 
			case 2: 
				System.out.println("注册"); 
				break; 
			case 3: 
				flag=false; 
				System.out.println("退出"); 
				break; 
			}
			System.out.println(); 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

循环操作中可以借助循环变量

		//输出1-100之间的偶数 
		int i=2; 
		while(i<=100) { 
			System.out.println(i); 
			i+=2; 
		}
		
		//输出100-1 
		int j=100; 
		while(j>0){ 
			System.out.println(i); 
			j--; 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

练习:1、求1-100之间的整数和
           2、求1-10之间的乘积
           3、求1-2+3-4+5-6+…-100

2).do…while

语法:
do{
    循环操作;
}while(条件);
执行:先执行一遍循环操作,然后判断条件,条件成立,就继续执行操作;
        循环操作执行结束,继续判断条件;。。。。。直到循环条件不成立,循环结束。
特点:先执行,后判断
        循环操作至少会执行一次

		Scanner input=new Scanner(System.in); 
		String answer; 
		do {
			System.out.println("1登录 2注册 "); 
			System.out.println("请选择"); 
			int num=input.nextInt(); 
			switch(num) { 
			case 1: 
				System.out.println("登录");
				break; 
			case 2: 
				System.out.println("注册"); 
				break; 
			}
			System.out.println(); 
			System.out.println("继续吗"); 
			answer=input.next(); 
		}while("y".equals(answer));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

练习:

老师讲,我学习
老师问:会了吗?
学生回答:y,结束;n 继续

练习2:1-20之间整数相加,求加到几和开始超过50?

3).for

语法:for(1、循环变量的初始化;2、循环条件;4、循环变量的更新){
                3、循环操作
           }
特点:循环次数固定

//输出1-100的整数 
		for(int i=1;i<=100;i+=2) { 
			System.out.println(i); 
		}
		
		//输入5个学生的成绩,求平均成绩 
		Scanner sc=new Scanner(System.in); 
		int sum=0; 
		int count=0;//计数器 
		for(int i=1;i<=5;i++) { 
			System.out.println("请输入第"+i+"个学生的成绩:"); 
			int score=sc.nextInt(); 
			sum+=score; 
			if(score<90) { 
				continue; 
			}
			count++; 
		}
		double avg=sum/5.0; 
		System.out.println("平均成绩:"+avg); 
		System.out.println("90分以上的人数为:"+count); 
		System.out.println("90分以上的人数比例为:"+count/5.0*100+"%");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

练习:1、输出1-100之间7的倍数
           2、输入5个学生的年龄,输出20岁以上的人数

4).循环的选择

1)循环次数固定,优先for
2)循环操作有可能一次都不执行,选用while
3) 其它,while和do…while都可以

5).break和continue

break 中断指令,结束所在层的循环

		//跑10圈 
		//跑到第7圈,退出 
		for(int i=1;i<=10;i++) { 
			if(i==7) { 
				System.out.println("实在跑不动了,退出");
				break; 
			}
			
			System.out.println("跑第"+i+"圈"); 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

常见编码风格:

while(true){ 
	if(条件) {
		break;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5

continue:中断指令 中断本轮的循环,继续执行下一轮的循环

		//跑10圈 
		//跑到第7圈,跑不动了,休息一圈,接着跑 
		for(int i=1;i<=10;i++) { 
			if(i==7) { 
				continue; 
			}
			
			System.out.println("跑第"+i+"圈"); 
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

注意事项:
        1)可以使用在任一种循环结构中。
        2)一般都会和条件结构结合使用。
        3)避免出现不可到达的代码。
练习:模拟QQ登陆,最多3次机会

账号:270828163
密码:te123
输入错误,您还有2次机会

账号:270828163
密码:te123
输入错误,您还有1次机会

账号:270828163
密码:te123
输入错误
3次机会全用完,请稍后再试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/317835
推荐阅读
相关标签
  

闽ICP备14008679号