Java 基础

Java 基础

一、基本语法

1、环境变量配置


2、测试环境变量

C:\Users\jacks>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

C:\Users\jacks>javac -version
javac 1.8.0_231

3、JDK、JRE和JVM的关系

4、Java文件编译->执行步骤

  1. 编写后缀为.java的代码
  2. 通过javac命令对java文件编译
  3. 通过java命令对生成的class文件进行运行



语法如下:

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

5、注释

1.单行注释和多行注释的作用:对所写的程序进行解释说明,增强可读性;
2.特点:注释的内容不参与编译;
3.文档注释的作用:注释的内容可以被JDK提供的javadoc工具所解析,生成一套以网页文件形式体现的该程序的说明文档。

  • 单行注释://
  • 多行注释:/* */
  • 文档注释(java独有):/** */

6、Java API 文档

API:Application Programming Interface,习惯上将语言提供的类库都称为API;
API文档:针对于提供的类库如何使用,给的一个说明

7、关键字和保留字

关键字

在这里插入图片描述
保留字

java保留字:现有java版本尚未使用,以后的版本可能会作为关键字使用,自己命名时避免使用这些保留字。gotoconst

8、标识符

java对各种变量方法等要素命名时使用的字符序列称为标识符。

合法标识符规则
  • 由26个英文字母大小写、0~9、_或$组成
  • 不可以以数字开头
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • java中严格区分大小写,长度无限制
  • 标识符不能包含空格
Java中名称命名规范
  • 包名:多单词组成时所有字母都小写
  • 类名、接口名:多单词组成时,所有单词的首字母大写
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
  • 常量名:素有字母都大写。多单词每个单词用下划线连接

9、变量

变量的概念
  • 内存中的一个存储区域
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
变量的作用
  • 用于在内存中保存数据
使用变量注意事项
  • java中每个变量必须先声明,后使用
  • 使用变量名来访问这块区域的数据
  • 变量的作用域:其定义所在的一对{}内
  • 变量只有在起作用内才有效
  • 同一个作用域内,不能定义重名的变量
//变量使用前必须先声明,并赋值,才能使用变量
//通常定义整型变量使用int,byte和short会超,long太长
class VariableTest {
	public static void main (String[] agrs){
		//System.out.println ("my name is wangzhixin");
		//变量的定义
		int myAge=25;
		//变量的使用
		System.out.println(myAge);
		//变量的声明
		int myNumber;
		//变量的赋值
		myNumber = 1001;
		System.out.println(myNumber);
		//不可以在同一作用域定义同名变量
		//int myAge = 18;
		//定义byte类型
		byte b1 = 12;
		//注意byte范围:-128 ~ 127
		//byte b2 = 128;
		//定义short类型
		short s1 = 129;
		//定义int类型
		int i1 = 1000;
		//定义long类型,注意long必须以"l"或"L"结尾
		long l1 = 7195785237L;
		System.out.println(b1);
		System.out.println(s1);
		System.out.println(i1);
		System.out.println(l1);
	}
	public void method(){
		int myClass = 1;
		
	}
	
}
变量的分类-按数据类型

对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间

  • 基本数据类型
    1. 数值型:
      • 整数类型
        byte、short、int、long
      • 浮点类型
        float、double
    2. 字符型
      char
    3. 布尔型
      boolean
  • 引用数据类型

    1. class(字符串)
    2. 接口
      interface
    3. 数组
      array [ ]

整数类型

通常定义整型变量使用int,byte和short会超,long太长


浮点型

通常定义浮点型变量时使用double,原因范围更大,精度更高。定义float浮点型,注意float必须以"f"或"F"结尾


字符型

声明一个字符;转义字符;直接使用Unicode值来表示字符型常量

布尔型

只能取两个值之一:true、false;常用于条件判断、循环结构

基本数据类型的运算规则

  1. 自动类型提升
    结论1:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型(*注:容量大小指的是数的范围大小);
    结论2:byte、char、short三种类型变量做运算时,结果为int类型;
    byte、char、short- ->int- ->long- ->float- ->double
class VariableTest2 {
	public static void main(String[] args) {
		byte b1 = 2;
		int i1 = 12;
		//编译不通过
		//byte b2 = b1 + i1;
		int b2 = b1 + i1;
		float f1 = b1 + i1;
		System.out.println(b2);
		System.out.println(f1);
		
	}
}
class VariableTest3{
	public static void main(String[] args){
		char c1 = 'a';  //a底层数时97
		int i1 = 10;
		int i4 = c1 + i1;
		System.out.println(i4);
		byte b1 = 2;
		//编译不通过
		//byte b2 = c1 + b1;
		int i2 = i1 + i4;
		System.out.println(i2);
	}
}
  1. 强制类型转换
    结论1:需要使用强制转换符号:();
    结论2:强制类型转换,可能导致精度损失;
class VariableTest4{
	public static void main(String[] args){
		double d1 = 123.8;
		//错误: 不兼容的类型: 从double转换到int可能会有损失
		//编译不通过
		//int i1 = d1;
		//强制类型转换
		int i1 = (int)d1; //截断操作(并非四舍五入,取整)
		System.out.println(i1);
		long l1 = 123;
		short s2 = (short)l1;
		System.out.println(s2);
		int i2 = 128;
		byte b1 = (byte)i2;
		System.out.println(b1);
	}
}

String 类型
1. String 属于引用数据类型,翻译为:字符串;
2. 声明String类型变量时,使用的一对双引号"";
3. String可以和8中基本数据类型变量做运算,且运算只能时连接运算。

class StringTest{
	public static void main(String[] args){
		String s1 = "Hello World!!!";
		System.out.println(s1);
		int number = 1404204;
		String numberStr = "学号:";
		String info = numberStr + number;//+:连接运算
		System.out.println(info);
	}
}

结论:String类型跟任何类型数据运算都是String

class String1 {
	public static void main(String[] args){
		char c = 'a';
		int num = 10;
		String str = "Hello";
		System.out.println(c + num + str); //107Hello  
		System.out.println(c + str + num); //97Hello10  正确为:aHello10
		System.out.println(c + (num + str)); //9710Hello 正确为:a10Hello
		System.out.println((c + num) + str); //107Hello
		System.out.println(str + num + c); //Hello1097 正确为:Hello10a
	}
}

9

10、运算符

前++是+1后的值,后++是用+1之前的值

例:随机输入一个三位数,并分别打印百位、十位和各位

class FuHaoYunSun {
	public static void main (String[] args){
		int num = 188;
		int bai = num / 100;
		int shi = num % 100 / 10; //int shi = num / 10 % 10;
		int ge = num % 10;
		System.out.println ("百位为:" + bai);
		System.out.println ("十位为:" + shi);
		System.out.println ("个位为:" + ge);
	}
}

逻辑运算符

& 与 && 的结论:
相同点:
①& 与 &&的运算结果相同;
②当符号左边为true时,二者都会执行符号右边的运算;
不同点:
①当符号左边为false时,&会继续执行符号右边的运算;&&不会执行符号右边的运算。
开发中推荐使用&&

//区分逻辑& 与 逻辑&&
//true 的区别
class  LogicTest{
	public static void main(String[] args) {
		boolean b1 = true;
		int num1 = 10;
		if (b1 & (num1++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println("num1 = " + num1);

			
		boolean b2 = true;
		int num2 = 10;
		if (b2 && (num2++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println("num2 = " + num2);			
	}
}

//输出结果如下:
我在北京
num1 = 11
我在北京
num2 = 11
//区分逻辑& 与 逻辑&&
//false 的区别
class  LogicTest{
	public static void main(String[] args) {
		boolean b1 = false;
		int num1 = 10;
		if (b1 & (num1++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println("num1 = " + num1);

			
		boolean b2 = false;
		int num2 = 10;
		if (b2 && (num2++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println("num2 = " + num2);
				
	}
}

//输出结果如下:
我在南京
num1 = 11
我在南京
num2 = 10

| 与 || 的结论:
相同点:
①| 与 || 的运算结果相同;
②当符号左边为fause时,二者都会执行符号右边的运算;
不同点:
①当符号左边为true时,|会继续执行符号右边的运算;||不会执行符号右边的运算。
开发中推荐使用||

class LogicTest {
	public static void main(String[] args){
		boolean b1 = true;
		int num1 = 10;
		if (b1 | (num1++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println ("num1 = " + num1);

		boolean b2 = true;
		int num2 = 10;
		if (b2 || (num2++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println ("num2 = " + num2);
		
	}
}
//输出结果如下:
我在北京
num1 = 11
我在北京
num2 = 10 	
class LogicTest {
	public static void main(String[] args){
		boolean b1 = false;
		int num1 = 10;
		if (b1 | (num1++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println ("num1 = " + num1);

		boolean b2 = false;
		int num2 = 10;
		if (b2 || (num2++ > 0)){
			System.out.println("我在北京");
		}else{
			System.out.println("我在南京");
		}
		System.out.println ("num2 = " + num2);
		
	}
}
//输入结果如下:
我在北京
num1 = 11
我在北京
num2 = 11

位运算符

结论:
①位运算符操作的都是整型的数据;
②<<:在一定范围内,每向左移1位,相当于* 2;
③>>:在一定范围内,每向右移1位,相当于 / 2

class BitTest {
	public static void main(String[] args){
		int i1 = 21;
		int i2 = -21;
		System.out.println ("i1 << 2 : " + (i1 << 2));
		System.out.println ("i1 >> 2 : " + (i1 >> 2));
		System.out.println ("i2 << 2 : " + (i2 << 2));
		System.out.println ("i2 >> 2 : " + (i2 >> 2));		
	}
}

输出结果如下:
i1 << 2 : 84
i1 >> 2 : 5
i2 << 2 : -84
i2 >> 2 : -6

变量交换

class BianLiangJiaoHuan {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 20;
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		//方式一:定义临时变量
		//int tmp = num1;
		//num1 = num2;
		//num2 = tmp;
		//System.out.println("num1 = " + num1);
		//System.out.println("num2 = " + num2);
		//方式二:
		//好处是不用定义临时变量
		//弊端:①是相加炒作可能超出存储范围;
			 //②有局限性,只适用于数值类型
		//num1 = num1 + num2;
		//num2 = num1 - num2;
		//num1 = num1 - num2;
		//System.out.println("num1 = " + num1);
		//System.out.println("num2 = " + num2);	
		//方式三:位运算符
		//有局限性,只适用于数值类型
		num1 = num1 ^ num2;
		num2 = num1 ^ num2;
		num1 = num1 ^ num2;
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		}
}
//输出结果为:
num1 = 11
num2 = 20
num1 = 20
num2 = 11

三元运算符

①三元运算符可以嵌套使用;
②凡是可以使用三元运算符的,都可以使用if…else…,反之不成立,后者实用型比较大,推荐使用if…else…;
③能用三元也能用if…else…语句的,推荐使用三元运算符,效率更高,代码更简洁

例:获取两个正整数最大值

//根据条件表达式真或假,决定执行表达式1,还是表达式2
//结构:(条件表达式)? 表达式1:表达式2
//①条件表达式结果为boolean型
//②如果条件表达式为true,则执行表达式1
//③如果条件表达式为false,则执行表达式2
//④表达式1和表达式2必须要求一致
class  MaxTest{
	public static void main(String[] args) {
		int m = 12;
		int n = 5;
		int max = (m > n)? m : n;
		System.out.println(max);
		double max1 = (m > n)? 2 : 1.0;
		System.out.println(max1);
		String maxStr = (m > n)? "m大" : "n大";
		System.out.println(maxStr);
		n = 12;
		String maxStr1 = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大");
		System.out.println(maxStr1);
	}
}

//输出结果如下:
12
2.0
m大
m和n相等

例:获取三个数中的最大值

class  MaxTest3{
	public static void main(String[] args) {
	int n1 = 1;
	int n2 = 30;
	int n3 = -8;
	int max1 = (n1 > n2)? n1 : n2;
	int max2 = (max1 > n3)? max1 : n3;
	System.out.println("三个数中的最大值为:" + max2);
	}
}
//输出结果如下:
三个数中的最大值为:30

案例:自动获取不同数据类型:

import java.util.Scanner;
class ScannerTest1 {
	public static void main (String[] args){
		Scanner scan = new Scanner(System.in);
		//System.out.println("请随机输入一个数字:");
		//int num = scan.nextInt();
		//System.out.println("您输入的数值为:" + num);

		System.out.println("请输入您的姓名:");
		String name = scan.next();
		System.out.println("您的姓名为:"+name);
		System.out.println("请输入您的芳龄:");
		int age = scan.nextInt();
		System.out.println("您的芳龄为:" + age);
		System.out.println("请输入您的体重:");
		double weight = scan.nextDouble();
		System.out.println("您的体重为:" + weight + "kg");
		System.out.println("您是否单身?(true/false)");
		boolean isLove = scan.nextBoolean();
		System.out.println(isLove);
		//对于char类型数据的获取,Scanner没有提供相关的方法。只能获取一个字符串。
		System.out.println("请输入您的性别:(男/女)");
		String sex = scan.next();
		char sexChar = sex.charAt(0);//获取索引为0位置上的字符
		System.out.println(sexChar);
	}
}

案例:if…else…使用

import java.util.Scanner;
class IfElseTest {
	public static void main (String[] args){
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入您的成绩:(0~100)");
		int score = scan.nextInt();
		System.out.println("您的成绩为:" + score);
		if (score == 100){
			System.out.println("奖励一辆宝马车!");
		}else if (score > 80 && score <= 99){
			System.out.println("奖励一台iPhone XS MAX!");
		}else if (score >= 60 && score <= 80){
			System.out.println("奖励一台iPad");
		}else{
			System.out.println("啥奖励也没有");
		}
	}
} 

11、程序流程控制

11.1 顺序结构
11.2 分支结构



案例:随机输入三个整数并从小到大排序

import java.util.Scanner;
class CompareTest1{
	public static void main(String[] args){
		Scanner myScan = new Scanner(System.in);
		System.out.println("请输入第一个整数:");
		int num1 = myScan.nextInt();
		System.out.println("请输入第二个整数:");
		int num2 = myScan.nextInt();
		System.out.println("请输入第三个整数:");
		int num3 = myScan.nextInt();
		if (num1 >= num2){
			if (num3 >= num1){
				System.out.println("三个数一次从小到大排序为:" + num2 + "、" + num1 + "、" + num3);
			}else if (num3 <= num2){
				System.out.println("三个数一次从小到大排序为:" + num3 + "、" + num2 + "、" + num1);
			}else{
				System.out.println("三个数一次从小到大排序为:" + num2 + "、" + num3 + "、" + num1);
			}
		}else {
			if (num3 >= num2){
				System.out.println("三个数一次从小到大排序为:" + num1 + "、" + num2 + "、" + num3);
			}else if (num3 <= num1)	{
				System.out.println("三个数一次从小到大排序为:" + num3 + "、" + num1 + "、" + num2);
			}else{
				System.out.println("三个数一次从小到大排序为:" + num1 + "、" + num3 + "、" + num2);
			}
		}
	}
}

获取随机数

//随机获取[40,80),其中默认范围为:[0.0,1.0)
int value = (int)(Math.random() * 41 + 40);
System.out.println("从[40,80)获取的随机数为:" + value);

//获取随机数公式:如,获取随机数范围[a,b)
//int value = (int)(Math.random() * (b - a + 1) + a )

案例

import java.util.Scanner;
class  IfExer1{
	public static void main(String[] args) {
		Scanner myScan = new Scanner(System.in);
		System.out.println("请输入您的身高(cm):");
		int height = myScan.nextInt();
		System.out.println("请输入您的财富:");
		double wealth = myScan.nextDouble();
		//方式一:
		//System.out.println("请输入是否帅?(true/false):");  
		//boolean isHandsome = myScan.nextBoolean();  
		//方式二:
		System.out.println("请输入是否帅?(是/否)");
		String isHandsome = myScan.next();
		if (height >= 180 && wealth >= 1 && isHandsome.equals("是")){
			System.out.println("我一定要嫁给他!!!");
		}else if (height >= 180 || wealth >= 1 || isHandsome.equals("是")){
			System.out.println("嫁吧,比上不足,比下有余。");
		}else {
			System.out.println("不嫁!");
		}
	}
}
11.4 switc - case结构

①根据switch表达式中的值,一次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字火此switch-case结构末尾为止。
②break关键字,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构。
③switch结构中的表达式,只能是如下6中数据类型之一:byte、short、char、int、枚举类型(jdk5.0新增)、String类型(jdk7.0新增)。
④case之后只能声明常量,不能声明范围。
⑤break关键字是可选的。
⑥default相当于if-else结构中的else,default结构是可选的,而且位置是灵活的。


案例,switch-case

import java.util.Scanner;
class  SwitchCase1{
	public static void main(String[] args) {
		Scanner myScan = new Scanner(System.in);
		System.out.println("请输入数值:");
		int number = myScan.nextInt();
		switch(number){
			case 0:
				System.out.println("zero");
				break;
			case 1:
				System.out.println("one");
				break;
			case 2:
				System.out.println("two");
				break;
			default:
				System.out.println("other");
		}
	}
}

switch-case 案例

import java.util.Scanner;
class  seasonDay{
	public static void main(String[] args){
		Scanner myScan = new Scanner(System.in);
		System.out.println("请输入季节?(spring/summer/autumn/winter)");
		String season = myScan.next();
		switch (season){
		case "spring":
			System.out.println("春暖花开");
			break;
		case "summer":
			System.out.println("夏日炎炎");
			break;
		case "autumn":
			System.out.println("秋高气爽");
			break;
		case "winter":
			System.out.println("冬雪恺恺");
			break;
		default:
			System.out.println("季节输入错误!");
		}
		
	}
}
11.3 循环结构

循环结构的四要素:
① 初始化条件;
② 循环条件 -->boolean 类型
③ 循环体
④ 迭代条件

  • for 循环
    基本结构
for (;;){}

案例:遍历1~300,且3的倍数后面加foo,5的倍数后面加biz,7的倍数后面加baz

class  ForTest2{
   public static void main(String[] args) {
   	for (int i = 1;i <= 300 ;i++ ){
   		System.out.print(i + " ");
   		if (i % 3 == 0){
   			System.out.print("foo ");
   		}
   		if (i % 5 == 0){
   			System.out.print("biz ");
   		}
   		if (i % 7 == 0){
   			System.out.print("baz");
   		}
   		System.out.println();
   	}
   }
}

获取两个数的最大公约数和最小公倍数

import java.util.Scanner;

class ForTest5 {

	public static void main (String[] args){

		Scanner myScan = new Scanner(System.in);

		System.out.println("请输入正整数m:");

		int m = myScan.nextInt();

		System.out.println("请输入正整数n:");

		int n = myScan.nextInt();
		
		//获取最大公约数
		int min = (m <= n)? m:n;
		//遍历
		for (int i = min;i >= 1;i--){
			if (m % i == 0 && n % i == 0 ){
				System.out.println(m +"和" + n + "的最大公约数为:" + i);
				break;
			}
		}
		//获取最小公倍数
		int max = (m >= n)? m:n;
		//遍历
		for (int a = max;a <= m * n ;a++ ){
			if (a % m == 0 && a % n == 0){
				System.out.println(m + "和" + n + "的最小公倍数为:" + a);
				break;
			}
		}
	}
}

求水仙花数

水仙花数是一个3位数,各个位上数的立方等于本身即为水仙花数

class ForWattler {
	public static void main(String[] args) {

		for (int a = 100;a < 1000 ;a++ ){
			if (a == ((a / 100) * (a / 100) * (a / 100)) + ((a % 100 / 10) * (a % 100 / 10) * (a % 100 / 10)) + ((a % 10) * (a % 10) * (a % 10))){
			System.out.println("水仙花数为:" + a);
			}
		}
	}
}

  • while 循环
  1. while 循环要小心不要漏了迭代条件,一旦丢了可能会导致死循环;
  2. for 循环和 while 循环是可以想换转换的
  3. for 和while 循环的区别在于,初始化添加的作用范围不同,for出了作用范围不能调用,while 可以调用。
    基本结构
while (){;;
}

while 遍历100以内的偶数

class  WhileTest{
   public static void main(String[] args) {
   	//遍历100以内的偶数
   	int i = 1;
   	while (i <= 100){
   		if (i % 2 ==0){
   			System.out.println(i);
   		}
   		i++;
   	}
   	//此时依然而已调用,输出结果为101,for循环不能调用
   	System.out.println(i);
   }
}
  • do - while 循环
  • 特点是至少会执行一次循环体。

基本结构

do{;;
		}
		while ();
	}
}

遍历1~100偶数并记录个数及计算总和

class  WhileTest1{
	public static void main(String[] args) {
		//遍历100以内的偶数
	int sum = 0; //记录总和
	int count = 0; //记录个数
	int i = 1;
	do{
		if (i % 2 ==0){
			System.out.println(i);
			sum += i;
			count++;
		}
		i++;
	}
	while (i <= 100);
	System.out.println("偶数的和为:" + sum);
	System.out.println("偶数的个数为:" + count);
	}
}
  • 嵌套循环

嵌套循环案例:输入如下形状


/*
       *
      * *
     * * *
    * * * *
   * * * * *
    * * * *
     * * *
	  * *
 	   *

*/

class  ForForTest7{

   public static void main(String[] args) {
   	//输出上半部分
   	
   	// 输出"-"

   	for (int i = 1;i <= 5 ;i++ ){

   		for (int j = 1;j <= 5 - i ;j++ ){

   			System.out.print(" ");
   		}
   	
   	//输出"* "
   	for (int k = 1;k <= 0 + i  ;k++ ){

   		System.out.print("* ");
   	}

      System.out.println();

   	}
   	//输出下半部分
   	//输出"-"

   	for (int m = 1; m <= 4;m++ ){

   		for (int n = 1;n <= m + 0 ;n++ ){

   			System.out.print(" ");
   		}
   	//输出"* "
   	for (int l = 0;l <= 4 - m ;l++ ){

   		System.out.print("* ");
   	}

   		System.out.println();
   	}
   }
}

嵌套循环:九九乘法表

class  NineNineTable{
	public static void main(String[] args) {

		for (int i = 1;i <= 9 ;i++ ){

			for (int j = 1;j <= i ;j++ ){

				System.out.print(i + " * " + j + " = " + i * j + " ");
			}
			System.out.println();
		}
	}
}
  • break、continue
  1. break:结束当前循环
  2. continue:结束当次循环
  3. break 和 continue 关键字后面不能声明执行语句
  4. 有循环嵌套时,默认跳出此关键字最近的一层循环
  5. 可以结束指定标识的一层循环结构

break 和 continue 案例

class  BreakContinueTest{
	public static void main(String[] args) {

		for (int i = 1;i <= 10 ;i++ ){

			if (i % 4 == 0){

				break;
				
				//continue;

			}
			System.out.println(i);
		}

		System.out.println();

		label:for (int i = 1;i <= 4 ;i++ ){

			for (int j = 1;j <= 10 ;j++ ){

				if (j % 4 == 0){

					//break;  //默认跳出此关键字最近的一层循环
					//continue;
					//break label;	//结束指定表示的一层循环结构
					continue label;

				}
				System.out.print(j);
			}

				System.out.println();
		}
		
	}
}

  • return的使用
  1. return 并非专门用于结束循环的,它的功能是结束一个方法,当要给方法执行到一个return语句时,这个方法将被结束。
  2. 与break 和 continue 不同的是,return直接结束整个方法,不管这个return 处于多少层循环之内。

12、数组

12.1 数组(Array)

是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行管理。

12.2 数据的概念
  • 数组名
  • 下标、角标(或索引)
  • 元素
  • 数组的长度(元素的个数)
  • 数组属于引用数据类型的变量。数组的元素,既可以是基本苏剧类型,也可以是引用数据类型
  • 创建数组对象会在内存中开辟一整块连续的空间
  • 数组的长度一旦确定,就不能修改
12.3 数组的分类
  • 按照维数:一维数组、多维数组
  • 按照数组元素类型:基本数据类型元素的数组、引用数据类型元素的数组

一维数组的使用

public class TelPhone {
	public static void main(String[] args) {
		int[] arr1 = new int[] { 4, 1, 2, 8, 9, 3 };
		int arr2[] = new int[] { 1, 5, 2, 2, 4, 0, 1, 3, 1, 0, 1 };// 13229418141
		String tel = "";
		for (int i = 0; i < arr2.length; i++) {
			tel += arr1[arr2[i]];
		}
		System.out.println("联系方式:" + tel);

	}
}

案例:一维数组的使用

package com.jackson.exer;
import java.util.Scanner;

public class ArrayDemo1 {
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
//		读取学生个数
		System.out.print("请输入学生个数:");
		int number = myScanner.nextInt();
//		创建数组,存储学生成绩,使用动态初始化
		int[] scores = new int[number];
//		给数组中的元素赋值
		int maxscore = 0;
		System.out.print("请输入" + number + "个学生成绩:");
		for (int i = 0; i < scores.length; i++) {
			scores[i] = myScanner.nextInt();
			if (scores[i] >= maxscore) {
				maxscore = scores[i];
			}
		}
//		获取数组中元素最大值,即最高分
//		int maxscore = 0;
//		for (int i = 0; i < scores.length; i++) {
//			if (maxscore < scores[i]) {
//				maxscore = scores[i];
//
//			}
//		}
		System.out.println("最高分为:" + maxscore);
//		求出离最高分的差值并分等级
		char level;
		for (int j = 0; j < scores.length; j++) {
			if (scores[j] + 10 >= maxscore) {
				level = 'A';
			} else if (scores[j] + 20 >= maxscore) {
				level = 'B';
			} else if (scores[j] + 30 >= maxscore) {
				level = 'C';
			} else {
				level = 'D';
			}
			System.out.println("Student " + j + " Score is " + scores[j] + " Grade is " + level);

		}
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值