构造方法三个特殊性:
* 构造方法必须具备和所在类相同的名字; * 构造方法没有返回值类型,甚至连void都没有; * 构造方法是在创建一个对象使用new操作符时调用的。构造方法的作用是初始化对象; * 构造方法支持重载可以有多个同名的构造方法但要有不同的参数签名(参数类型、参数顺序、参数个数);
异常类描述
异常基类: Throwable 两大子类: Error & Exception - Error: 描述Java运行系统内部错误以及资源耗尽等 - OutOfMemeoryError - *Error - VirtumachineError - Exception - IOException - SQLException - ClassNotFoundException ... - RuntimeException: - ClassCastException - NullPointerException - ArithmeticException - ArrayIndexOutOfBoundsException ...
内存管理
- 程序计数器是《Java虚拟机规范》中唯一没有规定OutOfMemeoryError情况的区域;
- 直接内存不是运行时数据区的一部分但也会出现OutOfMemeoryError的情况;
值传递
class Emp{
private String username;
public Emp(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "Emp{" +
"username=‘" + username + ‘\‘‘ +
‘}‘;
}
}
public class TestDemo06 {
public static void main(String[] args) {
Emp emp = new Emp("...");
System.out.println(emp);
TestDemo06.changeObj(emp);
System.out.println(emp);
// ==========================================================================
Integer var01 = new Integer(1);
Integer var02 = var01;
System.out.println(System.identityHashCode(var01));
doSth(var01);
System.out.println(var01.intValue());
System.out.println(var02.intValue());
System.out.println(var01 == var02);
}
private static void doSth(Integer integer){
System.out.println(integer.intValue()); // 1
integer = new Integer(12);
System.out.println(System.identityHashCode(integer));
System.out.println(integer.intValue()); // 12
}
// ==========================================================================
private static void changeObj(Emp emp){
emp.setUsername("wangzz------------>");
}
}
// Emp{username=‘...‘}
// Emp{username=‘wangzz------------>‘}
// 328638398
// 1
// 1789550256
// 12
// 1
// 1
// true
//
// Process finished with exit code 0
Java是值传递。
值传递和引用传递最大区别在于:传入方法的实际参数是否是原值得副本。
值传递传递的实际参数是原值的副本,在方法中进行的操作不会印象原值。但是如果是对象对对象地址上对象内容操作会有印象
引用传传递的实际参数是原值,在方法中进行的操作就是原值的操作。
由权值为9,5,2,7的四个叶子节点构造一棵最优二叉树,该树的带权路径长度为:()
带权路径长度=53+23+72+91=44
给定n个权值作为n的 叶子 结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。