java个人学习笔记03面向对象

一、对象与引用的区别

    String hello = new String("Hello world");

代码右侧的new String(“Hello world”)在堆中开辟一块新的内存用于存放"Hello World"这个字符串
代码左侧的hello作为对象的引用储存在栈中,储存的值是一个指向字符串的引用

二、引用类型传递参数的特点
在Java语言中,所有方法参数的传递都属于值传递,例如:

String s = hello;

此时s复制了hello的内容,也即是指向"Hello World"这个字符串的一个地址,两个引用指向了同一个地址,那么当hello所指向的字符串内容改变时s所指向的内容也会随之改变

三、对象初始化
1.Java解释器会寻找类的路径,定位到已经编译好的class文件,在class对象首次加载时会首先对静态变量进行初始化,静态变量会储存在方法区中所有线程共享。
2.在堆上为对象分配足够的存储空间,给所有的变量和方法设置默认值
3.检查是否有父类,如果有,那么调用父类的构造函数
4.执行自身的构造函数

四、浅谈static
被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。因此,如果说想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static。我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了。因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值