下面是java的一些入门基础知识,有需要借鉴即可。
课程:B站黑马程序员,JAVA入门LINK
一、初识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);//对每个数字+5for(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);}
}
EOF