一、Java程序设计语言
1、Java环境搭建
1、前置知识
数据库:用于存储数据 Oracle 、MySQL (NoSQL-HBase、MongoDB等)
WEB前端知识:和用户进行交互的UI(界面) HTML4 HTML5、CSS2、CSS3、JavaScript、JQuery、BootStrap 、VUE等
后端知识:java、Servlet、SSM、SpringBoot、SpringCloud、POI等第三方的技术
2、Java环境
专业数据:
关键字:被赋予了一定含义的字符序列(单词)
JDK:
查看jdk安装情况
Ctrl+R–》cmd
JDK安装全部默认下一步默认安装
单击属性
单击高级系统设置
单击环境变量
在实验阶段把变量配置到系统变量中
首次配置,需要单击新建按钮
变量值根据自己电脑上安装的jdk目录
然后确定
下面设置win的path变量,注意PATH变量无需新建,他由系统创建,所以你选择编辑。注意,默认有很多变量值,多个变量值必须用;号分开。然后在其中加入 ;%JAVA_HOME%\bin; 内容
解释:%JAVA_HOME% : 引用 === C:\Program Files\Java\jdk1.8.0_74
C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;%JAVA_HOME%\bin;
命令窗口测试
3、IDE
用于软件开发的开发工具,java的ide :eclipse idea
4、Java程序的运行过程
5、Eclipse教程
选择工作空间,工作空间用于存储项目中的所有资源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51mSX8BI-1615875923364)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309124413627.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjLL5NSW-1615875923367)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309124825270.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TvFatC8h-1615875923369)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309124930364.png)]
左面:项目视图:一个工作空间(workspace)内(下)中可以管理多个项目,
在项目视图内右键单击,New-Project
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xwVoC0BI-1615875923371)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125042263.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w89yKbpt-1615875923373)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125234268.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KrULN8Ij-1615875923374)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125338741.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FESgNIlO-1615875923376)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125400286.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dKMHRQmI-1615875923378)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125407067.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyburItT-1615875923380)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125633154.png)]
注意:src是存放源代码文件的目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1ArgIQN-1615875923381)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309130026145.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xxuYv3ex-1615875923382)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309130051799.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riA0BfDx-1615875923384)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125926459.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxEq1GuR-1615875923386)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309125953265.png)]
Package:目录一样,在一个项目中可以有多个Package
在Package中创建一个类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tuRx8L4b-1615875923387)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309130308066.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fi0RhkoS-1615875923389)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309130324772.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k61DjIa9-1615875923391)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309130353133.png)]
2、Java基本知识
1、变量
①、首先是一个容器,其中可以存储内容
②、变量中存储的内容叫变量的值
③、变量的值是可以发生改变的
④、通过变量名对其中的值进行操作(获取|设置值)
你买的可乐,那个瓶子就是一个容器(变量),其中的可乐(水)变量的值。
2、数据类型
变量中存放的值,很有可能是不同类型的,而java中的数据类型如下分类
基本类型:四类八种
①、整数类型:byte short int long
②、小数类型:float double
③、字符类型:char
④、布尔类型:boolean
引用类型:类 接口 枚举 数组等都属于引用类型
强调:不管是基本类型还是引用类型都属于数据类型范畴
3、Java运算符
①、算数运算符 :+ - * / %
②、赋值运算符:=
③、算数赋值运算符:+= -= *= /= %=
④、增量减量运算符:++ –
⑤、关系|比较运算符 < <= > >= == !=
⑥、逻辑运算符:& | ! ^(异或)
public class Test { public static void main(String[] args) { boolean a=true; boolean b=true; System.out.println(a^b);//异或计算:男女搭配干活不累 必须不同性别结果才为true } }
⑦、短路运算符:&& ||
⑧、条件运算符:? :
注意:运算符的操作数个数(一元 、二元、三元),结合律的问题
4、控制语句
前置知识:
1、语句块:用{}括起来的多条语句就是一个语句块,语句块中可以能会包含多条语句
2、作用域:各个语句块之间是相互封闭的。在a语句块中访问不到b语句块中的变量
1、循环语句
在某行后多行代码被反复(重复)执行的情况下使用循环结构。所以循环体中的代码就是被反复重复执行的代码
假若循环体只有一行代码,那么可以省略{}括号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCbdb4kW-1615875923393)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210311092242188.png)]
/**
* 语法:
* while(判定条件){
* }
*/
public class WhileDemo {
public static void main(String[] args) {
int a=1;
while(a<11){
System.out.println("*******");
System.out.println(" & ");
a++;
}
System.out.println("endding..........");
}
}
实验1、在控制台上打印数字7;
实验1、在控制台上打印数字8;
实验1、在控制台上打印数字9;
实验1、在控制台上打印数字10;
实验2、在控制台上打印数字7-20之间的每一个整数;
实验3、打印1-100之间的所有偶数
2、条件结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hm59Zcsl-1615875923394)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210311101017723.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eczJLXQk-1615875923396)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210312133245096.png)]
实验4、在控制台上录入【0,1】的数,然后判断性别并打印到控制台
0==男
1==女
实验5、计算1-100之间的奇数和
实验6、计算1-100之间的偶数和
public class IFDemo {
public static void main(String[] args) {
//判断a是奇数还是偶数
// if(条件){
// 语句块1
// }else{
// 语句块2
// }
System.out.println("请录入一个整数,我来告诉你是偶还是奇数");
int a=10;
System.out.println("beginning......................");
if(a%2!=0){
// 语句块1
System.out.println(a+"是奇数");
}else{
// 语句块2
System.out.println(a+"是偶数");
}
System.out.println("endding........................");
}
}
实验7、从控制台录入两个整数,然后计算这两个整数之间的奇数和
实验8、在控制台上录入一个学生的成绩,然后编写代码判断这个成绩的等级
0-59 :不及格
60-69 :及格
70-79:中等
80-89:良好
90-100:优秀
实验9:在控制台上录入一个人的年龄,然后判断属于哪种人
1-30:青年人
31-60:中年人
61以上:老年人
实验10:一直在控制台录入一个整数,判断这个整数是奇数还是偶数,直到录入的数是0时,退出系统,并在控制台上输出“欢迎使用老张系统,886”;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJU7RZ0G-1615875923397)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210312090844917.png)]
package com.etc.control;
import java.util.Scanner;
/**FileName: com.etc.control TestClass.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月11日:上午10:58:44
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月11日 老张 1.0 1.0 Version
*
*/
public class TestClass {
public static void main(String[] args) {
TestClass tc=new TestClass();
tc.test4();
}
/**
* @TODO :实验4、在控制台上录入【0,1】的数,然后判断性别并打印到控制台 0==男 1==女
* @Date :2021年3月11日 上午10:59:05
* @Author :老张 :
*/
public void test4(){
Scanner in=new Scanner(System.in);
System.out.println("请输入【0,1】判断其性别【0==男 1==女】");
int a=in.nextInt();
if(a==0){
System.out.println("帅哥");
}
else if(a==1){
System.out.println("美女");
}
else if(a==2){
System.out.println("泰国人");
}else{
System.out.println("输入错误");
}
}
public void test5(){
int a=1;
int sum=0;
while(a<101){
if(a%2==1){
sum+=a;
}
a++;
}
System.out.println("1-100之间的奇数和是:"+sum);
}
public void test6(){
int a=1;
int sum=0;
while(a<101){
if(a%2==0){
sum+=a;
}
a++;
}
System.out.println("1-100之间的偶数和是:"+sum);
}
}
package com.etc.work;
import java.util.Scanner;
/**FileName: com.etc.work HomeWork.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月12日:上午8:44:08
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月12日 老张 1.0 1.0 Version
*
*/
public class HomeWork {
public static void main(String[] args) {
// int hw;
HomeWork hw=new HomeWork();
hw.testIf();
}
/**
* @TODO :实验7、从控制台录入两个整数,然后计算这两个整数之间的奇数和
* @Date :2021年3月12日 上午8:44:57
* @Author :老张 :
* 语句块:{}括起来的语句,如果只有一条语句,那么循环体、if体、else体可以省略大括号
*/
public void betweenSum(){
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个整数");
int a=in.nextInt();
System.out.println("请输入第二 个整数");
int b=in.nextInt();
int max=a>b?a:b;
int min=a>b?b:a;
int sum=0;
while(max>=min){
if(max%2==1)
sum+=max;
max--;
}
// while(a<=b){
// if(a%2==1)
// sum+=a;
// a++;
// }
System.out.println(sum);
}
/**
* @TODO :实验8、在控制台上录入一个学生的成绩,然后编写代码判断这个成绩的等级
* @Date :2021年3月12日 上午8:58:21
* @Author :老张 :
*/
public void getLevel(){
Scanner in=new Scanner(System.in);
System.out.println("请输入一个成绩");
int score=in.nextInt();
if(score<60)
System.out.println("不及格");
else if(score<70)
System.out.println("及格");
else if(score<80)
System.out.println("中等");
else if(score<90)
System.out.println("良好");
else if(score<=100)
System.out.println("优秀");
}
/**
* @TODO :
* @Date :2021年3月12日 上午9:10:21
* @Author :老张 :
*/
public void testIf(){
int a=10;
if(a<10){
System.out.println(1);
System.out.println(2);
}
System.out.println("endding...........");
}
}
实验11:计算1-100之间的质数(素数)和
实验12:计算1-100之间的整数和,在和值超过50时,打印最大的那个整数
实验13:打印1-100之间的所有非7倍数的数
实验14:打印如下图形
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JRzNVKo7-1615875923399)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210312103155927.png)]
3、控制语句总结
①、for循环
语法:for(int i=1;i<100;i++){}
注意:三个表达式都可以不写
②、while循环
语法:while(a<100){a++;}
③、do…while();循环
语法:do{a++;}while(a<100);
break 和continue的使用
break:跳出整个循环(终止循环的执行)
continue:跳出本次循环,继续判断条件
package com.etc.work;
import java.util.Scanner;
/**FileName: com.etc.work HomeWork.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月12日:上午8:44:08
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月12日 老张 1.0 1.0 Version
*
*/
public class HomeWork {
public static void main(String[] args) {
// int hw;
HomeWork hw=new HomeWork();
hw.testDoWhile();
}
/**
* @TODO :
* @Date :2021年3月12日 上午11:02:45
* @Author :老张 :
* do...while 和 while
* 区别:do...while至少执行一次循环体,而while循环需要先判断条件,若第一次条件不成立,循环体一次都不执行。
*/
public void testDoWhile(){
int a=1;
do{
System.out.println(a);
a++;
}while(a<100);
// while(a<100){}
}
/**
* @TODO :
* @Date :2021年3月12日 上午10:57:08
* @Author :老张 :
*/
public void testFor(){
for(int i=0,j=1;;){
System.out.println(i);
i++;
}
}
/**
* @TODO :实验13:打印1-100之间的所有非7倍数的数
* @Date :2021年3月12日 上午10:25:22
* @Author :老张 :
* continue :跳出当前次循环,继续判断条件
*/
public void printNot7(){
for(int i=1;i<=100;i++){
if(i%7==0)//整除7时不打印这个数
continue;
System.out.println(i);
}
}
/**
* @TODO :实验7、从控制台录入两个整数,然后计算这两个整数之间的奇数和
* @Date :2021年3月12日 上午8:44:57
* @Author :老张 :
* 语句块:{}括起来的语句,如果只有一条语句,那么循环体、if体、else体可以省略大括号
*/
public void betweenSum(){
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个整数");
int a=in.nextInt();
System.out.println("请输入第二 个整数");
int b=in.nextInt();
int max=a>b?a:b;
int min=a>b?b:a;
int sum=0;
while(max>=min){
if(max%2==1)
sum+=max;
max--;
}
// while(a<=b){
// if(a%2==1)
// sum+=a;
// a++;
// }
System.out.println(sum);
}
/**
* @TODO :实验8、在控制台上录入一个学生的成绩,然后编写代码判断这个成绩的等级
* @Date :2021年3月12日 上午8:58:21
* @Author :老张 :
*/
public void getLevel(){
Scanner in=new Scanner(System.in);
System.out.println("请输入一个成绩");
int score=in.nextInt();
if(score<60)
System.out.println("不及格");
else if(score<70)
System.out.println("及格");
else if(score<80)
System.out.println("中等");
else if(score<90)
System.out.println("良好");
else if(score<=100)
System.out.println("优秀");
}
/**
* @TODO :
* @Date :2021年3月12日 上午9:10:21
* @Author :老张 :
*/
public void testIf(){
int a=10;
if(a<10){
System.out.println(1);
System.out.println(2);
}
System.out.println("endding...........");
}
/**
* @TODO :判断a是否是质数
* @Date :2021年3月12日 上午9:46:32
* @Author :老张 :
* 根据质数的概念进行计算 什么是质数?只有1和它本身能整除的数
* 2~a-1之间的数都不能整除
*
* ①、实际上有些情况无需把所有的(2~a-1)数都去模计算 比如25 当出现了整除5的情况后面的数6-24之间无需计算
* ②、实际上不用% 2~a-1 只%到 2~a/2即可
*/
public void isPrime(){
int a=17;
int b=2;
// flag用于标识a是否是质数,若flag=true说明不是,若flag=false说明是质数
boolean flag=false;
while(b<a/2){
if(a%b==0){
//整除,,a不是质数
flag=true;
//后面所有的数都不需要计算了。。。。。。。
// 退出,循环终止执行。
// 两个方法
// ①、让条件不成立即可 b>=a不就可以了吗?
// ②、break :在循环语句中,只要break了,那么JVM会终止执行循环
break;
}
b++;
}
if(flag)
System.out.println("不是质数");
else
System.out.println("是质数");
}
/**
* @TODO :实验11:计算1-100之间的质数(素数)和
* @Date :2021年3月12日 上午10:06:38
* @Author :老张 :
*/
public void sumPrime(){
int a=6;
int sum=10;
while(a<=100){
int b=2;
// flag用于标识a是否是质数,若flag=true说明不是,若flag=false说明是质数
boolean flag=false;
while(b<a/2){
if(a%b==0){
//整除,,a不是质数
flag=true;
//后面所有的数都不需要计算了。。。。。。。
// 退出,循环终止执行。
// 两个方法
// ①、让条件不成立即可 b>=a不就可以了吗?
// ②、break :在循环语句中,只要break了,那么JVM会终止执行循环
break;
}
b++;
}
if(!flag){
sum+=a;
}
a++;
}
System.out.println(sum);
}
/**
* @TODO :
* @Date :2021年3月12日 上午10:14:24
* @Author :老张 :
*/
public void getMaxNumber(){
/*
* JVM执行过程
* for(表达式1;表达式2(循环继续的条件和while中的()功能一致);表达式3)
* 第一步,执行表达式1
* 第二步,判断表达式2,若表达式2结果为真 进入循环体
* 第三步,执行表达式3,然后继续判断条件
*/
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
if(sum>=50){
System.out.println(i);
break;
}
}
}
}
package com.etc.work;
/**FileName: com.etc.work SwitchDemo.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午9:51:32
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class SwitchDemo {
public static void main(String[] args) {
SwitchDemo demo=new SwitchDemo();
demo.testSwitch();
}
/**
* @TODO :
* @Date :2021年3月15日 上午9:58:50
* @Author :老张 :
* ①、break必须不能省略
* ②、switch语句中,值允许出现 byte short int char String
*/
public void testSwitch(){
String a="1";
switch(a){
case "0"://a的值和case值 进行等值比较
System.out.println("女");
System.out.println(1);
break;
case "1":
System.out.println("男");
System.out.println(2);
break;
default:
System.out.println("泰国人");
}
}
}
实验15:用控制语句打印小九九口诀,方向不变
实验17:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存
5、JVM&GC
Java是一个跨平台的语言
JVM:Java Virtual Mechine Java虚拟机
GC:Java垃圾回收机制,有效的防止内存泄漏,其中有一套复杂的算法,用于计算内存中的哪片空间需要释放。
6、java类型转化
大象往冰箱装,分几步?
不可行, 大象很大 冰箱小 所以根本装不进去
大象:值
冰箱:变量
int age=10;
long->int->short->byte
double->float
byte->short->int->long
float->double
1、类型转换
大象往冰箱装,分几步?
①、自动转化:也叫隐式转化,即开发人员无需写代码进行转化,JVM帮我们完成类型装换 冰箱中装苹果
double d=3.14F;//在冰箱中放一个苹果
②、手动转化:也叫强制转化,即开发人员需要通过编写代码完成类型转化
语法:目标类型 变量名=(目标类型)值; int age=(int)3L;//大象往冰箱中转
2、变量的作用域
①、局部变量:也叫私有变量,在"语句块" 中—在if体 else体 循环体 方法体中定义的变量都属于局部变量
②、全局变量:也叫成员变量,在类体中定义的变量,正常情况下,当前类体中的所有方法都可以访问这个变量
关于全局变量的默认值
package com.etc.cast;
/**FileName: com.etc.cast CharDemo.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午10:23:25
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class CharDemo {
public static void main(String[] args) {
char cha='b';
int a=cha;
// 注意:在不同类型进行数学计算时,JVM会自动将小类型转换成大类型,然后进行计算
// char+int==>int +int JVM将char转换成int然后进行+计算
System.out.println(cha+3);
// 实验:如下24-26行代码会出错吗?
short s1=1;
// s1+1 不会出错,JVM会自动将s1 转换成int 然后和1进行+计算,问题int+int==>int
// short s2=int; 大象往冰箱中装
int s2=s1+1;
System.out.println(s2);
short s3=1;
s3+=4;//s3=s3+4; 会报错么?
System.out.println(s3);
}
}
package com.etc.cast;
/**FileName: com.etc.cast VarScope.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午11:03:22
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class VarScope {
// 在开发人员没有给全局变量赋初始值的情况下,在程序被运行时,JVM会自动给全局变量赋一个默认值
double age;
boolean flag;
public void method1(){
System.out.println(age);
}
public void method2(){
// 如下24-25行代码会出错吗?若不会打印几?若出错的话原因是什么
// 局部变量在运行时期,JVM不会自动为其赋初始默认值。。结论,局部变量必须赋初始值
// int a;
// System.out.println(a);
System.out.println(age);
System.out.println(flag);
}
}
package com.etc.cast;
/**FileName: com.etc.cast Cat1.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午10:08:54
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class Cast1 {
public static void main(String[] args) {
int age=(int)3L;//大象往冰箱中转
double d=3.14F;//在冰箱中放一个苹果
// System.out.println(d);
System.out.println(age);
double d1=3;
int b='a';
System.out.println(b);
}
}
package com.etc.work;
/**FileName: com.etc.work HomeWork0312.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午8:45:33
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class HomeWork0312 {
public static void main(String[] args) {
HomeWork0312 hw=new HomeWork0312();
hw.printTriangle();
}
public void printTriangle(){
int row=100;
/**
* i用于控制行,最大行是row,即有多少行就循环多少次
*/
for(int i=1;i<=row;i++){
// 每行要打印row-1个空格
for(int j=0;j<row-i;j++){
System.out.print(" ");
}
// 每行要打印2*row-1个*号
for(int m=0;m<2*i-1;m++){
System.out.print("*");
}
System.out.println();
}
}
/**
* @TODO :要求是一次打印一个符号 *
* @Date :2021年3月15日 上午8:49:00
* @Author :老张 :
*/
public void printRectangle(){
int i=0,j=0;
// 如下循环为什么小于3 一行
for(;i<3;i++){
// System.out.println("*****");
for(;j<10;j++){
System.out.print("*");
}
System.out.println("");
}
System.out.println("endding..........");
}
/**
* @TODO :要求是一次打印一个符号 *
* @Date :2021年3月15日 上午8:49:00
* @Author :老张 :
*/
public void printRectangle1(){
// 如下循环为什么小于3 一行
for(int i=0;i<3;i++){
// System.out.println("*****");
for(int j=0;j<10;j++){
System.out.print("*");
}
System.out.println("");
}
System.out.println("endding..........");
}
}
package com.etc.work;
/**FileName: com.etc.work SwitchDemo.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月15日:上午9:51:32
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月15日 老张 1.0 1.0 Version
*
*/
public class SwitchDemo {
public static void main(String[] args) {
SwitchDemo demo=new SwitchDemo();
demo.testSwitch();
}
/**
* @TODO :
* @Date :2021年3月15日 上午9:58:50
* @Author :老张 :
* ①、break必须不能省略
* ②、switch语句中,值允许出现 byte short int char String
*/
public void testSwitch(){
String a="1";
switch(a){
case "0"://a的值和case值 进行等值比较
System.out.println("女");
System.out.println(1);
break;
case "1":
System.out.println("男");
System.out.println(2);
break;
default:
System.out.println("泰国人");
}
}
}
7、java数组
思考:
int age=10;//可以保存一个人的年龄,假若现在有53个人的年龄 该怎么存储?
可以通过数组来对这些年龄进行统一管理
数组:java中可以将***多个***相同***类型***的数据放在一个变量中进行统一管理和统一控制
两个特点:一个是相同类型 二个是多个
相关概念:
1、元素:数组中存储管理的每一个数据叫一个元素
2、长度:数组元素的个数叫长度(6),数组名.length–>长度
3、索引:java通过数组元素的索引(index)值完成元素的操作
索引的取值是从0开始的。即第一个元素的索引是0,第6个元素的索引是5
4、遍历:将数组中的每一个元素访问一遍就是遍历
Java定义数组:
①、静态创建:数据类型 数组名[]={元素1,元素2,…元素n};
②、动态创建:数据类型 数组名[]=new 数据类型[长度];
注意:数组是咱们目前位置所涉及到的第一个引用类型(String)
实验18:从控制台录入5个学生的成绩,并存储到数组中,然后将这5个成绩打印到控制台。
实验19:从控制台录入n个整数,然后将n个整数打印到控制台
实验20:从控制台录入n个整数,然后打印其中的最大和最小值到控制台
数组的特点:
1、多个相同类型数据统一管理
2、数组的长度固定,一旦在内存中创建了这个数组,其中元素的个数将不能发生改变
静态:int as[]={1,2,3,4,5}; 多个元素用,号分割
动态:int as[]= new int[5];
1、数组的分类
1、一维数组:由一行多列组成
2、二维数组:一维数组中的每一个元素对应是另一个一维数组。也就是由多行多列组成的非规矩的二维结构
package com.etc.array;
/**FileName: com.etc.array TwoArray.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月16日:上午9:08:00
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月16日 老张 1.0 1.0 Version
*
*/
public class TwoArray {
/**
* 一维数组中的每一个元素对应是另一个一维数组。也就是由多行多列组成的非规矩的二维结构
* @TODO :二维数组
* @Date :2021年3月16日 上午9:19:21
* @Author :老张 :
*/
public void testArray1(){
// 如下是静态方式创建的二维数组
int as[][]={{1,2},{3,4,5},{6,7,8,9},{9,8,7}};
System.out.println(as.length);//长度是4 即 一共有4个一维数组。
// 怎么遍历
// 二维数组的遍历
for(int i=0;i<as.length;i++){
int y[]=as[i];//int temp=x[i];
for(int j=0;j<y.length;j++)
System.out.print(y[j]+" ");
System.out.println();
}
System.out.println("---------------如下是一维数组的遍历---------------");
int x[]={1,2,3,4};
for(int i=0;i<x.length;i++){
int temp=x[i];
System.out.println(temp);
}
}
/**
* @TODO :如下是动态方式创建的二维数组
* @Date :2021年3月16日 上午9:20:14
* @Author :老张 :
*/
public void testArray2(){
// int []a=new int[5];//5是一维数组的长度
int [][]as=new int[5][];//定义了as的二维数组,长度是5,即有5个一维数组组成。
int m[]={111,2,3,4};
int n[]={222,2,3,4,5,6,7,8};
int x[]={333,2,3,4};
int y[]={444,2,3,4};
int z[]={555,2,3,4};
as[0]=m;
as[1]=n;
as[2]=x;
as[3]=y;
as[4]=z;
for(int i=0;i<as.length;i++){
int[] temp=as[i];
for(int j=0;j<temp.length;j++){
System.out.print(temp[j]+" , ");
}
System.out.println();
}
}
/**
* @TODO :
* @Date :2021年3月16日 上午9:28:04
* @Author :老张 :
*/
public void testArray3(){
// int []a=new int[5];//5是一维数组的长度
int [][]as=new int[5][4];//定义了as的二维数组,长度是5,即有5个一维数组组成。
int m[]={111,2,3,4};
int n[]={222,2,3,4,5,6,7,8};
int x[]={333,2,3,4};
int y[]={444,2,3,4};
int z[]={555,2,3,4};
as[0]=m;
as[1]=n;
as[2]=x;
as[3]=y;
as[4]=z;
for(int i=0;i<as.length;i++){
int[] temp=as[i];
for(int j=0;j<temp.length;j++){
System.out.print(temp[j]+" ");
}
System.out.println();
}
}
/**
* @TODO :直接操作二维数组
* @Date :2021年3月16日 上午9:53:24
* @Author :老张 :
*/
public void testArray4(){
int [][]as=new int[5][4];//定义了as的二维数组,长度是5,即有5个一维数组组成。
int m[]={111,2,3,4};
int n[]={222,2,3,4};
int x[]={333,2,3,4};
int y[]={444,2,3,4};
int z[]={555,2,3,4};
as[0]=m;
as[1]=n;
as[2]=x;
as[3]=y;
as[4]=z;
// as[1][1]=22;
for(int i=0;i<as.length;i++){
for(int j=0;j<as[i].length;j++)
System.out.print(as[i][j]+" ");
System.out.println();
}
}
}
实验21、从控制台录入10个1-5之间的整数,然后编写代码计算每个整数出现的次数
比如
1 出现了 2 次
2 出现了 2次
…
实验22、从控制台录入10个1-5之间的整数,然后编写代码计算每个整数出现的次数,注意,未必必须录入10个数,在录入0时,停止继续录入,然后计算每个整数出现的次数。
比如
1 出现了 2 次
2 出现了 2次
…
实验23、编写代码,从控制台读入15个数并打印不相同的数,即在录入相同整数的时候不用存储到数组中。
实验24、编写代码,从控制台读入15个数并将这15个整数,按照从大到小存储到数组中。并打印所有整数。
实验25、编写一个5×5的矩阵,在其中随机录入0或者1,然后找到具有最多1的行,然后打印该行数据
实验26、现有现有数组int a[]={6,9,7,2,3}; 编写代码,找到其中最大的值并将最大值放在最后一个元素位置上,变成如下值{6,7,2,3,9}。
package com.etc.array;
import java.util.Scanner;
/**
* FileName: com.etc.array HomeWork.java
* TODO:
* Copyright: Copyright (c) 2015-2016 All Rights Reserved. Company: 01skill-soft.com Inc.
* @author: 老张
* @Date: 2021年3月16日:下午12:40:01
* @version: 1.0
*
* Modification History: Date Author Version Description
* ----------------------------------------------------------------------
* 2021年3月16日 老张 1.0 1.0 Version
*
*/
public class HomeWork {
/**
* @TODO :
* @Date :2021年3月16日 下午12:40:19
* @Author :老张 :
* 实验21、从控制台录入10个1-5之间的整数,然后编写代码计算每个整数出现的次
* 比如
* 1 出现了 2 次
* 2 出现了 2次
* ....
*/
public void testNumberCount(){
int a[]={3,3,2,1,4,5,4,1,4,2};
int b[]=new int[5];//保存每个数的个数 即 1有多少个存储在第一个元素,2有多少存储在第二个元素
int count1=0,count2=0,count3=0,count4=0,count5=0;
for(int i=0;i<a.length;i++){
switch(a[i]){
case 1:
count1++;
break;
case 2:
count2++;
break;
case 3:
count3++;
break;
case 4:
count4++;
break;
case 5:
count5++;
break;
}
}
System.out.println("1 出现了 "+count1+"次");
System.out.println("2 出现了 "+count2+"次");
System.out.println("3 出现了 "+count3+"次");
System.out.println("4 出现了 "+count4+"次");
System.out.println("5 出现了 "+count5+"次");
}
/**
* @TODO :实验23、编写代码,从控制台读入15个数并打印不相同的数,即在录入相同整数的时候不用存储到数组中。
* @Date :2021年3月16日 下午12:55:00
* @Author :老张 :
*/
public void inputDifferentNumber(){
int a[]=new int[15];
/*
* 两个作用
* 1、计数
* 2、用控制存储到数组a中的index值
*/
int b=0;
Scanner in=new Scanner(System.in);
// 如下循环用于从控制台读入15个整数,每循环一次读入一次
for(int i=0;i<a.length;i++){
System.out.println("请录入第【"+(i+1)+"】个数,当前不重复数字个数【"+b+"】");
int temp=in.nextInt();
boolean flag=true;
// 如下判断之前是否录入相同的数
// 判断的过程是将当前录入的数和数组中保存的数进行对比
for(int j=0;j<b;j++){
if(temp==a[j]){
flag=false;
break;
}
}
// 之前没有录入相同的数
if(flag){
a[b++]=temp;
}
}
System.out.println("共录入了"+b+"个不重复的数");
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
/**
* @TODO :实验23、编写代码,从控制台读入15个数并打印不相同的数,即在录入相同整数的时候不用存储到数组中。
* @Date :2021年3月16日 下午1:44:14
* @Author :老张 :
*/
public void testDifferentNo(){
int a[]=new int[15];
Scanner in=new Scanner(System.in);
int index=0;
// 用于从控制台录入15个数
for(int i=0;i<15;i++){
System.out.println("请录入第【"+(i+1)+"】个数,当前不重复数字个数【"+index+"】");
int temp=in.nextInt();
boolean flag=true;
// 要求:必须是之前没有录入过的数据才存储到数组中
// 方法:将录入的数a1和数组中所有的数进行比较,只有不等才存储
for(int j=0;j<a.length;j++){
// System.out.println(a[j]);
if(a[j]==temp){
flag=false;
break;
}
}
if(flag)
a[index++]=temp;//将录入的数存储到数组中
}
System.out.println("15个整数输入完毕,共录入了【"+(15-index)+"】个重复的数");
System.out.println("----------------所有不重复的数以下----------------");
for(int i=0;i<index;i++)
System.out.print(a[i]+" ");
System.out.println();
System.out.println("----------------所有不重复的数以上----------------");
}
}
r in=new Scanner(System.in);
// 如下循环用于从控制台读入15个整数,每循环一次读入一次
for(int i=0;i<a.length;i++){
System.out.println(“请录入第【”+(i+1)+"】个数,当前不重复数字个数【"+b+"】");
int temp=in.nextInt();
boolean flag=true;
// 如下判断之前是否录入相同的数
// 判断的过程是将当前录入的数和数组中保存的数进行对比
for(int j=0;j<b;j++){
if(temp==a[j]){
flag=false;
break;
}
}
// 之前没有录入相同的数
if(flag){
a[b++]=temp;
}
}
System.out.println(“共录入了”+b+“个不重复的数”);
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" “);
}
/**
* @TODO :实验23、编写代码,从控制台读入15个数并打印不相同的数,即在录入相同整数的时候不用存储到数组中。
* @Date :2021年3月16日 下午1:44:14
* @Author :老张 :
*/
public void testDifferentNo(){
int a[]=new int[15];
Scanner in=new Scanner(System.in);
int index=0;
// 用于从控制台录入15个数
for(int i=0;i<15;i++){
System.out.println(“请录入第【”+(i+1)+”】个数,当前不重复数字个数【"+index+"】");
int temp=in.nextInt();
boolean flag=true;
// 要求:必须是之前没有录入过的数据才存储到数组中
// 方法:将录入的数a1和数组中所有的数进行比较,只有不等才存储
for(int j=0;j<a.length;j++){
// System.out.println(a[j]);
if(a[j]==temp){
flag=false;
break;
}
}
if(flag)
a[index++]=temp;//将录入的数存储到数组中
}
System.out.println(“15个整数输入完毕,共录入了【”+(15-index)+"】个重复的数");
System.out.println("----------------所有不重复的数以下----------------");
for(int i=0;i<index;i++)
System.out.print(a[i]+" “);
System.out.println();
System.out.println(”----------------所有不重复的数以上----------------");
}
}