一 配置Java环境

1.1安装Java软件(一路向下)
image.pngimage.png
2.配置环境变量
(1)此电脑>右键属性>高级设置>高级>环境变量>系统变量>新建JAVA_HOME>path>编辑新建%JAVA_HOME%\bin
如何配置
– 创建新的变量名称:JAVA_HOME
计算机-右键属性-高级系统设置-高级-环境变量-系统变量
– 为 JAVA_HOME 添加变量值:JDK 安装目录
C:\Program Files\Java\jdk1.7.0_80
– 在 path 环境变量最前面添加如下内容
%JAVA_HOME%\bin;
image.png
image.png
image.png

1.2 hello 程序分析

1.public class Wwl 类的签名
2.public static void main(String[] args){}
程序的入口方法(函数)/主方法/main方法;{}写的是需要执行的程序。
3.System.out.println(“hello”);
在控制台中输出 hello。
注意:
1.Java语言要区分大小写
2.类的名称必须和文件的名称完全一致。不能有.java。
3.一对{}就是一个层次。
4.所有标点符号必须是英文状态输入。
1.3 输出语句
System.out.println();作用就是在控制台输出()中的参数。
注意:
1.println 中的ln表示输出完成之后,换行。
2.print 表示输出后,不换行。
有一些特殊号:
①不使用ln,但是想换行 (\n表示换行 ,“\”表示转义字符)
image.png image.png
image.png image.png
1.4 注释
1.Java 中注释分类 :
单行注释 – 格式: //注释文字
多行注释 – 格式: / 注释文字 /
文档注释 – 格式:/* 注释文字 / (为type、method、field这些内容做的特殊的注释)
1.5 关键字
image.png
image.png image.png
注意:
Java中所有的类名,首字母必须要大写。
image.pngimage.png
image.pngimage.png
eclipse快捷键
内容辅助键: alt+/ (快速提示)main/、sysout alt+/、sc/
自动导包:Ctrl+shift+o
快速单行注释:Ctrl+/ (再按一次取消)
快速多行注释:ctrl+shift+/
删除一行:ctrl+d
1.6 删除项目和导入项目
image.png
导入项目
image.pngimage.png
image.png

二 语法格式

2.1 常量
常量分类
– 字符串常量 用双引号括起来的内容(“HelloWorld”)
– 整数常量 所有整数(12,-23)
– 小数常量 所有小数(12.34)
– 字符常量 用单引号括起来的内容(‘a’,’A’,’0’)
– 布尔常量 较为特有,只有 true 和 false
– 空常量 null(数组部分讲解)
2.2 变量
image.pngimage.png
image.png
2.3 数据类型
image.png
image.png
Java中数据类型的分类 :基本数据类型 ;引用数据类型
image.pngimage.png
引用数据类型:除了基本数据类型,其余的都是引用数据类型。
image.pngimage.png
各种类型变量的赋值方式
image.png
image.png
隐式数据类型转换 :取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提
升为大的,再运算
image.png
image.png从图中可以看出,小类型到大类型可以转换。
整数类型转换为char类型
image.png
疑问image.png

三 运算符

算术运算符:+、-、*、/、%、++、—
代码案例1
一个只有算术运算符的表达式的结果类型取决于该表达式中类型最大的操作数
image.pngx+5.2的结果取决于5.2,所以其结果是double类型,不能赋值给int类型
解决方案:让两边的数据类型一致。image.png
特殊:image.png
代码案例2
++和—属于一元运算,值有一个操作数。
image.png
代码案例3
image.png
关系运算符:>、>=、<、<=、==、!=(不等于)
逻辑运算符:&&、||、!
image.pngimage.png
三元运算:表达式1?值1:值2 如果表达式1的结果为true,则整个表达式的结果为值1,否则为值2
image.png
image.png

四 键盘录入

image.png
键盘录入步骤
image.png

  1. import java.util.Scanner;
  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/2706946/1605254129770-6cf45202-b224-4420-86c5-512310b4aa43.png#align=left&display=inline&height=25&margin=%5Bobject%20Object%5D&name=image.png&originHeight=49&originWidth=379&size=2835&status=done&style=none&width=189.5)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/2706946/1605254191844-729ea1c8-4cb2-4669-89ec-7532d9ac5b16.png#align=left&display=inline&height=41&margin=%5Bobject%20Object%5D&name=image.png&originHeight=82&originWidth=480&size=33592&status=done&style=none&width=240)
  1. Scanner sc = new Scanner(System.in);

image.png
image.png
image.png

  1. System.out.println("请输入你的出生年份");
  2. //从控制台获取一个整数
  3. int year=sc.nextInt();
  4. System.out.println("你的出生年份是:"+year);

⑤录入一个double 类型

  1. System.out.println("请输入你的存款金额");
  2. //从控制台录入一个double
  3. double money=sc.nextDouble();
  4. System.out.println("你的余额是:"+money);

⑥录入一个字符类型

  1. System.out.println("请输入你的性别:");
  2. //从控制台不能录入一个字符,所以用下面的方式录入
  3. char gender=sc.next().charAt(0);
  4. System.out.println("你的性别是:"+gender);

五 流程控制语句

5.1 if···else语句

  1. public class Wl1 {
  2. public static void main(String[] args) {
  3. System.out.println("程序运行开始······");
  4. //if···else
  5. int x=8;
  6. if(x<9)
  7. System.out.println("x的值挺小");
  8. else
  9. System.out.println("x的值挺da");
  10. System.out.println("程序运行结束······");
  11. //if···else if···else
  12. int mingic=4;
  13. if(mingic==1){
  14. System.out.println("奖励10000");
  15. }else if(mingic==2){
  16. System.out.println("奖励1000");
  17. }else if(mingic==3){
  18. System.out.println("奖励0");
  19. }
  20. else if(mingic==4){
  21. System.out.println("奖励53");
  22. }
  23. }
  24. }
  25. 程序运行开始······
  26. x的值挺小
  27. 程序运行结束······
  28. 奖励53

5.2 循环语句
image.png

  1. public class Wl2 {
  2. public static void main(String[] args) {
  3. int i=0;
  4. //一般知道循环次数
  5. for(System.out.println("wwwang");i<3;System.out.println("lin")){
  6. System.out.println(i+"我要暴富");
  7. i++;
  8. }
  9. }
  10. }
  11. 结果
  12. wwwang
  13. 0我要暴富
  14. lin
  15. 1我要暴富
  16. lin
  17. 2我要暴富
  18. lin

image.png

  1. //一般不知道循环次数
  2. int x=0;
  3. while(x<5){
  4. System.out.println(x+"、武汉好热");
  5. x++;
  6. }
  7. 结果
  8. 0、武汉好热
  9. 1、武汉好热
  10. 2、武汉好热
  11. 3、武汉好热
  12. 4、武汉好热

image.png

  1. //一般不知道循环次数
  2. int m=0;
  3. do{
  4. System.out.println(m+"武汉好热");
  5. m++;
  6. }
  7. while(m<5);
  8. 结果
  9. 0武汉好热
  10. 1武汉好热
  11. 2武汉好热
  12. 3武汉好热
  13. 4武汉好热

区别:
do…while 循环至少会执行一次循环体。(先循环再判断)
for 循环和 while 循环只有在条件成立的时候才会去执行循环体
练习:控制台的万年历

  1. package com.hdzx;
  2. import java.util.Scanner;
  3. public class Calendar {
  4. public static void main(String[] args) {
  5. Scanner sc=new Scanner(System.in);
  6. System.out.println("请输入年份:");
  7. int year=sc.nextInt();
  8. System.out.println("请输入月份:");
  9. int month=sc.nextInt();
  10. //根据输入的年份和月份,计算当年当月的第一天是周几,当年当月的总天数是多少
  11. //当月第一天是周几
  12. //计算1900-1-1到当月之前的总天数
  13. int total=0;
  14. for(int y=1900;y<year;y++){
  15. if(y%400==0 || y%100!=0 && y%4==0){
  16. total+=366;
  17. }else{
  18. total+=365;
  19. }
  20. }
  21. for(int m=1;m<month;m++){
  22. int ds=31;
  23. switch(m){
  24. case 4:
  25. case 6:
  26. case 9:
  27. case 11:
  28. ds=30;
  29. break;
  30. case 2:
  31. if(year%400==0 || year%100!=0 && year%4==0){
  32. ds=29;
  33. }else{
  34. ds=28;
  35. }
  36. }
  37. //将天数加到总天数上
  38. total+=ds;
  39. }
  40. int firstDay=(total%7)+1;
  41. //如果第一天是周一,则修改为0
  42. firstDay=firstDay==7?0:firstDay;
  43. //计算当月的总天数
  44. //当月的总天数
  45. int days=31;
  46. switch(month){
  47. case 4:
  48. case 6:
  49. case 9:
  50. case 11:
  51. days=30;
  52. break;
  53. case 2:
  54. if(year%400==0 || year%100!=0 && year%4==0){
  55. days=29;
  56. }else{
  57. days=28;
  58. }
  59. }
  60. //循环的总次数
  61. int count=days+firstDay;
  62. System.out.println("日\t一\t二\t三\t四\t五\t六");
  63. for(int i=0;i<count;i++){
  64. //判断是否应该输出空格
  65. if((i-firstDay+1)<1){
  66. System.out.print("\t");
  67. }else{
  68. System.out.print((i-firstDay+1)+"\t");
  69. }
  70. //判断是否需要换行
  71. if((i+1)%7==0){
  72. //换行
  73. System.out.println();
  74. }
  75. }
  76. }
  77. }
  78. 结果
  79. 请输入年份:
  80. 2020
  81. 请输入月份:
  82. 11
  83. 1 2 3 4 5 6 7
  84. 8 9 10 11 12 13 14
  85. 15 16 17 18 19 20 21
  86. 22 23 24 25 26 27 28
  87. 29 30

六 数组

6.1 断点调试
image.png
image.png
②以debug的方式启动程序
image.png
③一旦debug启动,就会进入debug的视图模式
image.png image.png
image.png
注意:在调试过程中,如果要结束调试,一定要记得让程序停止,
image.png
6.2 Random(产生整数随机数)
步骤:
①导包 import java.util.Random;
②创建对象 Random r = new Random();
③获取伪随机数 int number = r.nextInt(10);(产生的数据在 0 到 10 之间,包括 0,不包括 10。)

  1. package com.hdzx;
  2. import java.util.Random;
  3. public class Wl2 {
  4. public static void main(String[] args) {
  5. //创建random对象
  6. Random r=new Random();
  7. for(int i=0;i<10;i++){
  8. //产生一个[0-10)的随机数
  9. int num=r.nextInt(10);
  10. System.out.println(num);
  11. }
  12. }
  13. }

案例:系统产生一个 1-100 之间的随机数,请猜出这个数据是多少。

  1. package com.hdzx;
  2. import java.util.Scanner;
  3. import java.util.Random;
  4. public class Wl3 {
  5. public static void main(String[] args) {
  6. // 系统产生一个随机数1-100之间的。
  7. Random r=new Random();
  8. int num=r.nextInt(100)+1;
  9. while(true){
  10. // 键盘录入我们要猜的数据
  11. Scanner sc=new Scanner(System.in);
  12. System.out.println("请输入你猜的数字(1-100):");
  13. int guessnum=sc.nextInt();
  14. // 比较这两个数据(用if语句)
  15. if(guessnum>num){
  16. System.out.println("大了");
  17. }else if(guessnum<num){
  18. System.out.println("小了");
  19. }else{
  20. System.out.println("恭喜你,猜中了!");
  21. break;
  22. }
  23. }
  24. }
  25. }

6.3 数组(数组其实就是一组数)
数组:就是在内存中开辟了一组固定长度的连续的空间,可以同时存储多个数据,而且这组连续的空间的数据类型是完全一致的。
两个特点:固定长度;固定类型。
定义格式:格式 1:数据类型[] 数组名;(一般用这个) 数据类型用来定义数组中存储的数据类型
格式 2:数据类型 数组名[]; []表示定义的是一个数组
注意:这两种定义做完了,数组中是没有元素值的。

  1. //定义数组
  2. int[] arr1;
  3. String[] arr2;
  4. char arr3[];

image.png

  1. public class Wl4 {
  2. public static void main(String[] args) {
  3. //定义数组
  4. int[] arr1;
  5. arr1=new int[5];
  6. String[] arr2={"wwwwang","llliu","xxie"};
  7. char arr3[];
  8. arr3=new char[]{'天','空','蓝'};
  9. }
  10. }

在上面的初始化方式中,只有方式①是没有指明数组中存储的数据。
如果使用方式①初始化数组,数组会默认给每个空间赋值。
image.pngimage.png
数组的使用
①修改数组的元素值
image.png
②获取数组的元素值

  1. //获取某个指定索引的值
  2. int x=arr[4];
  3. System.out.println(x);

③获取数组的元素个数(length)

  1. //获取数组的长度
  2. int len=arr.length;
  3. System.out.println("数组的长度:"+len);
  4. 结果
  5. 数组的长度:5

遍历数组
遍历:就是逐个的使用一遍。

  1. //遍历数组(将数组的每个值逐个输出在控制台)
  2. for (int i=0;i<arr.length;i++){
  3. System.out.println(arr[i]);
  4. }
  5. 结果
  6. 100
  7. 0
  8. 0
  9. 0
  10. 10000

image.pngimage.png
image.png
image.png
image.png
image.png
image.png
image.png
二维数组
image.png
image.png
image.png
image.png
双层循环
①要在控制台输出“¥¥¥¥¥”

  1. public static void main(String[] args) {
  2. System.out.println("¥¥¥¥¥");
  3. }

②在控制台输出5行“¥¥¥¥¥”

  1. public static void main(String[] args) {
  2. for(int i=0;i<5;i++){
  3. System.out.println("¥¥¥¥¥");
  4. }
  5. }

③要求每次输出语句只输出一个“¥”实现上面的两个题目

  1. for(int i=0;i<5;i++){
  2. System.out.print("¥");
  3. }
  4. 结果
  5. ¥¥¥¥¥
  1. for(int i=0;i<5;i++){
  2. for(int j=0;j<5;j++){
  3. System.out.print("¥");
  4. }
  5. System.out.println();
  6. }
  7. 结果
  8. ¥¥¥¥¥
  9. ¥¥¥¥¥
  10. ¥¥¥¥¥
  11. ¥¥¥¥¥
  12. ¥¥¥¥¥

双层循环中外层循环控制行,里层循环控制每个输出的个数。
④要输出如下效果

¥¥
¥¥¥
¥¥¥¥
¥¥¥¥¥

  1. public static void main(String[] args) {
  2. for(int i=0;i<5;i++){//控制行
  3. for(int j=0;j<i+1;j++){//控制每行输几个
  4. System.out.print("¥");
  5. }
  6. System.out.println();
  7. }
  8. }
  9. 结果
  10. ¥¥
  11. ¥¥¥
  12. ¥¥¥¥
  13. ¥¥¥¥¥

⑤要输出如下效果
¥¥¥¥¥
¥¥¥¥
¥¥¥
¥¥

  1. for(int i=0;i<5;i++){//控制行
  2. for(int j=0;j<5-i;j++){//控制每行输出的个数
  3. System.out.print("¥");
  4. }
  5. System.out.println();
  6. }
  7. 结果
  8. ¥¥¥¥¥
  9. ¥¥¥¥
  10. ¥¥¥
  11. ¥¥

⑥输出如下效果

¥¥
¥¥¥
¥¥¥¥
¥¥¥¥¥

  1. for(int i=0;i<5;i++){//控制行
  2. //负责输出空格
  3. for(int j=0;j<4-i;j++){
  4. System.out.print(" ");
  5. }
  6. //负责输出¥
  7. for(int j=0;j<i+1;j++){//控制每行输出的个数
  8. System.out.print("¥");
  9. }
  10. System.out.println();
  11. }
  12. 结果
  13. ¥¥
  14. ¥¥¥
  15. ¥¥¥¥
  16. ¥¥¥¥¥

⑦练习

  1. for(int m=0;m<6;m++){
  2. for(int n=0;n<6-m-1;n++){
  3. System.out.print(" ");
  4. }
  5. for(int k=0;k<(m*2+1);k++){
  6. System.out.print("*");
  7. }
  8. System.out.println();
  9. }
  10. 结果
  11. *
  12. ***
  13. *****
  14. *******
  15. *********
  16. ***********
  1. //输出倒等腰三角形
  2. for(int x=0;x<6;x++){
  3. for(int y=0;y<=x;y++){
  4. System.out.print(" ");
  5. }
  6. for(int z=1;z<=((6-x)*2-1);z++){
  7. System.out.print("*");
  8. }
  9. System.out.println();
  10. }
  11. 结果
  12. ***********
  13. *********
  14. *******
  15. *****
  16. ***
  17. *

⑧有如下数组
int [] arr={1,,2,3,4,2,5,6,}
请找出数组中重复的元素

  1. public class Wl14 {
  2. public static void main(String[] args) {
  3. int[] arr={1,2,3,4,2,5,6,1,2,3,3};
  4. for(int i=0;i<arr.length;i++){
  5. int x=arr[i];
  6. int count=0;
  7. for(int j=i+1;j<arr.length;j++){
  8. if(x==arr[j]){
  9. count++;
  10. }
  11. }
  12. if(count>0){
  13. System.out.println("重复出现的数:"+x+";重复出现的次数:"+(count+1));
  14. }
  15. }
  16. }
  17. }
  18. 结果
  19. 重复出现的数:1;重复出现的次数:2
  20. 重复出现的数:2;重复出现的次数:3
  21. 重复出现的数:3;重复出现的次数:3
  22. 重复出现的数:2;重复出现的次数:2
  23. 重复出现的数:3;重复出现的次数:2

⑨将一个数组做到翻转处理

  1. public class Wl15 {
  2. public static void main(String[] args) {
  3. int[] arr={1,2,3,4,2,5,6,1,2,3,3};
  4. for(int i=0;i<arr.length;i++){
  5. System.out.print(arr[i]+"\t");
  6. }
  7. System.out.println();
  8. //翻转数组
  9. for(int i=0;i<arr.length/2;i++){
  10. int temp=arr[i];
  11. arr[i]=arr[arr.length-1-i];
  12. arr[arr.length-1-i]=temp;
  13. }
  14. for(int i=0;i<arr.length;i++){
  15. System.out.print(arr[i]+"\t");
  16. }
  17. }
  18. }
  19. 结果
  20. 1 2 3 4 2 5 6 1 2 3 3
  21. 3 3 2 1 6 5 2 4 3 2 1

⑩找出10~100之间的质数

  1. public class Wl16 {
  2. public static void main(String[] args) {
  3. //找出10~100之间的所有质数。
  4. for(int i=10;i<=100;i++){
  5. //判断i是不是质数
  6. boolean flag=true;
  7. for(int j=2;j<i;j++){
  8. if(i%j==0){
  9. flag=false;
  10. break;
  11. }
  12. }
  13. if(flag){
  14. System.out.print(i+" ");
  15. }
  16. }
  17. }
  18. }
  19. 结果
  20. 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

二维数组遍历

  1. public static void main(String[] args) {
  2. char[][] chs=new char[3][];
  3. chs[0]=new char[]{'a','b'};
  4. chs[1]=new char[]{'0','9'};
  5. chs[2]=new char[]{'Z','D','x'};
  6. //遍历二维数组
  7. for(int i=0;i<chs.length;i++){
  8. char[] items=chs[i];
  9. for(int j=0;j<items.length;j++){
  10. System.out.print(items[j]+"\t");
  11. }
  12. System.out.println();
  13. }
  14. System.out.println("-------------------------");
  15. for(int i=0;i<chs.length;i++){
  16. char[] items=chs[i];
  17. for(int j=0;j<items.length;j++){
  18. System.out.print(chs[i][j]);
  19. }
  20. System.out.println();
  21. }
  22. }
  23. 结果
  24. a b
  25. 0 9
  26. Z D x
  27. -------------------------
  28. ab
  29. 09
  30. ZDx

练习:
未解决
①找出数组int [] arr={1,3,4,2,1,2,4}中没有重复的数(20201116>Wl8)