Day01
Java基础语法
标识符
标识符事大小写敏感的
都应该以大小写字母,美元符或者下划线开始
数据类型
-
强类型语言:要求变量的使用严格符合规定
-
弱类型语言
-
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()判断是否还有输入的数据
增强for循环
for(声明语句: 表达式){
代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等
表达式:是要访问的数组名,或者是返回值为数组的方法
Java方法详解
方法本意是功能块,就是一个方法只完成一个功能,有利于我们后期扩展
方法在程序中被创建,在其他地方被引用
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
return 返回值
}
形式参数:定义方法时候随便定义的
实际参数:实际传的
静态方法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();
}
}
方法的重载
重载就是在一个类中,有相同的函数名称,但是形参不同的函数
规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数,参数类型过去逐个匹配,宜选择对应的方法,如果匹配失败则编译器报错
方法一样,只是参数类型或者个数不同
可变参数
java支持传递同类型的可变参数给同一个方法
在方法声明中,在指定参数类型后加一个省略号(.....)
一个方法中只能制定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在他之前声明
递归(基数比较小可用)
递归就是:a方法调用a方法,自己调用自己
递归结构包括两个部分:
递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法
数组
变量类型 变量名字 = 变量的值
int[] numbers; //整型数组
Java语言使用new操作符来创建数组,语法如下:
dataType array = new dataType[arraysize];
//定义什么数组,就new什么数组
数组的元素是通过索引访问的,数组索引从0开始
获取数组长度:arrays.length
最终创建和声明数组可以用下面的
int[] nums = new int[10]; 空间大小为10的nums数组
内存分析
new之后在堆里开辟一段区域内存
面向对象
适合多人协作问题
本质就是:以类的方式组织代码,以对象的组织(封装)数据
三大特性:封装,继承,多态
值传递
类与对象的关系
类是一种抽象的数据类型,他是一类事物的名称,比如动物,但不知道是哪种动物或者哪一只动物
对象是抽象概念的具体实例,比如张三就是人的具体实例,旺财就是狗的一个具体实例
创建与初始化对象
使用New关键字创建对象:除了会分配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
new之后就会是一个实例
构造器(构造方法)
类中构造器也称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:
必须和类的名字相同
必须没有返回类型,也不能写void
作用:
- 构造方法里面是实例化初始值,对对象的各种属性进行初始化
- 使用new关键字,本质是调用构造器
- 有参构造:一旦定义了有参构造,无参就必须显式定义
//alt+insert 默认生成
有参与无参取决于实例化对象有没有传参
封装
高内聚,低耦合:不允许外部干涉,仅暴漏少量方法可以调用
//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());
继承
-
集成的本质是对某一类的抽象,比如美国人,中国人,对国家这个类
-
extends的意思是扩展,子类是父类的扩展
-
java中类只有单继承没有多继承
-
继承是类跟类之间的关系
-
ctrl+H
子类继承了父类,就会拥有父类的全部方法
this 是指当前类中的属性
super可用做子类调用父类的接口
父类私有的属性不能被继承
super注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
VS this
代表的对象不同
this:本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this();本类的构造
super();父类的构造
浙公网安备 33010602011771号