下面是java的一些入门基础知识,有需要借鉴即可。
一、初识JAVA
1.java概述
- 概念:java是由sun公司研发,在2009年被oracle收购,祖师爷詹姆斯·高斯林,是一种高级编程语言
- - 特性:可移植性质
- java体系:Java SE(核心) && Java EE(企业级开发) && Java ME
- Java产品:JDK(Java 开发工具包),注:LTS为长期支持版
目前的长期支持版有8、11、17
2.JAVA常用指令
- cls 清屏
- cd 进入目录
- dir 列举当前目录文件
- :切盘
3.编写第一个java程序
文件名称全英文,首字母大写,后缀java
4.path环境变量
意义:用于记录程序路径,方便在命令行任意位置进行调用
便于配置java版本的程序编译环境。
5.集成开发编译器:IDEA
二、JAVA基本语法
1.类型转换
①初步认识java中的类型:
②类型转换意义:处理不同类型的变量进行运算
③分类:
- 自动转换
-由高类型所决定
-自动小范围转换为大范围的类型 - 强制转换
-类型自己决定,不过有丢失数据的风险
2.运算符
+ | 连接符/加 |
- | |
* | |
/ | |
% | |
++ | |
– | |
+= | 自带强制转换 |
-= | 自带强制转换 |
*= | 自带强制转换 |
/= | 自带强制转换 |
%= | 自带强制转换 |
== | |
!= | |
>= | |
<= | |
> | |
< | |
& | 位运算符/逻辑与 |
&& | |
| | 位运算符/逻辑与 |
|| | |
! | |
^ | 位运算符/逻辑与 |
?: | |
– | – |
注:&与&&的区别在于&&会短路。
3.API
- 导包
- 创建一个扫描器
- 接收用户数据
4.程序流控制
①顺序结构
②分支结构
if
switch
注:switch仅支持byte、short、int、char,后来支持枚举(JDK5)、String(JDK7)
③循环结构
while
for
do_while
continue
break;
5.数组
意义:存储同一类型的多个数据
格式分类:
- 静态数组:type[] + name = new type[]{nums};
- 动态数组:type[] + name = new type[length];
注意,动态数组默认值为0
6.方法(method)
①定义:方法(函数):一种语法结构,将一段代码封装,方便重复调用
②语法格式
在java中,返回类型要明确指出且接收一致。
③
④下面是一些方法案例:
public class test4_2 { public static void main(String[] args) { //1.计算1——n的和 int sum = sumNumbers(10); System.out.println(sum); //2.判断奇偶 String a = SelectNumbers(8); System.out.println(a); } public static int sumNumbers(int n) { int i = 0; int sum = 0; for(i = 1;i<=n;i++) { sum+=i; } return sum; } public static String SelectNumbers(int m) { if(m%2==0) { return "even"; } else { return "odd"; } } }
⑤拓展知识:方法重载
一个类中,出现多个方法名称相同,但是形参列表不同的方法
区分形参列表不同:形参个数、类型、顺序(不关心名称)
意义:便于处理同一类业务,提供多种解决方案。
⑥拓展知识:参数传递机制
java的参数传递机制,一般来说,分为基本值传递(基本类型)和地址传递(引用类型)。
7.简单练习
①买飞机票
public static double buyTicket(int month,double money,String manner) { if(month>=5 && month<=10) { //旺季 if(manner == "头等舱") { money*=0.9; } else { money*=0.85; } } else { //淡季 if(manner == "头等舱") { money*=0.7; } else { money*=0.65; } } return money; }
②开发验证码
public static String creatCaptcha(int number) { String captcha = ""; Random r = new Random(); for(int i = 0;i<number;i++) { int type = r.nextInt(3);//[0,3) switch(type) { case 0://生成小字母 char ch1 = (char)(r.nextInt(26)+65); captcha+=ch1; break; case 1://生成大写字母 char ch2 = (char)(r.nextInt(26)+97); captcha+=ch2; break; case 2://生成数字 int num = r.nextInt(9); captcha+=num; break; } } return captcha; }
要点提示:
Random r = new Random();
char ch1 = (char)(r.nextInt(26)+65);
③评委打分
public static double JudgesScore(int numbers) { int[] arr = new int[numbers]; int max = 0; int min = 100; int average = 0; Scanner sc = new Scanner(System.in); for(int i = 0;i<numbers;i++){ int num = sc.nextInt(); arr[i] = num; if(arr[i]<min) { min = arr[i]; } if(arr[i]>max) { max = arr[i]; } average+=arr[i]; } average-=(max+min); average/=(numbers-2); return average; } }
重点提示:
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
④数字加密
private static String DigitalEncryption(int number) { //先将数字每位数字分开,放到数组中 int[] nums = Separate(number); //对每个数字+5 for(int i = 0;i<4;i++) { nums[i]+=5; nums[i]%=10; } //将所有数字顺序反转 Swap(nums,0,3); String str = ""; for(int i = 0;i<4;i++) { str+=nums[i]; } return str; } private static void Swap(int[] arr, int start, int end) { while(start<end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } }
⑤数组拷贝
private static int[] Copyarray(int[] arr) { int[] arrcopy = arr; int i = 0; for(i = 0;i<arrcopy.length;i++) { System.out.print(arrcopy[i] + " "); } System.out.println(); return arrcopy; }
⑥抢红包
private static void GrabREnvelope() { Scanner sc = new Scanner(System.in); Random r = new Random(); int[] arr = new int[]{9,666,188,520,99999}; int j = 0; for(j = 0;j<5;j++) { System.out.println("请您输入一个数值进行抽奖"); sc.nextInt(); while(true) { //随机值 int i = r.nextInt(5); if(arr[i]!=0) { System.out.println("恭喜您抽到了" + arr[i] + "元"); arr[i] = 0; break; } else { continue; } } } System.out.println("抽奖结束,敬请待续"); }
⑦找素数
private static int findPrime1(int start, int end) { int i; int count = 0; int flag = 0; for(i = start;i<=end;i++) { flag = 0; int q = 2; for(q=2;q<=i/2;q++) { if(i%q==0) { flag = 1; break; } } if(flag == 0) { System.out.println(i + "是素数"); count++; } } return count; } private static int findPrime2(int start, int end) { int i; int count = 0; OUT: for(i = start;i<=end;i++) { int q = 2; for(q=2;q<=i/2;q++) { if(i%q==0) { continue OUT; } } System.out.println(i + "是素数"); count++; } return count; } private static int findPrime3(int start, int end) { int i; int count = 0; for(i = 101;i<=200;i++) { if(Check(i)) { count++; System.out.println(i + "是素数"); } } return count; } private static boolean Check(int data) { for(int i = 2;i<=data/2;i++) { if(data%i==0) { return false; } } return true; }
⑧打印乘法口诀表
private static void Multiplication() { int i; for(i = 1;i<=9;i++) { int j; for(j = 1;j<=i;j++) { System.out.print( j + "*" + i + "=" + (i*j) + " "); } System.out.println(); } }
⑨打印三角形
private static void Triangle(int n) { for(int i = 0;i<n;i++) { //先打印空格 for(int j = 0;j<n-i-1;j++) { System.out.print(" "); } //打印形状 for(int j = 0;j<2*i-1;j++) { System.out.print("*"); } System.out.println(); } }
⑩双色球
private static void ComparativeJudgment(int[]arr1,int[]arr2) { int redcount = 0; int bluecount = 0; //统计红色蒙对的个数 for(int i = 0;i<6;i++) { for(int j = 0;j<6;j++) { if(arr1[i] == arr2[i]) { redcount++; break; } } } //统计蓝色蒙对的个数 if(arr1[6] == arr2[6]) { bluecount++; } if(redcount == 6 && bluecount == 1) { System.out.println("恭喜您,中1奖了"); } else if(redcount == 6 && bluecount == 0) { System.out.println("恭喜您,中2奖了"); } else if(redcount == 5 && bluecount == 1) { System.out.println("恭喜您,中3奖了"); } else if(redcount == 5 && bluecount == 0) { System.out.println("恭喜您,中4奖了"); } else if(redcount == 4 && bluecount == 1) { System.out.println("恭喜您,中5奖了"); } else if(redcount == 4 && bluecount == 0) { System.out.println("恭喜您,中6奖了"); } else if(redcount == 3 && bluecount == 1) { System.out.println("恭喜您,中7奖了"); } else if(redcount == 2 && bluecount == 1) { System.out.println("恭喜您,中8奖了"); } else if(redcount == 1 && bluecount == 1) { System.out.println("恭喜您,中9奖了"); } else if(redcount == 0 && bluecount == 1) { System.out.println("恭喜您,中10奖了"); } } public static int[] CreLuckNumbers() { Random r = new Random(); int[] arr = new int[7]; //红色球 for(int i = 0;i < 6;i++) { while(true) { int number = r.nextInt(33)+1; if(Select(number,arr)) { arr[i] = number; break; } } } //蓝色球 int number = r.nextInt(16)+1; arr[6] = number; return arr; } private static void PrintArray(int[] arr) { for(int i = 0;i< arr.length;i++) { System.out.print(arr[i]+ " "); } System.out.println(); } public static int[] UserNumbers() { Scanner sc = new Scanner(System.in); int[] numbers = new int[7]; int i = 1; //红球 for(i = 0;i<6;i++) { while(true) { System.out.println("请输入您要选择的第" + (i+1) + "个双色球号码"); int number = sc.nextInt(); //判断是否在范围内&&是否重复 if(number>=1&&number<=33&&Select(number,numbers)) { numbers[i] = number; break; } System.out.println("您选择的号码重复/不在范围中,请重新选择第" + (i+1) + "个号码"); } } //蓝色球 while(true) { System.out.println("请输入您要选择的蓝球号码是哪个(1-16):"); int number = sc.nextInt(); if(number>=1&&number<=16) { numbers[6] = number; break; } System.out.println("您选择的号码重复了/不再范围中,请重新选择第红球号码"); } return numbers; } private static boolean Select(int number,int[] numbers) { int i = 0; for(i = 0;i<6;i++) { if(number == numbers[i]) { return false;//重复的直接返回false } } return true; }
8.面向对象编程
①快速入门
- 1.为什么设计类?
符合人类的编程习惯,思维习惯。- 2.类的本质:
实际上是一种特殊的数据结构,这种数据结构是一种待填的表格模板。
- 3.对象的设计由来
- 4.面向对象的注意事项
①.类名用的英文,首字母大写,驼峰模式
②.类中定义的变量/方法称为成员变量/成员方法
③.成员变量本身存在默认值
④.一个class类中只能有一个public修饰,且public修饰的类名必须成为代码的文件名称。
⑤.对象与对象之间相互独立,除非两个对象指向同一块空间
⑥.如果对象没有被变量引用,则对象会成为垃圾对象,由java中的垃圾回收机制自动回收空间
②面向对象在计算机中执行原理
判断引用类型变量:如果一个变量中存储的是一个对象的地址,称为引用类型变量。
③this:一个变量,用在对象本身的方法中,来拿到当前对象的地址。
this的意义:解决成员变量名称与成员方法形参名称冲突问题。
说白了,this是一个java内置的对象形参,用来接收创建的变量的地址的。
④构造器:一种特殊的方法
个人感觉就是方便调用的对象方法。我们在创建对象时候,可以方便调用里面的同名方法。
⑤封装
封装的规则:合理隐藏,合理暴露
⑥实体类
应用示例:
⑦综合案例
public class MovieData { private int id; private String name; private double price; private double score; private String director; private String actor; private String info; public MovieData(int id, String name, double price, double score, String director, String actor, String info) { this.id = id; this.name = name; this.price = price; this.score = score; this.director = director; this.actor = actor; this.info = info; } public MovieData() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public String getDirector() { return director; } public void setDirector(String director) { this.director = director; } public String getActor() { return actor; } public void setActor(String actor) { this.actor = actor; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
public class MovieOperation { MovieData[] movies = new MovieData[4]; //功能1:一键展示所有电影的名称和价格信息 public MovieOperation(MovieData[] movies) { this.movies = movies; } public void printAllInfo(MovieData[] movies){ System.out.println("下面是所有电影的名称和价格信息:"); for (int i = 0; i < 4; i++) { System.out.println("name:" + movies[i].getName()); System.out.println("price" + movies[i].getPrice()); } } //功能2:查询某个id的详细信息 public void printMovieInfo(int id){ for (int i = 0; i <4 ; i++) { if(movies[i].getId() == id) { System.out.println("下面是该电影的所有信息:"); System.out.println("name:" + movies[i].getName()); System.out.println("price" + movies[i].getPrice()); System.out.println("score:" + movies[i].getScore()); System.out.println("actor:" + movies[i].getActor()); System.out.println("director:" + movies[i].getDirector()); System.out.println("info:" + movies[i].getInfo()); break; } } System.out.println("您输入的id未找到匹配项~"); } }
import java.util.Scanner; public class test { public static void main(String[] args) { //1.创建一个存储电影信息的类 //2.创建一个电影操作方法的类 //3.保存数据 MovieData[] arr = new MovieData[4]; arr[0] = new MovieData(1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12w"); arr[1] = new MovieData(2, "出拳吧", 39, 7.8, "唐晓白", "田雨", "3.5w"); arr[2] = new MovieData(3, "月球陨落", 42, 7.9, "罗兰", "贝瑞", "17.9w"); arr[3] = new MovieData(4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8w"); //测试 MovieOperation a = new MovieOperation(arr); System.out.println("---------------------"); //4.实现test逻辑 Scanner sc = new Scanner(System.in); do { System.out.println("提示:1.展开全部电影信息"+"\n" + "2.输入id,搜查该电影的详细信息"+"\n"+"0:退出"); int commend = sc.nextInt(); switch (commend) { case 0: { System.out.println("退出"); break; } case 1: { System.out.println("展开所有电影"); a.printAllInfo(arr); break; } case 2: { System.out.println("展开该电影所有信息"); int id = sc.nextInt(); a.printMovieInfo(id); break; } default: System.out.println("输入错误"); } }while(true); } }