Java笔记——1

Java学习笔记

1、结构体和类的区别联系

结构体和类的共同点:

都可以将多个数据封装为一个整体

结构体和类的不同点:

结构体只能封装数据,而类还可以封装行为;
结构体实例是值类型,类实例是对象类型
结构体实例存储在栈空间,类实例存储在堆空间
结构体变量赋值是值拷贝,类实例赋值是指针引用

应用场景:

如果封装的这个数据,不仅有数据还有方法,只能使用类,

如果表示实体,没有行为,光有属性,

i.     如果属性较少,只有几个的情况下,就定义为结构体,分配在栈,提高运行效率

ii.     如果属性较多,就不要定义为结构体,因为这样结构体变量会在栈中占据很大一块空间,反而会影响效率,则需要定义为类

2、数据类型

1.基本数据类型:
整形、浮点、字符、布尔;
都有默认值,布尔是false;
2.引用数据类型:
类、数组、接口;
默认值为:null;
引用类型变量只可能存两类值:null 或 地址值(含变量的地址)
3.局部变量没有初始默认值,因此局部变量调用一定要显式赋值。
局部变量加载在栈空间、成员变量(属性)加载在堆空间中;

3、JVM内存结构

编译完源程序以后,生成一个或多个字节码文件。
我们使用JVM的类的加载器和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。
虚拟机栈,即栈结构。我们将局部变量存储在栈结构中
堆,我们将new出来的结构(比如:数组、对象)加载在堆空间中。补充:对象的属性(非static的)也是加载在堆空间中
方法区:类的加载信息、常量池、静态域

4、对象

1.匿名对象只能调用一次

变量的赋值

1.如果变量是基本数据类型,此时赋值的是变量所保存的数据值;
2.如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值;

java 中 Cannot make a static reference to the non-static 解决方法

1.static修饰的方法,无须产生类的实例对象就可以调用该方法,即satic变量是存储在静态存储区的,不需要实例化。
2.非static修饰的方法,需要产生一个类的实例对象才可以调用该方法。
也就是说,在main函数中调用函数只能调用静态的。如果要调用非静态的,那么必须要先实例化对象,然后通过对象来调用非静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值