java学习笔记(小白学习)

chapter1java基础

dk jre jvm

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xpoFWGY9-1621587586531)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210428153654241.png)]

hello world

1.创建一个java文件

2.编写代码

3.编译javac java文件,会生成一个class文件

4.运行class文件,java class文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6cHQtpd-1621587586533)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210428170005977.png)]

可能会遇到的情况

1.每个单词的大小不能出现问题,java是大小写敏感的

2.尽量使用英文;

3.文件名和类名必须保证一致,并且首字母大写

4.符号使用了中文

java 程序运行过程

java是编译型和解释型的结合

步骤一 编译过程:通过java编译器,java原文件变成class文件,class文件才被执行

代码:javac 文件名.java

步骤二 解释过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bU9t3aF-1621587586535)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210428171827687.png)]

标识符(关键字)

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符

标识符大小写敏感

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSgRHPT1-1621587586538)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429154309412.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-if9Vq123-1621587586540)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429154545713.png)]

##数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

​ java、python属于强类型语言

弱类型语言

定义变量

​ String a=“hellp”

​ int b=10

Java的数据类型分为两大类
基本数据类型(primitive type)
引用数据类型(reference type):基本数据类型外的,如string

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nstJKq9-1621587586541)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429155956603.png)]

整数类型一般int足够

浮点类型double足够

字符类型 char 如“中” 只能一个字 char name=“中”

String 字符串是一个类,属于引用类型,不是标识符 String name=“中国”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0YZ6Cv4Z-1621587586542)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429160749104.png)]

转义字符

\t制表符

\n换行符

布尔值扩展

boolean flag=ture;

if (flag==ture){}和 if (flag){} 是一样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oDobFver-1621587586543)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429162034451.png)]

类型转换

由于java是强类型语言,所以有些运算的时候,要进行类型转换

从低到高进行转换

小数的优先级大于整数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgaAMgtX-1621587586544)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210429163011068.png)]

强制类型转换 (强制类型)变量名 从高到低

int i=128;

byte b=(byte)i;(内存溢出)

自动类型转换 从低到高

int i=128;

double b=i;

1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!

变量

java是一种强类型语言,每个变量都必须声明其类型

java变量是程序中最基本的存储单元要素包括变量名、变量类型和作用域


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YsRX0brG-1621587586545)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210430103349507.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Knpu2hGR-1621587586546)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210430104400244.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6bMmVnaI-1621587586547)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210430111151384.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGvBfcmY-1621587586547)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210430112440319.png)]

重点 :static、final、命名规范

public class day2 {
    /**
     1)类变量:static
     static double salary=2500

    属性:变量,从属于类,随着类出现和消失
    2)实例变量,从属于对象;如果不自行初始化,实
     例变量使用默认值,数值类型初始化一般为0或0.0,
    布尔值默认是false,除了基本类型其余都是null
     3)局部变量,必须声明和初始化值,只能在方法中使用
     4)常量 关键字 final 常量名=值 常量名一般用大写字符
   */
    static double salary=2500; //类变量
    String name; //实例变量
    int age; //实例变量
    //static final 是修饰符,不分前后顺序
    static final double PI=3.14;

    //main 方法
    public static void  main(String[] args){
        //3)局部变量 :必须声明和初始化值,只能在方法中使用
        int i=10;
        System.out.println(i);

        //实例变量使用方法
        // 变量类型 变量名字=new day2()  变量类型是自己
        day2 day2=new day2();
        System.out.println(day2.age);
        System.out.println(day2.name);
    }

}

运算符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMnw2sNR-1621587586548)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210430113349113.png)]

public class yuhuofei {
    public static void main(String[] args) {
        // 与或非运算  && || !
        boolean a= true;
        boolean b= false;
        System.out.println("b&&a:"+(b&&a)); //"+"为拼接,两个都为真,结果为真
        System.out.println("b||a:"+(b||a)); //其中一个为真,则为真
        System.out.println("!(b&&a):"+!(b&&a));//真变为假,假变为真

        //**短路运算**:若与或非运算执行到一部分时,即可判断,则后面的命令不再进行
        int c=3;
        boolean d=(c<2)&&(c++<4);  //c仍为3,c++没有执行
        
        System.out.println(d);
        System.out.println(c);


    }


}

+=;-=

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mtTMoKBu-1621587586549)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502190800641.png)]

三元运算符

public class sanyuanyunsuanfu {
    public static void main(String[] args) {
        // x? y:z
        //如果x为真,则输出y否则输出z
        int score =40;
        String type= score<60 ? "不及格":"及格";
        //常与if搭配
        System.out.println(type);
    }

优先级用()括起来!!

包机制

包机制本质是文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R9im8x42-1621587586549)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502192754333.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtGmgm0j-1621587586550)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502192944282.png)]

chapter2java流程控制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xezWEofk-1621587586551)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502194352342.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Mu8KiJe-1621587586552)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502200602788.png)]

package wenfeistu.jichupart.liuchengkz;

import java.util.Scanner;

public class scanner {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于按收键盘数据
        Scanner scanner= new Scanner(System.in);

        System.out.println("使用next方式接收:");

        //判断用户有没有输入字符串
        if (scanner.hasNext()){
            //使用next方式接收
            String str=scanner.next();
            System.out.println("输出的内容为:"+str);
        }
        //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉

        scanner.close();



    }

}
package wenfeistu.jichupart.liuchengkz;

import java.util.Scanner;

public class scanner_Nextline {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于按收键盘数据
        Scanner scanner= new Scanner(System.in);

        System.out.println("使用nextLine方式接收:");

        //判断用户有没有输入字符串
        if (scanner.hasNextLine()){
            //使用nextline方式接收
            String str=scanner.nextLine();
            System.out.println("输出的内容为:"+str);
        }
        //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉

        scanner.close();



    }

}

================================================

package wenfeistu.jichupart.liuchengkz;

import java.util.Scanner;

public class scanner3 {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);

        //从键盘接收数据
        //定义变量
        int i=0;
        float f=0.0f;

        System.out.println("请输入整数:");
        if (scanner.hasNextInt()){
            i =scanner.nextInt();
            System.out.println("整数数据:"+i);
        }else{
            System.out.println("输入的不是整数数据");
        }


        System.out.println("请输入小数:");
        if (scanner.hasNextFloat()){
            f =scanner.nextFloat();
            System.out.println("小数数据:"+f);
        }else{
            System.out.println("输入的不是小数数据");
        }

        scanner.close();
    }
}

scanner进阶

package wenfeistu.jichupart.liuchengkz;

import java.util.Scanner;

public class scanner4 {
    public static void main(String[] args) {
        //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:
    Scanner scanner =new Scanner(System.in);
        System.out.println("请输入您需要计算的数字:");
    //和
        double sum=0;
        //输入多少个数
        int m=0;
        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while (scanner.hasNextDouble()) {
            double x=scanner.nextDouble();
            m=m+1;//m++
            sum=sum+x;
            System.out.println("你输入了第m个数据,当前和为sum="+sum);
        }
        System.out.println(m + "个数的和为" + sum);
        System.out.println(m + "个数的平均数为" + (sum/m));
       
        scanner.close();
    }

    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ABvSIeeG-1621587586553)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502205636264.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q0B1hfcs-1621587586554)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210502205655242.png)]

if结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G7bh25Sh-1621587586555)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503110647844.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cztRJqh7-1621587586556)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503110741041.png)]

package chapter2liucheng.ifjiegou;

import java.util.Scanner;

public class ifdemo2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入成绩:");
        int score=scanner.nextInt();

        if (score>60 && score<70){
            System.out.println("及格");
        } else if(score>70 && score<=80){
            System.out.println("良好");
        } else if(score>80 && score<=100){
            System.out.println("优秀");
        } else if(score<60){
            System.out.println("不及格");
        }else{
            System.out.println("成绩不合法");
        }

        scanner.close();

    }
}

/*
if 语句至多有1个else语句,else语句在所有的else if语句之后
if语句可以有若干个else if语句,他们必须在else之前
一旦其中一个else if语句检测为true,其他的else if以及else都跳过
 */

switch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbAr0LtZ-1621587586556)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503160537434.png)]

package chapter2liucheng.switchstu;

public class switch1 {
    public static void main(String[] args) {
        //case穿透,所以每写一个switch都要写一个break//switch匹配一个具体的值
        char grade ='A';
        switch(grade){
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            case 'D':
                System.out.println("加油");
                break;
            default:
                System.out.println("输入错误哦");

        }
    }
}

whie、do while

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4i2lcpF-1621587586557)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503162048545.png)]

package chapter2liucheng.xunhuanjiegou;

public class while1 {
    public static void main(String[] args) {
        //计算1至100的和
        int i=1;         //初始化条件
        int sum=0;       //初始化条件
        while (i<=100){  //条件判断
            sum=sum+i;   //循环体
            i++;         //迭代
            System.out.println(sum);
        }

    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9MguaMEF-1621587586557)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503162906868.png)]

package chapter2liucheng.xunhuanjiegou;

public class while2 {
    public static void main(String[] args) {
        int i=0;
        int sum=0;

        do {
            sum=sum+i;
            i++;
        }while (i<=100);
        System.out.println(sum);
    }
}
package chapter2liucheng.xunhuanjiegou;

public class while2 {
    public static void main(String[] args) {
        int i=0;
        int sum=0;
//while和do while 的区别
        while (i<0){
            i++;
        }
        System.out.println(i);//输出为0

        do {
            i++;
        }while (i<0);
        System.out.println(i);//输出为1
    }
}

for循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QGyVQHG6-1621587586558)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503172944643.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pl5flTMK-1621587586559)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503172832185.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N46Cl956-1621587586559)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210503173737264.png)]

for循环执行步骤

1.最先初始化

2.条件判断

3.执行循环体

4.更新迭代

5.条件判断

6.执行循环体

7.更新迭代

2、3、4循环进行下去

package chapter2liucheng.forxunhuan;
//输出1000以内能被5整除的数,并且每行输出3个
public class for4 {
    public static void main(String[] args) {

        for (int i = 0; i <= 1000; i++) {
            if (i%5==0){
                System.out.print(i+"\t");
            }
            if (i%(5*3)==0){//每行3个
                System.out.print("\n");  
                //print()输出完不换行,println()输出后换行
            }
        }

    }
}

打印九九乘法表

package chapter2liucheng.forxunhuan;

public class for5 {
    public static void main(String[] args) {


       for(int i=1;i<10;i++){
           for (int j=1;j<=i;j++){
               int z=i*j;
               System.out.print(j+"*"+i+"="+z+"\t");

           }
           System.out.print("\n");
       }
    }
}
//1.我们先打印第一列,这个大家应该都会
//2,我们把固定的1序川一个循球但起来
//3,去牌重复项.i <=j
//4.调整整性式

break

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWnEC06K-1621587586560)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505105114006.png)]

package chapter2liucheng;

public class breakdemo {
    public static void main(String[] args) {
        int i=0;
        while(i<100){
            i++;
            if(i==30){
                break;
            }
        }
    }
}
package chapter2liucheng;

public class continuedemp {
    public static void main(String[] args) {
        int i=0;
        while(i<100){
            i++;
            if (i%10==0){
                System.out.println();
                continue;
            }
            System.out.print(i);

        }

    }
}
//break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循坏中剩余的语句。(break语句也在switch 语句中使用)
//continua语句用在循坏离句体中,用于终止某次循环过程,即继过循环体中尚未执行的语句,接着进行下一次是否执行循坏的判定。

打印三角形

package chapter2liucheng.forxunhuan;

public class for6 {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++){
            for(int j=5;j>=i;j--){
                System.out.print(" ");
            }
            for (int j=1;j<=i;j++){
                System.out.print("*");
            }
            for (int j=1;j<i;j++){
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

chapter3java方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diii2zJ7-1621587586560)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505160919087.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZAq8Q2u-1621587586561)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505161038324.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyZmpmJj-1621587586561)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505162803272.png)]

package chapter3fangfa;

public class fangfa1 {
    public static void main(String[] args) {
   int b= max(10,10);

    }
    //比大小
    public static  int max(int num1,int num2){
        int result=0;


        if(num1>num2){
            result =num1;
        } else if(num1<num2){
            result=num2;
        }else {
            System.out.println("num1=num2");
            return 0;
        }

        return result;
    }

}

//return要写在方法的第一层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A29xOm52-1621587586562)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505163719451.png)]

可变参数/不定项参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NWwW2Ek-1621587586562)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505170511799.png)]

递归

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZrYARE9p-1621587586563)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210505171557073.png)]

package chapter3fangfa;
//递归思想,若递归次数太多,会影响计算机性能,不适合用递归
public class digui {
    public static void main(String[] args) {
        System.out.println(f(5));
    }

    public static int f(int n){
        if (n==1){
            return 1;
        } else{
            return n*f(n-1);
        }

    }

}

chapter4 java数组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTOSmRRZ-1621587586563)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506104112074.png)]

数组声明创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhorH1r0-1621587586564)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506105553592.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzRlE6ip-1621587586565)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506111809677.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EycZQZf1-1621587586566)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506112020327.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1DUObBdU-1621587586567)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506155441294.png)]

Arrays类方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JKhj1i0f-1621587586567)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506161228434.png)]

package chapter4Shuzu;

import java.util.Arrays;

public class array4 {
    public static void main(String[] args) {

        int[] a={1,2,3,34,909,40,5,30};
        System.out.println(a); //输出对象代码(查看不了数组元素)
        //打印(查看)数组元素
        //数组进行排序
        Arrays.sort(a);
        //将某个值付给数组中某些元素
        Arrays.fill(a,1,3,0);

        System.out.println(Arrays.toString(a));

    }
}

chapter5面向对象编程OOP

类=属性+方法

面向对象编程的本质:以类的方式组织代码,以对象封装数据。

以类组织代码,以对象封装数据。

以类组织代码,以对象封装数据。

以类组织代码,以对象封装数据。

类是一个抽象的模板,对象是一个具体的实例

类是一个抽象的模板,对象是一个具体的实例

类是一个抽象的模板,对象是一个具体的实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sHD6a5Ld-1621587586568)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506171852062.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GdqEmGmH-1621587586569)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506171859881.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KkbDqw4G-1621587586569)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210506174300819.png)]

package chapter5oop;
//oop1 类
public class oop1 {
    //main方法,方法都在类中
    public static void main(String[] args) {

    }

    /*
    修饰符 返回值类型 方法名(){
        //方法体
        return 返回值;
    }
     */
    //return 让结束方法,返回一个值,return后不再执行
    public String sayHello() {
        return "hello world";
    }
    //void 的return为空
    public void print(){
        return;
    }
    public int max(int a,int b){
        return a>b ? a:b;  //三元运算符
    }
}

方法的调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mXykOVHN-1621587586570)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210507102726881.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9fsFCqh-1621587586571)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210507102711662.png)]

构造器

类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的

构造器有以下两个特点:

1.必须和类的名字相同

2.必须没有返回值类型,也不能写void

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1JcugKo-1621587586572)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210510120627152.png)]

package chapter5oop;

import sun.security.mscapi.CPublicKey;

public class person {
    //一个类即使什么都不写,它也会存在一个方法

    String name;//定义属性
    int age;//定义属性

    //实例化初始值
    //1.使用new关键字,本质是在调用构造器
    //2.构造器一般用来初始化值
    public person(){
        this.name="qinjiang"; //无参构造器的默认值是“qinjiang”
    }
        //有参构造:一旦定义了有参构造器,还需要使用无参构造器,就必须把无参构造器写出来
    public person(String name,int age){
             this.name=name;
             this.age=age;

    }
}


/*
package chapter5oop;
//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[] args) {
        //new 关键词实例化了一个对象
        person person =new person("wenfei",23);//调用有参构造器
        System.out.println(person.name);
        person person1=new person();  //调用无参构造器
        System.out.println(person1.name);
    }

构造器:
1.和类名相同
2.没有返回值但也不写void
作用:
1.new本质在调用构造方法
2.初始化对象的值
注意点:
定义了有参构造器后,如果想使用无参构造,必须把有参构造写出来

生成构造器的方法:Alt+Insert

this.name=name;  前面的this.name是指类本身,后面的name是参数传进来的
 */

总结:类与对象

1.类与对象

类是一个抽象的模板,对象是一个具体的实例。

2.方法:定义和调用。

3.对象的引用:

引用类型:8大基本类型以外的都是引用类型

对象是通过引用来操作的:栈–>堆

4.对象的属性:字段Field、成员、变量

​ 属性的默认初始化:

​ 数字:0、0.0

​ char:u0000

​ boolean:false

​ 引用:null

​ 修饰符 属性类型 属性名=属性值;

5.对象的创建和使用

–必须使用new关键字创建对象,必须调用构造器 person xiaoming=new person();

–对象的属性调用 xiaoming.name

–对象的方法的调用 xiaoming.sleep()

6、类:

静态的属性 属性

动态的行为 方法

封装

属性私有,get/set,避免程序对数据直接访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62zOL4I0-1621587586573)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210508110431616.png)]

package chapter5oop;
//类  封装:private 属性私有,不可直接调用
public class fengzhuang {
    //名字属性
    private String name;
    //学号属性
    private int id;
    //性别属性
    private char gender;

    //**封装后,再提供一些public可以操作private属性的方法:get set

    //get获得这个数据
    public String getName(){
        return this.name;
    }
    //set给数据赋值
    public void setName(String name){
        this.name=name;
    }
//属性封装加多,方法较少

    //方法
    //学习()
    //睡觉()
/*
public class Application {
    public static void main(String[] args) {
        fengzhuang lianxi1=new fengzhuang();
        lianxi1.setName("wenfei");
        System.out.println(lianxi1.getName());
    }
    通过get读,set写
 */
//alt+insert 快捷添加get、set
    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    /*
    1.提高程序的安全性,保护数据
    2.隐藏代码的实现细节
    3.统一接口
    4.增加系统可维护性
     */

}

继承

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyHW2ZiX-1621587586574)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210508112830558.png)]

package chapter5oop;
// 学生 is 人
//person 父类,xuesheng 子类、派生类
//继承是类与类之间的关系
// 子类继承了父类,则拥有了父类的**public**的**全部方法和属性**
// 私有private无法继承,一般属性才是私有的
//所有的类之间或间接继承object类,一个类只有一个父类,只有单继承,没有多继承
public class xuesheng extends person{
    public static void main(String[] args) {

    }


}

Super

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XlUMzoa1-1621587586574)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210510113037481.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uevA82yp-1621587586575)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210510113830133.png)]

super注意点

1.super调用符类的构造方法,必须在构造方法的第一个

2.super必须只能出现在子类的方法或构造方法中

3.super和this不能同时调用构造方法

this:

代表的对象不同:

this:本身调用着这个对象

super:代表父类对象的引用

前提:

this没有继承也可以使用

super只能在继承条件下使用

构造方法

this():调用本类的构造

super():调用父类的构造

方法的重写

重点:需要有继承关系,子类重写父类的方法。

1。子类和父类的方法名必须相同

2。参数列表必须相同

3.修饰符:方法重写范围可以扩大但不能缩小

public>protected>default>private

4.抛出的异常:范围可以被缩小但不能扩大

重写,子类的方法和父类的方法名必须要一致,方法体不同。

为什么需要重写:

1.父类的功能,子类不一定需要,或者不一定满足

重写:alt+insert:override;

package chapter5oop;

public class a extends b {
    //override 重写

    public  void test(){
        System.out.println("A=>test()");
    }
}
package chapter5oop;
//重写都是方法的重写,和属性无关
public class b {
    public static void test(){
        System.out.println("B=>test()");
    }
    }
}

import chapter5oop.a;
import chapter5oop.b;
//重写都是方法的重写,和属性无关
//重写的父类和子类的关键词都之只能是public
public  class Application {
    public static void main(String[] args) {

        //静态方法static的父类和子类:方法的调用只和左边定义的数据类型有关
        //静态方法只能在本类中使用,所以不能在其他类中重写
        //非静态的父类和子类:才可以重写
        a a=new a();
        a.test();
        //父类的引用指向了子类
        b b=new a();//a子类重写了父类的方法
        b.test();


    }
}
//

多态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKmibHxH-1621587586575)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210514170630173.png)]

instance of 和类型转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exO8o7rb-1621587586576)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210514165525569.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EgGe7XbA-1621587586576)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210514172624105.png)]

static 静态变量、无static:非静态变量

静态变量和静态方法是对类而言,可以被类中所有实例共用。

非静态变量和非静态方法不同,要通过对象调用。

抽象类、抽象方法 abstract

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pCrLZK60-1621587586577)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516104934179.png)]

类单继承,接口多继承

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AvYOUJ82-1621587586581)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516105821482.png)]

接口关键字:interface

接口都需要有实现类,通过implements关键字

实现了接口中的类,就需要重写接口中的方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMwoEbR4-1621587586581)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516111001401.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YhIWuXQT-1621587586582)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516112857949.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eGuXFGyJ-1621587586582)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516113038002.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjLGhYPq-1621587586583)(C:\Users\phoeb\AppData\Roaming\Typora\typora-user-images\image-20210516113249208.png)]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值