面向对象之this关键字,static关键字 main
2013-12-19 17:57
218 查看
this指的是什么?
this其实是指本类的对象,本类对象可以创建很多,具体代表的是哪个对象呢?哪个对象在调用this所在的函数,this就代表哪个对象
什么时候使用this?
定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象,只要是本类功能内部使用到了本类对象,都可用this表示
this只能在构造函数的第一行,因为初始化要先执行
static关键字
修饰符,只能用于修饰成员 (成员变量,成员函数)
如果被static修饰的话这个成员变量/成员函数就不在堆内存 中了,而在方法区中(共享区,数据区)
方法区中存储的是什么 :静态,类中的方法,
静态除了被对象调用外,还可以直接被类名调用
静态有特点:
1.随着类的加载而加载,静态会随着类的消失面消失,说明它的生命周期最长
2,被所有对象共享
3.优先于对象存在,静态是先存在的,对象是后存在的,
4.可以被对象调用
实例变量和类变量的区别:
1,存放的位置
类变量(静态)随着类的加载而存在于方法区中
实例变量随着对象的建立而存在于堆内存中
2.生命周期
类变量生命周期最长,随着类的消失而消失
实例变量生命周期随着对象的消失而消失
静态使用的时候需要注意的地方
1,静态方法只能访问静态成员
2,非静态方法可以访问非静态成员 ,可以访问静态成员,因为静态优先于对象存在,所以能够访问
3.静态中不能定义this,super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this
静态的优点:
对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用
静态的缺点:
生命周期过长 ,访问出现了局限性,静态只能访问静态
什么时候会使用到静态?
当对象中有共享的数据时,是数据(值),而不是属性
当函数中没有出现对象的特有数据就可以将这个函数定义成static
简单的小示例
public class ObjectStatic
{
public static void main(String[] args)
{
//因为类成员方优先于对象存在所以此时可以用类名.方法调用
Student.classInfo();
Student s=new Student("zhangsan",20);
s.classInfo();
s.info();
}
}
class Student
{
//学生的姓名
private String name;
//学生的年龄
private int age;
//学生的班级,此时每个学生都属于同一个班级,可以将这个成员变量设置成static
private static String Class1="1023";
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public void info()
{//这里使用到了对象的特有数据函数不能声明为static
System.out.println("name:"+name+"age:"+age);
}
public static void classInfo()
{
System.out.println("class:"+Class1);
}
}
主函数 main
是一个特殊的函数,程序的入口,可以被虚拟调用
主函数的定义:
public :该函数的访问权限最大
static:主函数随着类的加载而加载已经存在
void:主函数没有具体返回值
main:是一个特殊的单词,可以被虚拟机识别,不是关键字
this其实是指本类的对象,本类对象可以创建很多,具体代表的是哪个对象呢?哪个对象在调用this所在的函数,this就代表哪个对象
什么时候使用this?
定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象,只要是本类功能内部使用到了本类对象,都可用this表示
class Person2 { private String name; private int age; Person2(String name,int age) { //此时这里要用this,因为局部变量name ,age与成员变量名称相同,如果此处 不用this代表着用的还局部变量的name this.name=name; this.age=age; } }构造函数中的相互调用 this
this只能在构造函数的第一行,因为初始化要先执行
class Person2 { private String name; private int age; Person2(String name,int age) { //此时会调用 用带有一个参数的构造参数 this(name); this.age=age; } //无参数构造函数 Person2() { } //有参构造函数 Person2(String name) { this.name=name; }
static关键字
修饰符,只能用于修饰成员 (成员变量,成员函数)
如果被static修饰的话这个成员变量/成员函数就不在堆内存 中了,而在方法区中(共享区,数据区)
方法区中存储的是什么 :静态,类中的方法,
静态除了被对象调用外,还可以直接被类名调用
静态有特点:
1.随着类的加载而加载,静态会随着类的消失面消失,说明它的生命周期最长
2,被所有对象共享
3.优先于对象存在,静态是先存在的,对象是后存在的,
4.可以被对象调用
实例变量和类变量的区别:
1,存放的位置
类变量(静态)随着类的加载而存在于方法区中
实例变量随着对象的建立而存在于堆内存中
2.生命周期
类变量生命周期最长,随着类的消失而消失
实例变量生命周期随着对象的消失而消失
静态使用的时候需要注意的地方
1,静态方法只能访问静态成员
2,非静态方法可以访问非静态成员 ,可以访问静态成员,因为静态优先于对象存在,所以能够访问
3.静态中不能定义this,super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this
静态的优点:
对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用
静态的缺点:
生命周期过长 ,访问出现了局限性,静态只能访问静态
什么时候会使用到静态?
当对象中有共享的数据时,是数据(值),而不是属性
当函数中没有出现对象的特有数据就可以将这个函数定义成static
简单的小示例
public class ObjectStatic
{
public static void main(String[] args)
{
//因为类成员方优先于对象存在所以此时可以用类名.方法调用
Student.classInfo();
Student s=new Student("zhangsan",20);
s.classInfo();
s.info();
}
}
class Student
{
//学生的姓名
private String name;
//学生的年龄
private int age;
//学生的班级,此时每个学生都属于同一个班级,可以将这个成员变量设置成static
private static String Class1="1023";
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public void info()
{//这里使用到了对象的特有数据函数不能声明为static
System.out.println("name:"+name+"age:"+age);
}
public static void classInfo()
{
System.out.println("class:"+Class1);
}
}
主函数 main
是一个特殊的函数,程序的入口,可以被虚拟调用
主函数的定义:
public :该函数的访问权限最大
static:主函数随着类的加载而加载已经存在
void:主函数没有具体返回值
main:是一个特殊的单词,可以被虚拟机识别,不是关键字
相关文章推荐
- 07-Java面向对象构造方法,static关键字,main方法,说明书,math随机数
- 黑马程序员-JAVASE入门( 面向对象、单例设计模式、this、static关键字)
- 代码封装/匿名对象/关键字(this ,static)/工具类main方法/
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 面向对象基础续2(static关键字、理解main方法、代码块、构造方法私有化(单例模式)) .
- 黑马程序员--03.Java面向对象--02.【static关键字】【main方法】【静态成员】
- 面向对象(二)——操作符重载 & 关键字this & 静态成员static
- 嘿,程序员——面向对象特征一:封装,以及this、static关键字和单例模式
- 面向对象知识点之static关键字的使用
- 黑马程序员--Java面向对象之this、static和单例设计模式
- php面向对象全攻略 (十) final static const关键字的使用
- 面向对象中比较重要的this,static,super,单利设计的总结和归纳
- Java面向对象笔记(六)static关键字
- 面向对象基础——static关键字和代码块的使用
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解
- php面向对象全攻略 (十) final static const关键字的使用
- 面向对象-static关键字和main函数
- 面向对象:封装¥构造函数&this关键字&static静态关键字
- 面向对象之:this和super关键字
- 黑马程序员_面向对象1_(封装、构造函数、this、static、单例设计模式)