word网站链接怎么做,免费咨询身高问题,wordpress自动切换手机主题,免费公章在线生成器一、关键字 我们第一章案例中有很多关键字#xff0c;比如class、public、static、void等#xff0c;这些关键字依旧被java定义好了#xff0c;可以拿来用#xff0c;不需要死记硬背#xff0c;按照官方文档查询即可 #官方文档
https://docs.oracle.com/javase/tutorial/j…一、关键字 我们第一章案例中有很多关键字比如class、public、static、void等这些关键字依旧被java定义好了可以拿来用不需要死记硬背按照官方文档查询即可 #官方文档
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
常用关键字 二、标识符 上面的关键字的定义好的那么标识符就是我们自定义的通常来说我们称之为变量 比如说我们在定义class类的时候是不是都是随便起名 比如class xxx 这个就是变量(标识符) 但是标识符的定义需要遵循一定的命名规则如下 1、 标识符命名规则 由26个英文字母大小写 0-9 下划线_ 或者$ 组成 不可以数字开头 不可以使用关键字但是能包含关键字 java中严格区分大小写长度无限制 标识符不能包含空格 2、标识符命名格式
数据类型 变量名 变量值
案例
char gender 变量初始化 #java语言必须要先定于变量名才能使用
gender ‘男’ 变量赋值 3、基本数据类型
整型 byte short int long
浮点型 float double
字符型 chart
布尔型 boolean
#引用数据类型现在不用了解类 class
数组 array
接口 interface
枚举 enum
注解 annotation
记录 record 1、整型的数据范围 计算机存储单位 2、浮点类型范围 浮点数 不适合在精确小数点的环境比如银行舍弃的小数点也是很多钱 BigDecimal 来替换浮点 3、字符型 4、布尔值 4、运算符规则 当容量小的数据类型和容量大的数据类型做运算时结果自动转换为容量大的数据类型 案例
int i1 10
long l1 i1
float f1 l1
double d1 f1 此时的容量小或者大不是说内存空间的大小而是表示数据范围的大小long8字节 float4字节int 是4字节可以把数据赋值给long 8字节float 比long的范围还要大那么long可以赋值给float 三、数组 数组是多个相同类型数据按照一定顺序排序的集合并使用一个名字命名并通过编号的方式对这些数据统一管理 1、数组定义
案例1 数组定义 初始化值
int num1 10;
int num2;
num2 20#声明数组
double[] prices;#声明什么new什么 初始化步骤
prices new double[]{1.1,2.2,3.3} #初始化 并赋值 案例2
String[] fods;
foods new String[]{你好,你好2,你好3}
案例3
#不指定数组元素 指定长度
String[] foods new String[4]; #如果不带花括号可以直接写数字#表示能存放的大小后续在添加数组的值 案例1和案例2 是静态数组变量的初始化与数组元素的操作同时进行 案例3 是动态的 #数组变量的赋值与数组元素赋值操作分开 案例1和案例2定义的值就是数组的长度 小结
数组一旦初始化完成数组的长度就确定了并且不可更改静态定义 写花括号里
int[] arr1 new int[]{1,2,3,4}
动态 写大括号里
int arr[] new int[4]
2、数组元素调用
1、获取索引位值
int[] arr1 new int[]{1,2,3,4}#调用
arr1[0] #从0 开始
arr1[1]
arr1[2]
arr1[3] 2、给索引位赋值
int[] arr1 new int[4]#赋值
arr1[0] 555
arr1[0] 666
3、获取数组长度
int[] arr1 new int[4]#获取数组容量大小
arr1.length
4、如何遍历数组
int[] arr1 new int[4]
for (int i 0; i 4; i ){System.out.println(arr1[i])
}或者
for (int i 0; i prices.length; i ){System.out.println(arr1[i])
}5、数组元素默认初始化值 int[] arr1 new int[4]
System.outprintln(arr1[0])此时默认值是什么整型 0
浮点型 0.0
字符型 0
字符串 null
布尔类型 false 3、多维数组格式
#定义一维数组
int[] arr1 new int[]{1,2,3};#定义二维数组 静态
int[][] arr2 new int[][]{{1,2,3},{4,5,6}};#定义动态二维数组
#可以定义3个子数组元素
#每个子数组里面可以放4个元素
String[][] arr3 new String[3][4]; #动态二维数组2
#将第二个置空
#置空表示没设置上线写入的时候根据写入的元素决定
String[][] arr3 new String[3][]; 关于数组的写法
int[][] arr5
int[] arr5[]
int arrt5[][] 这3种写法都是堆的类型推断
#写的时候如果是在一行并且带有值的时候
#可以把右边的new int[][] 去掉也是可以的
int[][] arr2 {{1,2,3},{4,5,6}};二维数组的调用
int[][] arr2 {{1,2,3},{4,5,6}};#调用内层元素
arr2[0][0] #第一个数组的第一个元素
arr2[1][2] #第二个数组的第三个元素2#我们调用的时候如果不指定内存元素
#只指定第一个数组那么只会打印数组的内存地址
arr2[1]#如果是普通数据升级为二维数组
arr4[0] new int[4] #给数组添加一个子数组 二维数组的长度
#定义二维数组 静态
int[][] arr2 new int[][]{{1,2,3},{4,5,6}};arr2.length 是2 因为有2个元素
arr2[0].length 是3 因为数组1有3个元素
如何遍历二维数组
int[][] arr2 new int[][]{{1,2,3},{4,5,6}};for (int i 0; i arr2.length; i){for (int j 0; j arr2[i].length; i){System.out.println(arr2[i][j])
}二维数组的默认值 #动态初始化方法1
int[][] arr2 new int[3][2]#外层元素默认值
System.out.println(arr2[0]) 内存地址值
System.out.println(arr2[0])
#内层元素默认值
System.out.println(arr2[0][]) //0#动态初始化方法2
int[][] arr2 new int[3][]#外层元素默认值
System.out.println(arr2[0]) //null
#内层元素默认值
System.out.println(arr2[0][]) //报错空指针因为光有栈名称没有堆的具体数
4、数组案例
1、写出一维数组初始化的两种方式
int[] arr new int[5];//动态初始化String[] arr1 new String[]{Tom,Jerry,Jim};//静态初始化//数组一旦初始化其长度就是确定的。arr.length
//数组长度一旦确定就不可修改。
2、写出二维数组初始化的两种方式
int[][] arr new int[4][3];//动态初始化1
int[][] arr1 new int[4][];//动态初始化2int[][] arr2 new int[][]{{1,2,3},{4,5,6},{7,8}};//静态初始化
3、不同类型的一维数组元素的默认初始化值各是多少
整型 : 0
浮点型0.0
char:0
boolean :false
引用类型null 4、遍历如下的二维数组 int[][] arr new int[][]{{1,2,3},{4,5},{6,7,8}}; public class Exercise1 {public static void main(String[] args) {int[][] arr new int[][]{{1,2,3},{4,5},{6,7,8}};for(int i 0;i arr.length;i){for(int j 0;j arr[i].length;j){System.out.print(arr[i][j] \t);}System.out.println();}}
}
5、小组学员姓名 用一个数组存储本组学员的姓名先从键盘输入小组人数再从键盘输入每一个学员的姓名然后遍历显示。 import java.util.Scanner;public class Exercise2 {public static void main(String[] args) {//用一个数组存储本组学员的姓名//元素的类型是String长度是多少//长度的确定1根据自己小组定2可以从键盘输入Scanner input new Scanner(System.in);System.out.print(请输入小组的人数);int count input.nextInt();//声明数组并且初始化String[] names new String[count];//此时names数组中都是默认值nullfor(int i0; inames.length; i){System.out.print(请输入第 (i1) 个同学的姓名:);names[i] input.next();}//全部输入完后显示System.out.println(本组学员的姓名如下);for(int i0; inames.length; i){System.out.print(names[i] \t);}System.out.println();input.close();}
}
6、统计低于平均分的学生人数 先从键盘输入本组学员的人数再从键盘输入本组学员的姓名和成绩最后统计 本组学员的平均分 低于平均分的学员人数 哪些学员低于平均分 最高分和最低分分别是谁。 import java.util.Scanner;public class Exercise3 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print(请录入本组学员人数);int count input.nextInt();int[] grades new int[count];String[] names new String[count];for (int i 0; i grades.length; i) {System.out.print(第 (i1) 个学员的姓名);names[i] input.next();System.out.print(第 (i1) 个学员的成绩);grades[i] input.nextInt();}input.close();//学员姓名和成绩System.out.println(所有学员的成绩如下);for (int i 0; i names.length; i) {System.out.println(names[i] : grades[i]);}//找出最高分、最低分、累加总分计算平均分int max grades[0];int min grades[0];double sum 0;for (int i 1; i grades.length; i) {if(grades[i] max){max grades[i];}if(grades[i] min){min grades[i];}sum grades[i];}double avg sum/grades.length;//输出结果System.out.println(最高分成绩是 max);System.out.println(最第分成绩是 min);System.out.println(平均分成绩是 avg);System.out.println(获得最高分的有);for (int i 0; i names.length; i) {if(max grades[i]){System.out.println(names[i]);}}System.out.println(获得最第分的有);for (int i 0; i names.length; i) {if(min grades[i]){System.out.println(names[i]);}}System.out.println(低于平均分的有);int total 0;for (int i 0; i names.length; i) {if(grades[i] avg){System.out.println(names[i]);total;}}System.out.println(低于平均分的一共有 total 人);}
}
7、一年12个月的存储 用一个数组保存12个月的英语单词从键盘输入1-12显示对应的单词。 {January,February,March,April,May,June,July,August,September,October,November,December} import java.util.Scanner;public class Exercise4 {public static void main(String[] args) {String[] monthNames {January,February,March,April,May,June,July,August,September,October,November,December};Scanner input new Scanner(System.in);System.out.print(请输入月份值);int month input.nextInt();if(month 1 || month 12){System.out.println(输入有误);}else{System.out.println(月份 month 是 monthNames[month-1]);}input.close();}
} 8、随机产生偶数并排序 随机产生10个[1,100]之间的偶数存储到数组中并按照从小到大排序输出。 public class Exercise5 {public static void main(String[] args) {int[] arr new int[10];//随机产生10个[1,100]的偶数for (int i 0; i arr.length; i) {/*Math.random()[0,1)的小数Math.random()*50[0,50)的小数Math.random()*501[1,51)的小数(int)(Math.random()*50 1)[1,51)的整数即[1,50]的整数(int)(Math.random()*50 1) * 2 [1,100]的偶数*/arr[i] (int)(Math.random()*50 1) * 2;}//排序for (int i 1; i arr.length; i) {for(int j0; jarr.length - i; j){if(arr[j] arr[j1]){int temp arr[j];arr[j] arr[j1];arr[j1] temp;}}}//显示结果for (int i 0; i arr.length; i) {System.out.println(arr[i]);}}
}
9、正序、逆序遍历英文字母
要求使用char数组存储26个英文字母并分别用正序和逆序方式显示输出。要求10个一行。
public class Exercise6 {public static void main(String[] args) {char[] letters new char[26];for (int i0; iletters.length; i){letters[i] (char)(a i);}System.out.println(小写字母的正序排序);int count 0;for (int i 0; i letters.length; i) {count;if(count 10 || i letters.length-1){System.out.println(letters[i]);count 0;}else if(count 10) {System.out.print(letters[i],);}}System.out.println(小写字母的逆序排序);count 0;for (int i letters.length-1; i 0; i--) {count;if(count 10 || i 0){System.out.println(letters[i]);count 0;}else if(count 10) {System.out.print(letters[i],);}}}
}10、查找满分学员 先从键盘输入本组学员的人数再从键盘输入本组学员的姓名和成绩显示学员姓名和成绩。最后查找是否有满分(100)学员如果有显示姓名否则显示没有满分学员。 import java.util.Scanner;public class Exercise7 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print(请录入本组学员人数);int count input.nextInt();int[] grades new int[count];String[] names new String[count];for (int i 0; i grades.length; i) {System.out.print(第 (i1) 个学员的姓名);names[i] input.next();System.out.print(第 (i1) 个学员的成绩);grades[i] input.nextInt();}input.close();//输出学员姓名和成绩System.out.println(所有学员的成绩如下);for (int i 0; i names.length; i) {System.out.println(names[i] : grades[i]);}//查找满分学员System.out.println(本班满分学员);boolean flag false;for(int i0; igrades.length; i){if(grades[i] 100){System.out.println(names[i]);flag true;}}if(!flag){System.out.println(没有);}}
}
11、随机生成大乐透
模拟大乐透号码- 一组大乐透号码由10个1-99之间的随机数字组成可以重复
- 打印大乐透号码信息
public class Exercise8 {public static void main(String[] args) {//1、声明并创建数组int[] arr new int[10];//2、为元素赋值java.util.Random rand new java.util.Random();for (int i 0; i arr.length; i) {arr[i] rand.nextInt(99)1;}//3、输出for (int i 0; i arr.length; i) {System.out.print(arr[i] );}}} 12、升级大乐透 大乐透前区“35选5”后区“12选2”即前区在1-35之间的号码中随机选取5个后区在1-12之间的号码中随机选取2个组成一期的中奖号码请用程序模拟产生一组大乐透中奖号码。 开发提示 声明一个int类型的数组front长度为35默认值都是0 声明一个int类型的数组after长度为12默认值都是0 随机产生[0,35之间的整数。如果随机产生的是0那么就把front[0]修改为1如果随机产生的是5那么就把front[5]修改为1如果随机产生的是10就把front[10]修改为1。但是如果本次随机产生的是5而front[5]已经是1了那么需要重新随机产生一个整数。用这种方式把front数组的5个元素修改为1。 随机产生[0,12之间的整数。使用同样的方式把after数组的2个元素修改为1。 遍历front和after数组输出大乐透中奖号码判断front和after数组元素是否为1如果为1就显示它的下标1值。 public class Exercise9 {public static void main(String[] args) {int[] front new int[35];int[] after new int[12];for (int i 1; i 5; i) {/*Math.random()[0,1)的小数Math.random() * front.length[0,front.length)的小数(int)(Math.random() * front.length)[0,front.length)的整数[0,front.length-1]*/int index;do{index (int)(Math.random() * front.length);}while(front[index]1);front[index] 1;}for (int i 1; i 2; i) {int index;do{index (int)(Math.random() * after.length);}while(after[index]1);after[index] 1;}System.out.println(本期大乐透中奖号码);System.out.print(前区号码为);for (int i 0; i front.length; i) {if(front[i] 1){System.out.print(i1\t);}}System.out.print(\n后区号码为);for (int i 0; i after.length; i) {if(after[i] 1){System.out.print(i1\t);}}System.out.println();}
} 13、判断单词是否是回文单词
从键盘输入一个单词判断它是否是回文单词。开发提示
- 从键盘输入一个单词存放到一个String类型的变量word中
- 通过word.toCharArray()可以根据字符串word得到一个char[]类型的数组。其中toCharArray()是String类型提供的系统函数就像Math.random()等函数一样后面会学到这里先提前用一下。它的作用就是创建一个char[]数组并把字符串中的每一个字符依次存储到这个char[]数组中。Scanner input new Scanner(System.in);System.out.print(请输入一个英语单词);String word input.next(); //假如输入的英语单词是momchar[] wordCharArray word.toCharArray(); // wordCharArray字符数组内容是{m,o,m}
/*** author 尚硅谷-宋红康* create 19:39*/
public class Exercise10 {public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.print(请输入一个英语单词);String word input.next(); //假如输入的英语单词是mominput.close();char[] wordCharArray word.toCharArray(); // wordCharArray字符数组内容是{m,o,m}//(1)先假设它是对称的boolean flag true;//(2)遍历查看数组的元素是否首尾对称//left表示左边的下标//right表示右边的下标for(int left0,rightwordCharArray.length-1; leftright; left,right--){if(wordCharArray[left] ! wordCharArray[right]){flag false;break;}}if(flag){System.out.println(word 是回文单词);}else{System.out.println(word 不是回文单词);}}
}
14、寻找锦鲤 公司年会有一个寻找锦鲤的游戏每一个员工随意写一个字如果在“锦鲤”词库中有这个字那么就奖励500元锦鲤红包否则就没有每人只能玩一次。 现有锦鲤字库如下它们按照Unicode编码值从小到大排序 char[] koiFishWords {一,今,地,定}; public class Exercise11 {public static void main(String[] args) {char[] koiFishWords {一,今,地,定};Scanner input new Scanner(System.in);System.out.print(请输入一个字);char word input.next().charAt(0);input.close();int index -1;for(int left 0,right koiFishWords.length-1; leftright; ){//int mid (leftright)/2;int mid left (right-left)/2;if(koiFishWords[mid] word){index mid;break;}else if(word koiFishWords[mid]){//说明target在[mid]右边left mid1;}else{//说明targetarr[mid]target在[mid]左边right mid-1;}}if(index!-1){System.out.println(你是锦鲤恭喜获得锦鲤红包500元);}else{System.out.println(o(╥﹏╥)o);}}
}
15、绳子覆盖点 import java.util.Arrays;public class Exercise12 {public static void main(String[] args) {double[] arr new double[10];for (int i 0; i arr.length-1; i) {arr[i] Math.random() * 100;//[0,100)之间的小数}arr[arr.length-1] 0;System.out.println(直线上每一个点距离下一个点的距离Arrays.toString(arr));double length 150.5;int count 0;double sum 0;for (int i 0; i arr.length; i) {sum arr[i];if(sumlength) {count;}else {break;}}System.out.println(长度为 length 的绳子最多能覆盖 count个点);}
} 16、学生成绩统计 需求保存全班的每个组的成绩并对成绩做统计 使用二维数组保存全班的每个组的成绩 从键盘输入一共有几组 从键盘输入每一组分别有多少人 从键盘输入每一个同学的成绩 并对成绩做如下统计 统计每一组的最高分、最低分 统计每一组的平均分 统计全班的最高分、最低分 统计全班的平均分 统计全班的总人数 public class Exercise13 {public static void main(String[] args){java.util.Scanner input new java.util.Scanner(System.in);//(1)从键盘输入一共有几组确定二维数组的行数System.out.print(请输入一共有几组);int group input.nextInt();//(2)创建二维数组并确定行数int[][] arr new int[group][];//(3)从键盘输入每一组分别有多少人确定每一行的列数for(int i0; iarr.length; i){System.out.print(请输入第 (i1) 组有几个人:);arr[i] new int[input.nextInt()];//(4)从键盘输入每一个同学的成绩for(int j 0; jarr[i].length; j){System.out.print(请输入第 (j1) 个组员的成绩);arr[i][j] input.nextInt();}}//(4)显示成绩表System.out.println(每组成绩如下);for(int i0; iarr.length; i){for(int j0; jarr[i].length; j){System.out.print(arr[i][j] \t);}System.out.println();}/*4. 统计每一组的最高分、最低分5. 统计每一组的平均分6. 统计全班的最高分、最低分7. 统计全班的平均分8. 统计全班的总人数*/int[] groupMax new int[group];//有几组就有几个元素int[] groupMin new int[group];double[] groupAvg new double[group];int max -1;//全班的最高分int min 101;//全班的最低分假设成绩的范围是[0,100]double sum 0;int count 0 ;//把每一组的最高分最低分都初始化为特殊值for(int i0; igroup; i){groupMax[i] -1;groupMin[i] 101;}//统计for(int i0; iarr.length; i){double groupSum 0;//每一组累加总分都是从0开始for(int j0; jarr[i].length; j){if(arr[i][j] groupMax[i]){//找每组的最高分groupMax[i] arr[i][j];}if(arr[i][j] groupMin[i]){//找每组的最低分groupMin[i] arr[i][j];}if(arr[i][j] max){//找全班的最高分max arr[i][j];}if(arr[i][j] min){//找全班的最低分min arr[i][j];}groupSum arr[i][j];//累加每一组的总分sum arr[i][j];//累加全部的总分count;//累加总人数}//每一组的平均分 每一组的总分/每一组的人数groupAvg[i] groupSum / arr[i].length;}//全部的平均分 全部的总分 / 总人数double avg sum / count;System.out.println(全班的最高分 max);System.out.println(全班的最低分 min);System.out.println(全班的平均分 avg);System.out.println(全班的总人数 count);for(int i0; iarr.length; i){System.out.println(第 (i1) 组的最高分 groupMax[i]);System.out.println(第 (i1) 组的最低分 groupMin[i]);System.out.println(第 (i1) 组的平均分 groupAvg[i]);}}
}