【JAVA】JAVA入门(长期维护)(1)

简介: 【JAVA】JAVA入门(长期维护)(1)

下面是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);
    }
}

相关文章
|
1月前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
50 3
|
11天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
17天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
23天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
63 5
|
21天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
32 1
|
27天前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
44 3
|
29天前
|
Java
Java中的多线程编程:从入门到精通
本文将带你深入了解Java中的多线程编程。我们将从基础概念开始,逐步深入探讨线程的创建、启动、同步和通信等关键知识点。通过阅读本文,你将能够掌握Java多线程编程的基本技能,为进一步学习和应用打下坚实的基础。
|
1月前
|
开发框架 IDE Java
java制作游戏,如何使用libgdx,入门级别教学
本文是一篇入门级教程,介绍了如何使用libgdx游戏开发框架创建一个简单的游戏项目,包括访问libgdx官网、设置项目、下载项目生成工具,并在IDE中运行生成的项目。
50 1
java制作游戏,如何使用libgdx,入门级别教学
|
30天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第19天】本文介绍了Java编程中重要的数据结构——Map,通过问答形式讲解了Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的使用和性能优化技巧,适合初学者和进阶者学习。
45 4
|
29天前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
23 1
下一篇
无影云桌面