下面是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);
//对每个数字+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);
}
}
EOF