Java程序设计语言-基础教程-第一章

一、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;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HyXxIHfd-1615875923360)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210309102931179.png)]

命令窗口测试
在这里插入图片描述

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:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dwdj1I5h-1615875923403)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210315091815182.png)]

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(”----------------所有不重复的数以上----------------");

}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值