大数据之路week01--自学之面向对象java(static,this指针(初稿))

 

函数的重载 返回值不一样会报错

 

java中,如果自己定义了构造函数的话,它就不会给你默认一个无参函数

 

如果一个属性,只进行定义,不初始化,自动补0,
如果是一个布尔属性,默认是false
但是如果一个局部变量只定义不进行初始化,它就是个垃圾值,报错!

 

Java把内存划分为4个部分 1. 代码区 1、栈区 3、堆区 4、静态区域
1、栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源
2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收
3、静态区(datasegment)—存放全局变量,静态变量和字符串常量,不释放
4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域

 

this指针:(实际上,每个非static方法中都隐含这一个this指针
指向当前正在调用该方法的对象。)

 


static(静态的):
如果在一个属性的前面加上static ,那么这个属性就不是某一个对象的了,而是N个对象共用的了。在静态区存放,不释放。
static属性变量是属于类本身的,没有对象我们仍然可以通过类名的方式进行访问该类内部的static属性。(static方法也可以)
(注意:1、类可以直接调用,实例化出来的对象当然也可以进行调用。
理解:模型都可以,模型造的对象当然可以。
2、加上static的确是属于类本身的,但是要去访问它必须控制符是非私有的,如果控制符是私有的,则不能直接通过类名进行访问!!
理解:private static void a(){} private static int i;都是不可以直接通过类名进行访问,因为前面的控制符是private
3、非静态的方法可以访问静态成员,反之不可以。非私有的静态成员才能通过类名直接调用。
理解:静态的方法和静态的变量属于类本身,不是静态的方法必须通过对象进行调用,在实例化对象的同时也包含了静态的方法,当然可以。
反之不可以。)
class A{
public static int i;
}

 

class M{
public static void main(String[] args){
System.out.printf("%d\n",A.i);
}
}

posted @ 2019-11-09 21:23  Xiaohu_BigData  阅读(182)  评论(0编辑  收藏  举报