JAVA基础
首先第一点对象的引用是存在堆栈之中的,何为对象的引用呢?
Person p=new Person("张三");
这里的p其实只是一个对象的引用指向真正的对象的 Person张三 ;p就存在堆栈之中
引用可以改变的 它可以指向别的引用
这里可以引出java传参数问题的思考,很多面试题也会提到:
java中只有一种参数传递方式:那就是按值传递 即 java中传递任何东西都是传值。如果传入方法的是基本类型的东西,那么就得到此基本类型的一份拷贝。如果传入方法的是引用,那么得到的就是 引用的拷贝。
举例说明:
package char02;
/**
* 参数传递测试 (JAVA参数传递方式:值传递 传入方法的是参数的副本)
*
* @author joe
*
*/
public class ArgumentPassTest {
static void testBasicType(int i){
System.out.println("i:"+i);
i=50;
}
static void testReference(StringBuilder sb){
System.out.println(sb.toString());
sb=new StringBuilder("test");
}
static void testReference2(StringBuilder sb){
System.out.println(sb.toString());
sb.append(" test");
}
public static void main(String[] args) {
int i=100;
testBasicType(i);
System.out.println("i:"+i);//100
StringBuilder sb=new StringBuilder("TestArgumentPass");
testReference(sb);
System.out.println(sb.toString());//TestArgumentPass
testReference2(sb);
System.out.println(sb.toString());//TestArgumentPass test
}
}
这个图大概可以看出值传递的原理,可以想到基本类型参数副本如何改变都不会影响函数外的值,而引用类型由于 由于参数副本 和 参数 都指向同一个对象,那么函数内的参数副本改变指针不影响原值,参数副本其他改变指针中的值的操作都会影响原值。
可以看出基本类型放在堆栈中。
JAVA 还提供了两个用于高精度计算的类:BigInteger和BigDecimal
作用域
成员变量的默认值
Static关键字
可以看出static
- 用于解决为某一变量分配单一空间无论创建多少个对象。甚至可以不用创建对象。
- 希望某个方法不与包含他的类的某个对象绑定在一起,没有对象也能使用这个方法。
编码规范
编码规范一定要有:类名要首字母大写 变量名要使用驼峰命名法。