成员变量和局部变量的区别
位置:
1.成员变量实在,类中方法外。
2.局部变量存在方法中
作用域:
1. 成员变量当前类中都可以使用
2.局部变量只能在方法中使用
初始化:
1.成员变量默认由初始值
2.局部变量要想使用必须初始化。
生命周期:
1.随着对象的创建而创建,随着对象的消失而消失
2.出来方法的调用就消失。
this关键字的特点和使用
this :当前调用方法的对象。
this的作用:
1.如果成员变量和局部变量同名可以通过this来调用成员变量。
2.可以通过this实现构造方法中调用构造方法。
Static 静态修饰符
1.用来修饰这个成员变量
一个成员变量被static就叫静态成员变量,如果没有修饰非静态成员变量。
有static修饰的变量叫成员变量;这个变量只会初始化一次;在内存中值存
在一个; 这个变量就变成了一个共享数据 ,单独存放在一个地方。
Eg:static String country
静态成员变量的访问方式:
1.用对象进行访问:
对象名.变量名
2.还可以通过类名来访问
类名.变量名。(推荐使用)
修饰方法 :
1.只能用类名来调用
2.类中是不允许访问属性。
注意:
1.不要认为方便就将所有的变量都用static修饰,只有当数据真正需要共享 是才需要用static修饰。
2.只有静态变量才能用类名方位,非静态变量只能用对象访问。
3.局部变量不允许被static修饰。
4.静态方法可以用对象和类名调用。非静态方法只能用对象来调用。
5.静态方法是可以访问静态的成员变量,不能够访问非静态的成员变量。
非静态方法中可以访问任何成员变量。(有可能静态方法被调用了,但是对
象还没有被创建出来)。
6.静态方法中不允许出现this关键字和super关键字(使用this : 表示一个
方法调用者对象,可能对象没有被创建出来)
特点:
静态的数据比非静态的数据存在内存中更早。
使用方法:
当一个方法不需要直接访问非静态数据,这个时候就可以用static修饰 (定
义工具类)
权限修饰符
public : 公共的,公开的 权限是最大的,任何在任何情况下都可以调用
private :私有的,权限是最小的 只能自己本类中访问
protected :受保护的。
主函数为什么这么写(public static void main(String[] args){})
public :
main主方法是由jvm来调用的,jvm实际也是一个程序,为
了 保证jvm能够在任何情况下来调用主函数。
static :
如果没有static 这个时候调用主方法就需要通过对象
来调用,jvm如果创建对象不知道该传递什么参数 所以
为了避免麻烦,就将方法定义成静态的,这个时候就不需
要考虑对象,直接类名调用就可以了。
void:
main是由jvm调用,返回值是给jvm ,jvm接收返回值没有
任何意义,所以就不需要返回值。
main : 不是关键字,main以及约定好这个就叫入口
args :用来接收程序运行时传递进来的参数。
单例设计模式
一个类只能够创建一个对象出来
步骤:
1.创建一个对象把他设置为私有的静态成员变量,保证
对象唯一
2.把构造方法设置为私有的,防止new一个对象。
3.定义一个公开的静态方法,返回值为上面的对象。
分类:
1.饿汉单例设计模式(推荐)
class SingleDog{
String name;
int age;
//保证对象唯一
/ / 声明本类的引用变量, 并且把对象创建出来
private static SingleDog s = new SingleDog(); // 静态的成员变量
//私有化构造方法 ,防止通过new来创建对象
private SingleDog(){}
//提供一个静态方法来接收唯一的对象
public static SingleDog getInstance (){
return s;
}
}
2. 懒汉单例设计模式(不安全)
class SingleDog2 {
//声明本类的引用变量,不创建
private static SingleDog2 s;
//私有化一个构造方法
private SingleDog2() {};
//提供一个静态的方法来接收唯一的对象
public static SingleDog2 getInstance(){
if(s==null){
s = new SingleDog2();
}
return s;
}
}
面向对象的三大特征:
1.封装
2.继承
3.多态
封装的权限修饰符 :
public : 公共的 ,public修饰的成员变量和方法任何人都可以之间访问
private : 私有的 ,private修饰的成员变量和方法只能在本类中访问。
封装的步骤:
1.使用private修饰需要封装的成员变量。
2.提供一个公开的方法设置或者访问私有的属性
设置:使用set方法
命名规范:
set属性名();属性的首字母要大写
访问:通过get方法
命名规范:
get属性名();属性的首字母要大写
代码书写规范: java开发中一般类成员变量(属性),都是封装起来的。
作用 :
1.框架
2.工具类。
封装好处:
1.提高了数据的安全性。
2.操作简单