public class MainTest {
public static void main(String[] args) {
//软件分为系统软件和应用软件
//人机交互方式: 图形化界面 命令行方式
/*
常用的DOS命令:
1.切换盘符:
盘符 :
2.创建文件夹
md 文件名
3.查看目录
dir
4.进入文件夹
cd 文件夹名
5.删除文件
rd 文件名
语言=语法+逻辑
第一代:计算机语言
第二代:汇编语言
第三代:高级语言
java语言概述:
java
javase java标准版
javaee java企业版
javame java小型版本
什么是jdk:
是java程序开发工具包 包含jre和开发人员使用的工具
jre是java运行时 的环境 包含jvm和运行时 所需的核心类库
运行环境就是 jvm
jdk=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_home
hello world的编写:
class Tets{
public static void main(String[] args ){
System.out.println("你好");
}
}
面试题:
1.一个.java源文件是否可以包括多个类 ?有什么限制?
--是的
限制是有且仅有一个类实用public进行声明
且要求声明为public的类的类名与源文件名相同
2.java的优势:
跨平台性
安全性
简单性
高性能
面向对象性
健壮性
java的社区体系比较繁荣
3.java中是否存在内存溢出 内存泄漏 如何解决 ?举例说明
存在
内存泄漏
4.如何看待java是一门半编译半解释语言:
*/
}
}
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中的方法! 计算机科学与技术学院");
}
}
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);
}
}
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类型变量 时 需要提供后缀 后缀为小写l
long n=122338L;
//在开发中 定义整型变量 没有特殊情况 通常定义为int类型0、
}
}
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.8
double F=80.0;
double c=(F-32)/1.8;
System.out.println("华温度:"+c);
}
}
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;
}
}
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个字节
}
}
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:char
char c1='a';
char c2=c1+b3;//这个也是编译不通过 最小用int
}
}
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);//这个就是导致了精度损失
}
}
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);//true
String str=str1+str2;//做连接运算
System.out.println(str);
//引用数据类型不不能转换为基本数据类型
//需要实现的话 可以使用Integer
int num3=Integer.parseInt(str);
System.out.println(num3+1);
}
}
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);
}
}
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);
}
}
class Arithmetic{
public static void main(String[] args){
/*
1. + - * /
2.
*/
int m1=12;
int n1=5;
int a=m1/n1;
System.out.println(a);//因为变量是整型 所以强制转换 等于2
System.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);
}
}
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+5
System.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);
}
}
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);
}
}
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-0
System.out.println(~1101);
}
}
class ConditionTest{
public static void main(String[] args){
/*
条件运算符
-1.(条件表达式)?表达式1:表达式2
2.说明条件表达式结果是布尔
条件表达式结果为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);
//字符集:
}
}
/*
关键字,保留字
关键字:被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在给布尔类型分配空间 布尔类型的变量占据四个字节
*/
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("继续努力!");
}
/*
多个表达式之间没有交集 则那个表达式那个在上面,那个在声明
下面都可以
如果多个表达式之间是包含关系 则需要将范围小的表达式声明在分为大的表达式上面
否则范围小的条件表达式不会被执行
*/
}
}
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);
}
}
}
}
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();
}
}
/*
如何获取一个随机数
*/
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
}
}
class SwitchTest{
public static void main(String[] args){
/*
选择结构的使用:
1.语法格式
switch(表达式){
case 常量1:
//执行语句1;
break;
case 常量2:
//执行语句2;
break;
case 常量3:
//执行语句3;
break;
....
case 常量n:
//执行语句n
break;
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("计算机软件工程");
}
}
}
class ForTest{
public static void main(String[] args){
/*
1.java中规范了三种循环结构: for while do-while
2.凡是循环结构一定湖有四要素:
1.初始化条件
2.循环条件--->重要 一定是要布尔类型的变量或者表达式
3.循环体
4.迭代条件
3.for循环的格式
for(初始化条件部分;循环条件;迭代条件){
循环体;
}
执行过程 初始化条件 循环条件 循环体 迭代条件 --初始化条件 循环条件 循环体 迭代条件 以此类推继续走
直到不满足循环条件
*/
//案例:输出100行的HeLloWorld
for(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);
}
}
/*
循环语句:
for
while
do-while
*/
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);
}
}
}
}
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);
}
}
}
class WhileTest{
public static void main(String[] args){
/*
while 循环:
初始化条件
循环条件
循环体
迭代部分
while(循环条件)的格式:
{
循环体
迭代部分;
}
*/
//打印100遍HelloWorld
int 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);
}
}
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();
}
}
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();//关闭资源
}}
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();
}
}
}
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);
}
}
}
}