根结构意味着、所有东西归根结底都是一个对象”!所以容纳了Object 的一个集合实际可以容纳任何东西。
这使我们对它的重复使用变得非常简便。
Java 的违例控制机制与大多数程序设计语言都有所不同。因为在Java 中,违例控制模块是从一开始就封装
好的,所以必须使用它!如果没有自己写一些代码来正确地控制违例,就会得到一条编译期出错提示。
在一个程序中,这些独立运行的片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任
务以后才开始响应。
Java 的多线程机制已内建到语言中,这使一个可能较复杂的问题变得简单起来。对多线程处理的支持是在对
象这一级支持的,所以一个执行线程可表达为一个对象。Java 也提供了有限的资源锁定方案。它能锁定任何
对象占用的内存(内存实际是多种共享资源的一种),所以同一时间只能有一个线程使用特定的内存空间。
为达到这个目的,需要使用synchronized关键字。其他类型的资源必须由程序员明确锁定,这通常要求程序
员创建一个对象,用它代表一把锁,所有线程在访问那个资源时都必须检查这把锁。
第五章:
1.构造器可以调用构造器,必须使用this关键字且只能调用一个构造器,而且必须将构造器置于最起始的位置,否则编译器会报错;例如:
2.static方法就是没有this的方法,不用创建对象就可以调用static方法,它很像全局方法;
3.java的垃圾回收期负责回收无用的对象占据的内存资源,对于那些不是对象的内存地址,可以在用之后使用finalize()方法进行回收;对象是可能不被垃圾回收的;垃圾回收只与内存有关; java不准许创建局部对象,必须是用new创建对象;类的每个基本类型数据成员保证都会有一个初始值;
类的内部,变量定义的先后顺序决定了初始化的顺序;变量定义散布与方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化;
静态初始化只有在必要的时候(也就是第一次访问静态数据或者生成一个对象时,不管是类中的调用还是其他)的时候,初始化后静态对象不会再次被初始化;
java中将一个数组赋值给另一个数组,其实之是赋值了一个引用而已;也就是说原数组的值改变,被赋值的数组的值也跟着改变;
如果创建的Random使用的时候Random(long seed)构造器,那么他的随机数是一定的;
4.由于所有的类都是直接或者间接的继承与Object类,所以可以创建一Object数组为参数的方法;
缺省的java类和java的方法,默认为包内的其他成员都可以访问;
可变参数的原理就是编译器把元素列表填充到数组中完成自动转换,但是如果可变参数已经是数组了,就不会再执行任何转换,还会有警告信息;可以将0个参数传给可变参数,为的是可选尾随参数;
package lianxi;
class A{};
public class ArrB {
static void f(int required, String... trailing) {
System.out.print("required: " + required + "");
for(String s : trailing)
System.out.print(s);
System.out.println();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
f(1, "one");
f(2, "one", "two");
f(0);
}
}
getClass()方法属于Object的一部分,他将产生对象的类;
可变参数列表与自动包装机制可以和谐共处,且自动包装机制将有选择的把参数列表提升为对象;