Day01

Java基础语法


标识符

标识符事大小写敏感的

都应该以大小写字母,美元符或者下划线开始

数据类型


  1. 强类型语言:要求变量的使用严格符合规定

  2. 弱类型语言

  3. Java的数据类型分为两大类

整数拓展

二进制 0b

八进制0 (开头)

十六进制0x A~F


浮点数拓展

包机制

包的本质就是文件夹

一般利用公司域名倒置作为包名

import com.kuang.base.*   导入这个包下所有类  用*表示

JavaDoc

用来生成自己API文档


Java流程控制

用户交互Scanner

Scanner s = new Scanner (System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一半需要使用hasNext()和hasNextLine()判断是否还有输入的数据

image-20240301113701183



增强for循环

for(声明语句: 表达式){
    代码句子
}

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等

表达式:是要访问的数组名,或者是返回值为数组的方法

Java方法详解

方法本意是功能块,就是一个方法只完成一个功能,有利于我们后期扩展

方法在程序中被创建,在其他地方被引用

修饰符 返回值类型 方法名(参数类型  参数名){
。。。
方法体
return 返回值
}

image-20240302155823566

形式参数:定义方法时候随便定义的

实际参数:实际传的



静态方法static

调用函数时,直接用类名.方法名调用

非静态方法

调用函数时,实例化这个被调用的类(new+类名),然后再调用方法

public class Student{
    //非静态方法
    public void say(){
        sout{"说话"};
    }
}


//调用
public class demo{
    public static void main(String[]args){
        //实例化这个类 new
        //对象类型 对象名 = 对象值
        Student student = new Student();
        int a = 3;
        student.say();
    }
}

方法的重载

重载就是在一个类中,有相同的函数名称,但是形参不同的函数

规则:

  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
  3. 方法的返回类型可以相同也可以不相同
  4. 仅仅返回类型不同不足以成为方法的重载

实现理论:

方法名称相同时,编译器会根据调用方法的参数个数,参数类型过去逐个匹配,宜选择对应的方法,如果匹配失败则编译器报错

方法一样,只是参数类型或者个数不同

可变参数

java支持传递同类型的可变参数给同一个方法

在方法声明中,在指定参数类型后加一个省略号(.....)

一个方法中只能制定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在他之前声明

递归(基数比较小可用)

递归就是:a方法调用a方法,自己调用自己

递归结构包括两个部分:

递归头:什么时候不调用自身方法,如果没有头,将陷入死循环

递归体:什么时候需要调用自身方法

数组

变量类型 变量名字 = 变量的值

int[] numbers; //整型数组

Java语言使用new操作符来创建数组,语法如下:

dataType  array = new dataType[arraysize];
//定义什么数组,就new什么数组

数组的元素是通过索引访问的,数组索引从0开始

获取数组长度:arrays.length

最终创建和声明数组可以用下面的

int[] nums = new int[10]; 空间大小为10的nums数组

内存分析

new之后在堆里开辟一段区域内存

image-20240307120651047

image-20240307120632390

面向对象

适合多人协作问题

本质就是:以类的方式组织代码,以对象的组织(封装)数据

三大特性:封装,继承,多态

值传递

类与对象的关系

类是一种抽象的数据类型,他是一类事物的名称,比如动物,但不知道是哪种动物或者哪一只动物

对象是抽象概念的具体实例,比如张三就是人的具体实例,旺财就是狗的一个具体实例

创建与初始化对象

使用New关键字创建对象:除了会分配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

new之后就会是一个实例


构造器(构造方法)

类中构造器也称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:

必须和类的名字相同

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

作用:

  1. 构造方法里面是实例化初始值,对对象的各种属性进行初始化
  2. 使用new关键字,本质是调用构造器
  3. 有参构造:一旦定义了有参构造,无参就必须显式定义

image-20240307112041675

//alt+insert 默认生成

有参与无参取决于实例化对象有没有传参

image-20240307112548593

封装

高内聚,低耦合:不允许外部干涉,仅暴漏少量方法可以调用

//alt +insert

属性私有不能直接调用,需要用get/set

private String name;
private int age;

对于一个学生类属性私有,这里面都是方法,可以在实例中直接调用

public class Student {
    //属性
    private String name;
    public  int age;

    //提供一些可以操作这个属性的方法
    //提供一些public的get ,set方法

    //Get  获得这个数据
    public String getName(){
        return this.name;
    }
    //set 给这个数据设置值
    public void setName(String name){
        this.name=name;
    }

   //方法
    public void study(){
        System.out.println(this.name+"在学校");
    }

}

main中

 Student s1= new Student();
 //设置name属性值
 s1.setName("leo");
//获得并打印
 System.out.println(s1.getName());

继承

  1. 集成的本质是对某一类的抽象,比如美国人,中国人,对国家这个类

  2. extends的意思是扩展,子类是父类的扩展

  3. java中类只有单继承没有多继承

  4. 继承是类跟类之间的关系

  5. ctrl+H

    子类继承了父类,就会拥有父类的全部方法

this 是指当前类中的属性

super可用做子类调用父类的接口

父类私有的属性不能被继承

super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

VS this

代表的对象不同

​ this:本身调用者这个对象

​ super:代表父类对象的应用

前提

​ this:没有继承也可以使用

​ super:只能在继承条件下才可以使用

构造方法:

​ this();本类的构造

​ super();父类的构造

重载

posted @ 2024-03-11 21:29  BlueLeoGrey  阅读(31)  评论(2)    收藏  举报