方法的参数传递(值传递 引用传递)
基本数据类型:值传递:当参数类型为基本数据类型的时候 传递的是值 出了方法 原有值不改变
引用数据类型:引用传递:当参数类型为引用数据类型的时候 传的是堆内存中的地址 可以改变 堆内存中地址对应的数据
static关键字
static静态
优点,
1.节省资源,可以把共性的东西抽取出来设置为静态 共有
2.静态修饰的成员 优先于对象加载入内存 随着类的加载而加载
3.当成员被静态修饰后,多了一种调用方式 类名。静态成员
总结:与类相关的 与对象无关
修饰成员变量:
所属: static修饰静态成员变量属于类 叫类变量
static修饰非静态成员变量属于对象,实例变量
内存: 静态 存储于方法区的静态区
非静态: 堆内存
出现时间不同,调用不同
修饰成员方法
语法:
访问权限修饰符 static 返回值类型 方法名(形参){
//方法体
}
注意:
1.静态方法 只能访问静态成员
非静态既可以访问静态 也可以访问非静态
静态方法中 不可以定义 this / super关键字
因为静态优先于对象存在 所以静态方法中不可以 出现非静态的this/super的成员 静态只能访问静态
总结:利: 将对象共享的数据进行单独存储 节省空间 可以直接用类名调用
弊: 生命周期过长 访问出现局限性 静态虽好 只能访问静态
public static void main(String[] args) {
}
1.public 访问权限修饰符 (访问权限最大控制符)
2.static 静态的 随着类的加载 进入内存
3.void 不确定的范围值 当前jvm 不需要这个方法带回返回值
4.main 不是个关键字 jvm识别这个方法名 程序的入口
5.String[]:存放String类型数据的数组 可以接收键盘录入
6.args 数组名 不是关键字 arguments参数的意思
二、工具类
什么叫工具类?
将某些共性的功能抽取出来 单独封装Java类 这样提高了复用性
类ArrayTool
练习:
1.获取最大值
2.数组的遍历
工具类:私有化构造函数 因为不需要在其他类中创 建对象
将所有方法用static修饰 可以类名.调用
静态代码块
static{
}
随着类的加载而执行 只执行一次
并有优先于主函数 没名字比有名字的快
用于给类初始化的
****一般用于加载驱动
构造代码块{
}
单例设计模式
模式:解决一件事最快的方法,最有效的方法
Java中有23种设计模式
设计模式 是纯理论 纯思想
3步:
1.将构造函数私有化
2.在本类中创建一个本类对象
3.提供一个方法可以获取该类对象
饿汉式 : 先初始化对象
private Single(){}
private static Single s = new Single();
public static Single getSingle(){
return s;
}
懒汉式 : 对象是方法被调用时 才初始化 也叫作延时加载
private Single(){}
private static Single s = null;
public static Single getSingle(){
if(s == null){
s = new Single();
}
return s;
}
继承:
父类(超类):super
优点:1.提高代码的复用性 少写代码
2.让类与类之间产生关系 有了这个关系 才 有了多态 是多态的前提
类与类之间 有共性的关系 抽取出来的是父类
子类继承父类 必须有关系
class A{
void demo1(){}
void demo2(){}
}
class B extends A{
void demo1(){}
void demo3(){}
}
缺点:
1.类的耦合性增强了
开发原则:高内聚,低耦合
只能单继承,不支持多继承
但是支持多层继承
想要调用父类的成员变量用super.name(this.name)
1.想要使用体系,先查阅父类的描述 因为父类中定义的是该体系中共性的功能通过了解共性功能 你就能知道该体系的基本功能 那么这个体系基本已经可用了
this:代表本类对象的引用
super:代表父类对象的引用
继承中成员方法的关系
同名:
就近原则
不同名:
直接调用
方法的重写:
子父类出现了一模一样的方法
重写有什么用?
提高了代码的扩展性当子类需要父类的功能,而功能主体 子类特有的内容时,可以重写父类中的功能这样 即沿袭了父类的功能 又定义了子类的特有内容
注意事项:
1.父类私有方法 子类不能被重写
2.子类重写父类方法时 访问权限不能更低(大于等于) 否则编译失败//private < 默认 < public 权限越来越小 那么继承体系 就崩溃了
重写:一模一样
继承中构造方法的关系
class Anomal{
String color;
int leg;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
class cat extends Anomal
{
}
class Dog extends Anomal
{
}
问题: 重写与重载的区别:
重载:在同一个类中,方法名相同,参数列表不 同,与返回值无关。
优点:重载方法可以使得程序更加清楚,以及更加具有可读性
缺点:会产生歧义,导致编译错误:例:
public static double max(int num1,double num2){
if(num1>num2){
return num1;
}else{
return num2;
}
public static double max(double num1,int num2){
if(num1>num2){
return num1;
}else{
return num2;
}
}
}
重写:子父类出现了一模一样的方法
作用:子类修改父类中定义的方法的实现
注意:1.当实例是可以访问时,他才能被覆盖。因为私有方法在他类本身以外是不能被访问的,所以不能被覆盖,如果子类中定义的方法在父类中是私有的,那么这两个方法没有关系。
2.与实例方法一样,静态方法也能被继承,但是,静态方法不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏,可以使用语法:父类名。静态方法名(SuperClassName.staticMethodName)调用隐藏的静态方法。
小结:重载意味着使用同样的名字但是不同的签名来定义多个方法。重写意味着在子类中提供一个对方法的新的实现。
基本数据类型:值传递:当参数类型为基本数据类型的时候 传递的是值 出了方法 原有值不改变
引用数据类型:引用传递:当参数类型为引用数据类型的时候 传的是堆内存中的地址 可以改变 堆内存中地址对应的数据
static关键字
static静态
优点,
1.节省资源,可以把共性的东西抽取出来设置为静态 共有
2.静态修饰的成员 优先于对象加载入内存 随着类的加载而加载
3.当成员被静态修饰后,多了一种调用方式 类名。静态成员
总结:与类相关的 与对象无关
修饰成员变量:
所属: static修饰静态成员变量属于类 叫类变量
static修饰非静态成员变量属于对象,实例变量
内存: 静态 存储于方法区的静态区
非静态: 堆内存
出现时间不同,调用不同
修饰成员方法
语法:
访问权限修饰符 static 返回值类型 方法名(形参){
//方法体
}
注意:
1.静态方法 只能访问静态成员
非静态既可以访问静态 也可以访问非静态
静态方法中 不可以定义 this / super关键字
因为静态优先于对象存在 所以静态方法中不可以 出现非静态的this/super的成员 静态只能访问静态
总结:利: 将对象共享的数据进行单独存储 节省空间 可以直接用类名调用
弊: 生命周期过长 访问出现局限性 静态虽好 只能访问静态
public static void main(String[] args) {
}
1.public 访问权限修饰符 (访问权限最大控制符)
2.static 静态的 随着类的加载 进入内存
3.void 不确定的范围值 当前jvm 不需要这个方法带回返回值
4.main 不是个关键字 jvm识别这个方法名 程序的入口
5.String[]:存放String类型数据的数组 可以接收键盘录入
6.args 数组名 不是关键字 arguments参数的意思
二、工具类
什么叫工具类?
将某些共性的功能抽取出来 单独封装Java类 这样提高了复用性
类ArrayTool
练习:
1.获取最大值
2.数组的遍历
工具类:私有化构造函数 因为不需要在其他类中创 建对象
将所有方法用static修饰 可以类名.调用
静态代码块
static{
}
随着类的加载而执行 只执行一次
并有优先于主函数 没名字比有名字的快
用于给类初始化的
****一般用于加载驱动
构造代码块{
}
单例设计模式
模式:解决一件事最快的方法,最有效的方法
Java中有23种设计模式
设计模式 是纯理论 纯思想
3步:
1.将构造函数私有化
2.在本类中创建一个本类对象
3.提供一个方法可以获取该类对象
饿汉式 : 先初始化对象
private Single(){}
private static Single s = new Single();
public static Single getSingle(){
return s;
}
懒汉式 : 对象是方法被调用时 才初始化 也叫作延时加载
private Single(){}
private static Single s = null;
public static Single getSingle(){
if(s == null){
s = new Single();
}
return s;
}
继承:
父类(超类):super
优点:1.提高代码的复用性 少写代码
2.让类与类之间产生关系 有了这个关系 才 有了多态 是多态的前提
类与类之间 有共性的关系 抽取出来的是父类
子类继承父类 必须有关系
class A{
void demo1(){}
void demo2(){}
}
class B extends A{
void demo1(){}
void demo3(){}
}
缺点:
1.类的耦合性增强了
开发原则:高内聚,低耦合
只能单继承,不支持多继承
但是支持多层继承
想要调用父类的成员变量用super.name(this.name)
1.想要使用体系,先查阅父类的描述 因为父类中定义的是该体系中共性的功能通过了解共性功能 你就能知道该体系的基本功能 那么这个体系基本已经可用了
this:代表本类对象的引用
super:代表父类对象的引用
继承中成员方法的关系
同名:
就近原则
不同名:
直接调用
方法的重写:
子父类出现了一模一样的方法
重写有什么用?
提高了代码的扩展性当子类需要父类的功能,而功能主体 子类特有的内容时,可以重写父类中的功能这样 即沿袭了父类的功能 又定义了子类的特有内容
注意事项:
1.父类私有方法 子类不能被重写
2.子类重写父类方法时 访问权限不能更低(大于等于) 否则编译失败//private < 默认 < public 权限越来越小 那么继承体系 就崩溃了
重写:一模一样
继承中构造方法的关系
class Anomal{
String color;
int leg;
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
class cat extends Anomal
{
}
class Dog extends Anomal
{
}
问题: 重写与重载的区别:
重载:在同一个类中,方法名相同,参数列表不 同,与返回值无关。
优点:重载方法可以使得程序更加清楚,以及更加具有可读性
缺点:会产生歧义,导致编译错误:例:
public static double max(int num1,double num2){
if(num1>num2){
return num1;
}else{
return num2;
}
public static double max(double num1,int num2){
if(num1>num2){
return num1;
}else{
return num2;
}
}
}
重写:子父类出现了一模一样的方法
作用:子类修改父类中定义的方法的实现
注意:1.当实例是可以访问时,他才能被覆盖。因为私有方法在他类本身以外是不能被访问的,所以不能被覆盖,如果子类中定义的方法在父类中是私有的,那么这两个方法没有关系。
2.与实例方法一样,静态方法也能被继承,但是,静态方法不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏,可以使用语法:父类名。静态方法名(SuperClassName.staticMethodName)调用隐藏的静态方法。
小结:重载意味着使用同样的名字但是不同的签名来定义多个方法。重写意味着在子类中提供一个对方法的新的实现。