下面是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
































