1、用引用操作对象。 (string st= “”absc“”) 就是说你操作st 就行了。--------值传递和引用传递@1
2、对象存储位置:
寄存器:访问速度最快,处理器内部,数量有限,不可控(不知啥意思,后期补)
栈 :通过栈针移动操作内存大小,栈针上移释放内存,下移 分配内存,生命周期明确
堆:编译器动态分配内存,new的时候分配
常量存储:rom中,不变的数据
(上面的在程序中放,下面的是在介质或者媒介中放着)
非ram存储:流和持久化对象
3、java基本类型
boolean char byte short int long float double
16 8 16 32 64 32 64
高精度BigInteger和BigDecimal 任意整数和任意定点数
4、对象作用域,由你创建的花括号位置决定,new的对象不算在内
5、类,字段,方法。
访问权限+class+命名
类的两种类型元素:数据成员(有时也叫“字段”)以及成员函数(通常叫“方法”)
方法,参数和返回值。
先看看方法的基本组成部分:名称,参数,返回值,方法体
ReturnType methodName( Argument list){
Method body
}
@1 来解释下值传递和引用传递:
值传递:
方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。
引用传递:
也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;
在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象
@2 基本类型在哪放着:
基本类型的数据,是引用数据类型,则存储在堆中,若是基本类型,则在栈中
注意:一:在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因
在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。
(1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在JAVA虚拟机栈中
(2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在JAVA虚拟机的栈中,该变量所指向的对象是放在堆类存中的。
二:在类中声明的变量是成员变量,也叫全局变量,放在堆中的(因为全局变量不会随着某个方法执行结束而销毁)。
同样在类中声明的变量即可是基本类型的变量 也可是引用类型的变量
(1)当声明的是基本类型的变量其变量名及其值放在堆内存中的
(2)引用类型时,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。引用变量名和对应的对象仍然存储在相应的堆中