> 文章列表 > java教程(2023-3-8)

java教程(2023-3-8)

java教程(2023-3-8)

第一章:HelloWorld

1.java语言介绍

public class MainTest {public static void main(String[] args) {
//软件分为系统软件和应用软件
//人机交互方式: 图形化界面  命令行方式/*常用的DOS命令:1.切换盘符:盘符 :2.创建文件夹md 文件名3.查看目录dir4.进入文件夹cd 文件夹名5.删除文件rd 文件名语言=语法+逻辑第一代:计算机语言第二代:汇编语言第三代:高级语言java语言概述:javajavase  java标准版javaee  java企业版javame  java小型版本什么是jdk:是java程序开发工具包 包含jre和开发人员使用的工具jre是java运行时 的环境 包含jvm和运行时 所需的核心类库运行环境就是 jvmjdk=jre+开发工具集jre=jvm+Java 标准类库jdk版本的选择:jdk版本的选择:通过企业的使用数量来确定Spring框架来决定:使用jdk17版本来适用spring框架版本jdk下载和安装java官网下载jdk18 安装 安装的过程路径不要出现中文配置path环境变量:右键此电脑  属性  高级系统设置 环境变量  把路径赋值粘贴到变量值里面即可建议使用java_home的方式去配置  变量名和变量值 名值对结构的方式去配置在java进阶部分需要使用到java_home的内容jdk17的安装*///1.书写一个HelloWorld程序//类 +类名{}System.out.println("Hello World!");//乱码问题  出现乱码问题 把保存类型改为ASCII/*1.java程序编写:步骤1:编写  将java代码编写在.java结尾的源文件中步骤2:编译 针对于.java结尾的源文件进行编译  格式 javac 源文件名.java步骤3:运行 针对于编译后生成的字节码文件 进行解释运行 格式 java 字节码文件名2.针对于编写过程说明:class HelloWorld{public static void main(String[] args){System.out.println("Hello World");}}其中class是关键字  表示类 后缀跟着类名称main()方法的格式是固定的  public static void main(String[] args){}java程序严格区分大小写main方法是程序的入口  如果非要有变化  只能变化String[] args结构 可以写成 String args[]args全称为 argument 简写为args从控制台输出数据的操作:System.out.pringtln("Hello World");每一条语句必须以分号结束System.out.print();	区别就是换行和不换行的问题3.编译:如果编译不通过 可以考虑的问题:1.查看编译的文件名  文件路径是否错误2.查看代码中是否存在语法问题编译以后会生成一个或多个字节码文件 每一个字节码文件对应一个java类  针对于运行的说明:我们是针对于字节码文件对应的java类进行解析运行的 要注意区分大小写可能存在运行时 异常  在第九章中去解决一个源文件中可以声明多个类 但是最多只能有一个类实用public进行声明  且要求声明为public的类名与源文件名相同注释和单行注释://  单行注释文档注释(java特有)针对于单行注释和多行注释  其作用就是起到解释说明的作用对程序进行调试注意:单行注释和多汗注释中的信息不参与编译 注释不能嵌套注释  不能嵌套使用文档注释:文档注释内容可以被jdk提供的工具 javadoc所解析 生成一套网页文件形式的体现该程序的说明文档javaapi文档:jdk的说明书 帮助文档 类似于字典java核心机制:java优点:跨平台性 面向对象性安全性简单性高性能功能说明:jvm 是一个虚拟的计算机 是java程序的运行环境 jvm具有指令集并使用不同的存储区域自动的内存管理 内存分配  内存回收*//*@author math@version 1.2.2*/System.out.println(1+3);System.out.println(1/0);System.out.println("姓名:吴邪");System.out.println("地址:吴山居");System.out.println("职业:盗墓");/*复习:java基础学习:第一阶段 java基本语法java概述 关键字 标识符 变量  运算符 流程控制 条件控制 选择结构 循环结构 数组第二阶段:java面向对象类及类的内部成员面向对象三大特征其他关键字的使用第三阶段:java高级应用异常处理 多线程 io六  集合框架 放射 网络编程 新特性 其他api软件开发相关内容:硬件+软件软件 即一系列特点序列组织的计算机数据和指令的集合 有系统软件和应用软件之分系统软件:即操作系统  window Linux Android应用软件:即os之上的应用程序人机交互方式:图形化界面(GUI)命令行交互方式: dir  传递 cd..  cd/ cd\\ md rd等计算机编程语言语言的分代:第一代:机器语言第二代:汇编语言第三代:高级语言面向对象的语言 c++ java python  go JavaScript面向过程的语言java的一个发展史:jdk1.0环境的搭建:jdk  jre jvm环境变量的配置  尽量配置java_homehello world的编写:	class Tets{public static void main(String[] args ){System.out.println("你好");}}面试题:1.一个.java源文件是否可以包括多个类 ?有什么限制?--是的  限制是有且仅有一个类实用public进行声明且要求声明为public的类的类名与源文件名相同2.java的优势:跨平台性安全性简单性高性能面向对象性健壮性java的社区体系比较繁荣3.java中是否存在内存溢出 内存泄漏 如何解决 ?举例说明存在内存泄漏4.如何看待java是一门半编译半解释语言:*/}
}

第二章:变量与运算符

1.标识符


class A{public  static void main(String[] args){
/*java关键字:被java语言赋予了特殊的含义 用做专门用途的字符串(或单词)例如:	class  public   void  null  true等标识符:--测试标识符的使用:什么是标识符:比如类名  方法名 变量名 包名 常量名标识符的命名规则:--由26个英文字母组成 0-9  —— $组成数字不可以开头不可以使用关键字和保留字 但能包含关键字 和保留字java中严格区分大小写 长度无限制标识符不能包含空格3.规范:标识符的命名规范:包名  多个单词组成时 所有字母都小写  类名 接口名 :多单词组成时 所有的单词的首字母大写变量名 方法名:多单词组成时 第一个单词首字母小写  第二个单词开始就大写常量名:驼峰命名法*/
System.out.println("计算机科学与技术学院");int age=90;
String name="吴邪";
System.out.println("姓名:"+name+"年龄:"+age);
/*for(int i=0;i<100;i++){System.out.println("你好  计算机科学与技术学院");
}*/B b=new B();b.test();}
}class B{void test(){System.out.println("你好  我是类B中的方法!  计算机科学与技术学院");}}

2.变量

class A{public static void main(String[]  args ){/*变量:变量是程序中不可缺少的组成单位  最基本的存储单元内存中的一个存储单位 该区域的数据可以在同一个类型分为中不断变化变量的构成 包含三个要素:数据类型 变量名 存储的值java中变量的声明的个数:数据类型  变量名=变量值int		age=19;变量的作用:用于在内存中保存数据使用变量注意:java中的变量按照实际类型来分类:基本数据类型(8种):整型:byte short int	long浮点型:float double字符型:char布尔型:boolean引用类型:类(class)数组(array)接口(interface)枚举(enim)注解(annotation)记录(record)定义变量时  变量名要遵循标识符命名的规范和规则说明:变量都有其作用域  变量在作用域里面是有效的  出了作用域就失效了在同一个作用域内  不能声明两个同名的变量变量在赋值时 必须满足变量的数据类型 并且在数据类型有效的范围内变化*/int age=90;//这个就是变量的初始化char gender='男';//变量的声明//综合来看  变量的初始化和声明可以合并起来
//因此可以使用以下方法:
int boy=1289;//这个就是同时声明和初始化变量
System.out.println("年龄为:"+age);
B b=new B();
b.test();//num=10;//这个由于在声明类型 即当前num变量没有提前定义  所以编译不通过}}
class B{
void	test(){System.out.println("我是 test方法");
int a=0;
int b=0;
System.out.println(a+b);}}

3.整型数据类型的使用

class A{public static void main(String[] args ){/*整型数据类型的使用:整型和浮点类型的使用:byte(1字节=8bit) short(2字节) int(4字节)	long(8字节)*/byte b1=12;byte b2=127;//byte b3=128;//编译不通过  超过了byte的存储范围System.out.println("你好 计算机科学与技术");short	s1=122393;int i=123393;//1.声明long类型变量  时  需要提供后缀 后缀为小写llong n=122338L;//在开发中  定义整型变量  没有特殊情况  通常定义为int类型0、}}

4.浮点类型使用

class A{public static void main(String[] args){/*foloat/double*/double i=12.3;//声明long类型变量时  需要提供后缀  后缀为‘f’ 或‘F’float j=212.2f;System.out.println(i+j);//在开发中 大家定义浮点型变量时  没有特殊情况的话 通常都声明double类型 因为精度更高//float类型表示数的范围要大于long类型的表示范围 当时精度不高//浮点数的精度不高  如果在开发中需要使用精度较高的精度 需要使用BigDecimal类替换浮点型变量}}
class A{public static void main(String[] args){//案例一://定义圆周率并赋值为3.14 现在有3个圆的半径为1.2  2.5 7  则他们的面积//定义圆周率变量:double pi=3.14;//定义三个圆的半径double radius1=1.2;double radius2=2.5;double radius3=7;//计算面积:double area1=pi*radius1*radius1;double area2=pi*radius2*radius2;double area3=pi*radius3*radius3;System.out.println("圆面积1为:"+area1+"圆面积2为:"+area2+"圆面积3为:"+area3);//案例二:将华式温度转换为摄氏度  c=(F-32)/1.8double F=80.0;double c=(F-32)/1.8;System.out.println("华温度:"+c);}}

5.字符类型的使用

class A{public static void main(String[] args){//测试字符类型和布尔类型的使用//1.字符类型  char(2字节)//表示形式1://使用一对''表示  内部有且只能有一个字符串char c1='a';char c2='中';System.out.println(c1+c2);//表示形式2:直接使用Unicode值表示字符型字符型常量 '\\uXXXX'char c8='\\u0036';System.out.println("+"+c8);//表示形式3:使用转义字符char c9='\\n';char c10='\\t';System.out.println(c9+c10);//表现形式4:使用具体的字符对应的数值(比如ASCII码)char a=1;}}

6.布尔类型的使用


class A{public static void  main(String[] args){/*布尔值类型  Boolean只有两个值  true  false*/boolean b1=true;boolean b2=false;//1.常使用在流程控制语句中  比如 条件判断   循环结构if(b1){System.out.println("计算机");}		else{System.out.println("你好");}//我们不谈Boolean类型占用空间的大小  但是在内存中分配的话 使用的是4个字节}}

7.基本数据类型变量间的自动类型提升规则

class A{public static void main(String[] args){/*基本数据类型变量的运算规则1.这里提到可以做运算的基本数据类型有7种  不包含Boolean类型2.运算规则:自动类型提升强制类型转换3.规则:当容量小的变量与容量大的变量做运算时 结果自动转换为容量大的数据类型说明:此时的容量小或大  并非指内存空间的大小  而是指表示数据的大小long(8字节)  float(4字节)byte-->short--->int--->long-->float1-->double特殊情况:byte,short--->int--->long-->float1-->double*/int i1=10;long i2=i1;byte b1=12;int i3=b1;//特殊的情况下:byte b3=12;short s1=10;short s2=b3+s1;//这个编译不通过  最小要使用int来接收//特别的:byte short类型的变量之间做运算 结果为int类型//特殊情况2:charchar c1='a';char c2=c1+b3;//这个也是编译不通过  最小用int}}

8.基本数据类型转换规则

class A{public static void main(String[] args){/*强制类型转换:规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型1.强制类型转换需要使用强转符 ()  在()内指明要转换为的数据类型2.强制类型转换过程中可能导致精度损失*/double d1=19;int i1=(int)d1;long i2=120;short s2=(short)i2;System.out.println(s2);double	n=28829.21212;int y=(int)n;System.out.println(y);//这个就是导致了精度损失}}

9.String类的基本使用

class StringTest{public static void main(String[] args){/*1.String类  属于引用类型  俗称字符串2.String类型的变量 可以使用一对""方式进行赋值3.String声明的字符串可以包含0个多个字符String与基本数据类型的运算包括布尔在内的有8种String与基本数据类型运算只能做连接运算 使用+来表示运算的结果是String类型*/String str1="hello World";String str2="hello World";System.out.println(str1==str2);//trueString str=str1+str2;//做连接运算System.out.println(str);//引用数据类型不不能转换为基本数据类型//需要实现的话  可以使用Integerint num3=Integer.parseInt(str);System.out.println(num3+1);}}

10.String课后练习

class StringExer{public static void main(String[] args){String name="吴邪";int age=24;String gender="男";double weight=120.89;boolean isMarried=false;String phonNumber="121212";System.out.println("姓名\\t"+name+"\\t性别\\t"+gender+"\\t体重\\t"+weight+"\\t单身?\\t"+isMarried+"\\t电话号码\\t"+phonNumber);	}
}

11.常见的进制及换算

class BinaryTest{public static void main(String[] args){/*1.二进制;*/int num1=103;//十进制int num2=0b011;//二进制int	num3=023;//八进制int num4=0x2a;//十六进制System.out.println(num1);System.out.println(num2);System.out.println(num3);}}

12.算数运算符


class Arithmetic{public static void main(String[] args){/*1. +	-	*	/ 2.*/int m1=12;int n1=5;int a=m1/n1;System.out.println(a);//因为变量是整型 所以强制转换  等于2System.out.println(a*10);//取模运算:%int i=18;int j=5;System.out.println(i%j);//取余数  在开发中 经常用来判断是否能整除 一个数//前++  表示自增1//先加加 先自增一 在赋值int a1=10;int b1=++a1;System.out.println("\\ta1\\t"+a1+"\\tb1\\t"+b1);//后++ 表示自增1//先赋值 后自增一int a2=100;int b2=a2++;System.out.println("\\ta2\\t"+a2+"\\tb2\\t"+b2);//前--  先自减一 在运算//后-- 先运算  在自减一System.out.println("********************************");//提取一个三位数的个位 十位 百位int num=153;int ge=num%10;//个位int shi=num/10/10;//十位 int bai=num/100;System.out.println("\\t个位\\t"+ge+"\\t百位\\t"+bai+"\\t十位\\t"+shi);}}

13.赋值运算符

class SetValue{public static void main(String[] args){/*/*赋值运算符:1.= -=   += /= %=2.当两侧数据类型不一致 可以使用自动类型转换或使用强制类型转换原则进行处理3.支持连续赋值*/int i=7;long l=10;//自动类型提升//1. +=int m1=10;m1+=5;//m1=m1+5System.out.println(m1);//这些操作不会改变变量本身的类型byte by1=10;by1+=5;//编译=编译+5操作会报错System.out.println(by1);int m2=1;
m2*=0.1;//m2=m2*0.2
System.out.println(m2);}}

14.比较运算符

class Compare{public static void main(String[] args){/*1.==  !=  < >  >=  <= 适用于除Boolean类型之外的其他7种基本数据类型instanceof 在面向对象多态性运算的结果为布尔型补充:== != 适用于引用数据类型2.区分 ==与= 一个是等于号 一个是赋值号*/int m1=10;int m2=20;System.out.println(m1	);System.out.println(m2);m1=m2;boolean i= m1>m2;System.out.println(i);System.out.println(m1);System.out.println(m2);}}

15.位运算符

class BigTest{/*位运算符:*/public static void main(String[] args){//1.<<  >> & |^  `//		1针对数值类型的变量或常量进行运算 运算的结果也是数值//		2.每向左移动因为 结构就是在原有的基础上*2(对于正数和负数都适用)//对于右移运算://在一定范围内 每向右移动一位 结构就在原有的基础上/2 (对于正数负数都适用)int num=7;System.out.println("左移2位"+(num<<2));System.out.println("右移2位"+(num>>2));int num2=-7;System.out.println("负数左移动1位"+(num2<<1));System.out.println("负数右移动2位"+(num2>>2));//无符号右移 >>>//逻辑&System.out.println(0&1);//按位取反 0-1  1-0System.out.println(~1101);}
}

16.条件运算符

class ConditionTest{public static void main(String[] args){/*条件运算符-1.(条件表达式)?表达式1:表达式22.说明条件表达式结果是布尔条件表达式结果为true  执行表达式1 否则表达式2表达式1和表达式2需要的是相同的类型或兼容的类型*/String info=	(2>1)?"你好":"你不好";//返回的结果类型取决于表达式的类型System.out.println(info);//获取两个整数的较大值int m=20;int n=10;int max= (m>n)?m:n;System.out.println("最大值是:"+max);//获取三个数的最大值int i=20;int j=30;int k=40;//先找到两个数中最大值int tempMax=(i>j)?i:j;int finalMax=	(tempMax>k)?tempMax:k;System.out.println("最终最大值为:"+finalMax);//字符集:}}

17.第二章:复习


/*关键字,保留字关键字:被java赋予特殊含义的字符串官方规范有50个关键字true false null虽然表示关键字 但是可以当做关键字来看待保留字  goto const标识符:反是直接可以命名的地方都是标识符  比如类名 变量名 方法名 包名 常量名记住 标识符命名的规则必须要遵守 否则编译不通过记住:标识符的命名规范见名知意1.变量基本使用三个要素  数据类型  变量名= 变量值2.基本数据类型变量的使用基本数据类型 整型 浮点型 字符型 布尔型
3.基本数据类型变量间的运算规则4.基本类型提升
5.强制类型转换6.String类的使用 与基本数据类型变量间的运算7.关于进制间的认识正数:原码 反码 补码三码相同负数:原码 反码 补码不相同
8.运算符 算数运算符  赋值运算符 比较运算符  逻辑运算符 位运算符  条件运算符面试题:1.高效的计算2*8使用位运算<<2.&和&&区别3.java中的基本数据类型  String是最基本的数据类型吗?8种基本数据类型 String表示基本数据类型  是引用类型4.java开发中计算金额使用什么数据类型不能使用float或double 因为精度不够使用BigDecimal替换 可以实现任意精度的数据运算5.char类型变量中能不能存储一个文字 为什么可以存储一个汉字 因为char使用Unicode字符集  包含了世界范围的所有的字符6.代码分析:short s1=1;s1=s1+1  因为等号的右边是int类型 需要强转short s1=1;s+=1;//这个没有错 7.布尔占几个字节:我们不谈几个字节 但是jvm在给布尔类型分配空间 布尔类型的变量占据四个字节*/

第三章:流程控制语句

1.else-if语句

class ifElseTest{
/*1分支结构:if-else条件判断语句语法:if(条件表达式){代码块1;}else{代码块2;}if(条件表达式1){}else if(条件表达式2){代码块}else if(条件表达式3){代码块}	else if(条件表达式4){代码块}else{代码块}*/public static void main(String[] args){int hearBeats=89;if(hearBeats>=60&&hearBeats<100){System.out.println("你需要检查!");}else{System.out.println("你不需要检查!");}//定义一个整数  判断是偶数还是奇数
int num=13;
if(num%2==0){System.out.println("是偶数");
}else{System.out.println("不是偶数");}//成绩100分 奖励车
//成绩90-99 奖励自行车
//成绩60-80 奖励旅游int score=62;if(score>60&&score<80){System.out.println("旅游");
}else if(score>90&&score<99){System.out.println("奖励自行车");
}else if(score==100){System.out.println("奖励跑车");
}else{System.out.println("继续努力!");
}/*多个表达式之间没有交集 则那个表达式那个在上面,那个在声明下面都可以如果多个表达式之间是包含关系 则需要将范围小的表达式声明在分为大的表达式上面否则范围小的条件表达式不会被执行  */}
}

2.if-else嵌套使用

class ifElse{public static void main(String[] args){/*从键盘输入三个整数 num1 num2  num3 对他们进行排序 并从小到大输出*/int num1=2,num2=2,num3=7;int temp;if(num1>num2){if(num3>=num1){System.out.println(num2+"**"+"**"+num1+"**"+num3);}else if(num3<num2){System.out.println(num3+"**"+""+num3+"***"+num1);}else{System.out.println(num1+"***"+num3+"***"+num2);}}else{if(num3>=num2){System.out.println(num1+""+num2+""+num3);}else if(num3<num2){System.out.println(num3+""+num1+""+num2);}else{System.out.println(num1+""+num3+""+num2);}}}}

3.输入类Scanner的使用

import java.util.Scanner;
class ScannerTest{/*使用Scanner获取不同数据类型的步骤*/public static void main(String[] args){//1.使用Scanner获取不同数据类型的步骤/*	--导包 import java.util.Scanner--提供或创建一个scanner;类的实例--调用scanner类中的方法 获取指定类型的变量--关闭资源*///输入数字  来判断是否成年 壮年 老年Scanner i=new Scanner(System.in);//创建类的实例System.out.println("请输入!");int age=	i.nextInt();//调用类里面的方法/*输入方法 nextXXX();*/if(age<18){System.out.println("你还未成年!");System.out.println("你的年龄"+age);}System.out.println("请输入体重!");double height=i.nextDouble();if(height>90){System.out.println("你要减肥了!");}/*Scanner类中提供了获取 byte short int longfloat double Boolean	String注意:没有提供获取char的方法  如果需要的话 就是使用next().charAt(0);*///关闭资源i.close();}
}

4.随机数

/*如何获取一个随机数
*/class RandomTest{public static void main(String[] args){//1.可以使用java提供java提供的api方法  Math类的Random方法//random()调用以后会返回一个0.0到1.0范围的随机数double di=Math.random();System.out.println(di);//获取一个0到100的随机数
System.out.println("0到100内的随机数:"+(int)(di*100));
//获取[a,b]之间的随机数 (int) (Math.random())*(b-a+1)*a}}

5.switch-case的基本使用

class SwitchTest{public static void main(String[] args){/*选择结构的使用:1.语法格式switch(表达式){case 常量1://执行语句1;break;case 常量2://执行语句2;break;case 常量3://执行语句3;break;....case 常量n://执行语句nbreak;default://语句}执行过程:根据表达式中的值依次匹配case语句 一旦与某个case中的常量相等就执行此case中的语句  执行完成之后情况一:遇到break  则执行break后  跳出当前的switch结构情况二:没有遇到break 则继续执行其后的case语句.....直到遇到break  或者执行完成所有的case及default中的语句 退出当前的switch-case语句3.*/int num1=1;switch(num1){case 1:System.out.println("你好啊");break;case 2:System.out.println("你不好!");break;case 3:System.out.println("计算机科学与技术");default:System.out.println("计算机软件工程");}}}

6.for循环语句

class ForTest{public static void main(String[] args){/*1.java中规范了三种循环结构: for while  do-while2.凡是循环结构一定湖有四要素:1.初始化条件2.循环条件--->重要  一定是要布尔类型的变量或者表达式3.循环体4.迭代条件3.for循环的格式for(初始化条件部分;循环条件;迭代条件){循环体;}执行过程  初始化条件  循环条件 循环体 迭代条件  --初始化条件  循环条件  循环体 迭代条件 以此类推继续走直到不满足循环条件*///案例:输出100行的HeLloWorldfor(int i=0;i<100;i++){System.out.println("HelloWorld!");}System.out.println("********************");for(int j=0;j<100;j=j+1){System.out.println("HelloWorld!");}System.out.println("******************");/*	int num=1;for(System.out.println("a");num<3;System.out.println("c");num++){System.out.println("b");//输出结果为abcbc}*///需求3:遍历0-100以内的偶数 获取偶数的个数int count=0;//记录偶数的个数int sum=0;for(int i=0;i<=100;i++){if(i%2==0){System.out.println("偶数为:"+i);count++;}sum+=i;//sum=sum+i 统计偶数的和}//输出偶数的个数System.out.println("偶数个数为:"+count);System.out.println("偶数的和为:"+sum);}}
/*循环语句:forwhiledo-while*/

7.for循环练习

class ForTest2{public static void main(String[] args){/*输出所有的水仙花数  所谓水仙花数是指三位数 其各位上数字的立方和等于其本身*///先遍历三位数
for(int i=100;i<999;i++){//针对于每一个三位数  获取其个位上数值int num1=i%10;int num2=i/10%10;//取出10位int num3=i/100;//判断是否满足水仙花数的规则if(i==num1*num1*num1+num2*num2*num2+num3*num3*num3){System.out.println("水仙花数为:"+i);}}}}

8.练习2:

class ForTest3{public static void main(String[] args){/*输入两个正整数  m和n  求最大公约数和最小公倍数	*/int m=12;int n=20;for(int i=1;i<12;i++){//最大约数if(m%i==0&&n%i==0){System.out.println(i);	}//	System.out.println(i);}	}
}

9.while循环的使用及练习

class WhileTest{public static void main(String[] args){/*while 循环:初始化条件循环条件循环体迭代部分while(循环条件)的格式:{循环体迭代部分;}*///打印100遍HelloWorldint i=0;while( i<100){System.out.println("HelloWorld");i++;//这个一定要书写  不然就是死循环}}}

import java.util.Scanner;
class WhileTest{public static void main(String[] args){/*随机生成一个随机数  猜这个随机数多少从键盘输入数 提示大了 如果小了 就提示小了 如果对了  就不要在猜了并统计一共猜了多少次提示:生成一个[a,b] 范围的随机数的方式 (int)(Math.random)*(b-a+1)+a)*///1.生成一个1-100内的随机整数int target=(int)(Math.random()*100)+1;//2.使用Scanner 从键盘输入数Scanner sc=new Scanner(System.in);//3.使用循环结构 进行多次循环的对比和获取数据System.out.println("请输入0-100内的数!");int guss=sc.nextInt();int guessCount=0;while(target!=guss){if(guss>target){System.out.println("你输入的数据大了!");}else if(guss<target){System.out.println("你输入的数据小了!");}System.out.println("请输入0-100内的数!");guss=sc.nextInt();guessCount++;}//能结束循环 就意味着random和guess相等了System.out.println("猜对了");System.out.println("你共猜了"+guessCount+"次");//关闭资源sc.close();}}
class WhileTest2{public static void main(String[] args){/*世界最高的山是珠穆朗玛峰 它的高度是8848米 假如我有一张足够大的纸它的厚度是0.1毫米 请问 我折叠多少次 它可以折成珠穆朗玛峰的高度*///1.声明珠穆朗玛峰的高度  纸的默认厚度double paper=0.1;//单位毫米double	height=8848860;//单位毫米int count=0;//2.通过循环结构 不断调整纸的厚度  当纸的高度超过珠穆朗玛峰高度时停止循环while(paper<=height){paper*=2;count++;}//3.定义变量来记录折纸的次数System.out.println("纸的高度为:"+(paper/1000)+"超过了珠穆朗玛峰的盖度");//4.删除折了多少次:System.out.println("折了多少次:"+count);}}

10.do…while循环

class DoWhileTest{public static void main(String[] args){/*do...while()循环:格式:do{循环体;}while(循环条件);执行过程:先判断后执行  初始化条件 循环体  迭代部分...说明:do..while()循环 至少执行一次循环体*///遍历100以内的偶数  并且输出偶数的个数和总和int i=1;int sum=0;int count=0;do{if(i%2==0){System.out.println("偶数是:"+i);sum+=i;//偶数和	}i++;count++;}while(i<=100);System.out.println("偶数和为:"+sum);System.out.println("次数为:"+count);}}
import java.util.Scanner;
class doWhileTest{public static void main(String[] args){/*do..while()循环在开发中使用的比较少声明变量balance 并且初始化为0 用来表示银行账户余额 下面通过atm取款机来实现===ATM===1.存款2.取款3.显示余额4、退出请 选择 1-4*///3.使用Scanner获取用户的选择Scanner sc=new Scanner(System.in);//1.定义变量double balance=0;boolean flag=true;//控制循环的结束do{ //2.声明atm收款的界面//就是四条输出语句System.out.println("=======ATM取款机=======");System.out.println("1.存款");System.out.println("2.取款");System.out.println("3.显示余额");System.out.println("4 退出");System.out.println("=======================");//4.根据用户的选择 决定执行存款  取款 显示余额 退出等操作int slection=sc.nextInt();switch(slection){case 1:System.out.println("请输入存款金额!");double money1=	sc.nextDouble();if(money1>0){balance+=money1;}System.out.println("存钱成功!");break;case 2:System.out.println("请输入取款金额!");double money2=sc.nextDouble();if(money2>0&&money2<=balance){balance-=money2;}else{System.out.println("输入的余额有误 或不足 请重新输入!");}System.out.println("存钱失败!");break;case 3:System.out.println("账户余额为:"+balance);break;case 4:flag=false;System.out.println("正在退出!欢迎使用~~");break;default:System.out.println("输入有误!");}}while(flag);//关闭资源sc.close();}}

11.死循环使用

import java.util.Scanner;
class dieTest{public static void main(String[] args){/*无限循环结构的使用:1.格式 while(true){代码块..}for(;;){代码块...}*//*while(true){System.out.println("你好 计算机科学与技术!");}for(;;){System.out.println("你好!");}}*///案例:从键盘输入个数不确定的整数  并判断读入的正数和负数的个数 输入为0结束Scanner sc=new Scanner(System.in);int postCount=0;//记录正数的个数int negatCount=0;//记录负数的个数while(true){System.out.println("请输入一个整数");int num=sc.nextInt();//获取用户输入的整数if(num>0){//整数postCount++;}else if(num<0){negatCount--;}else{System.out.println("程序结束!");break;}}System.out.println("正数的个数为:"+postCount);//sc.colse();//关闭资源}}

12.循环嵌套的使用


class ForForTEst{public static void main(String[] args){/*嵌套循环的使用:1.嵌套循环 是指一个循环结构A的循环体内是另一个循环结构B--外层循环 :循环结构A--内层循环:循环结构B内层循环充当了外层循环的循环体     对于两层循环来说 外层循环控制行数 内层循环控制列数举例:外层循环执行m次  内层循环执行循环体执行m*n次实际开发中 我们不会出现三层以上的嵌套循环*/for(int i=0;i<100;i++){for(int j=0;j<i*j-1;j++){System.out.println("**");}System.out.println();}}}
class ForForTest{public static void main(String[] args){/*使用循环嵌套打印一个菱形*/for(int i=1;i<=5;i++){for(int j=1;j<=10-2*i;j++){System.out.println("-");}for(int k=1;k<=2*i-1;k++){System.out.println("* "); }System.out.println("");}}}
class ForForTest{public static void main(String[] args){/*使用循环嵌套打印一个菱形*//*for(int i=1;i<=5;i++){for(int j=1;j<=10-2*i;j++){System.out.println("-");}for(int k=1;k<=2*i-1;k++){System.out.println("* "); }System.out.println("");}*/for(int i=1;i<=9;i++){for(int j=0;j<=i;j++){System.out.print(i+"*"+j+"="+i*j+"\\t");}System.out.println();}}}

13.关键字break和continue的使用

class BreakContiuneTest{public static void main(String[] arg){/*break和continue关键字的使用:break:				在循环结构中是结束当前循环结构  在此关键字的后面不能书写输出语句switch-case循环结构continue:			结束当次循环  循环结构中*/for(int i=1;i<10;i++){if(i%4==0){continue;}else{break;//直接结束循环}//System.out.println(i);}leable:for(int j=0;j<10;j++){if(j%4==0){System.out.println("第一个数是"+j);break leable;//这个就是显式的结束for循环  用于循环层数过多选择结束}else{System.out.println("其他数"+j);}}}}

第55节课