封装:是一种信息隐藏技术
利用抽象数据类型将数据和基于数据的操作封装在一起;
用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的;
封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节。
继承:基于已有的类产生新类的机制
是指新的类可以获得已有类(称超类或父类)的属性和行为,称新类为已有类的子类(也称为派生类)
在继承过程中子类继承了超类的特性,包括方法和实例变量;
- 单继承:一个子类只有单一的直接超类。
 - 多继承:一个子类可以有一个以上的直接超类。
 
数据成员声明
- public、protected、private为访问控制符。
 - static指明这是一个静态成员变量(类变量)。
 - fianl指明变量的值不能被修改。
 - transient指明变量是不需要序列化的。
 - volatile指明变量是一个共享变量。
 
实例变量
- 没有static修饰的变量(数据成员)成为实例变量
 - 存储所有实例都需要的属性,不同的实例的属性值可能不相同
 
类变量(静态变量)
- 用static修饰
 - 在整个类中只有一个值
 - 类初始化的同时被赋值
 - 适用的情况
- 类中所有对象都相同的属性。
 - 经常需要共享的数据
 - 系统中用到的一些常量值
 
 
方法声明
- public、protected、private控制访问权限。
 - static 指明这是一个类方法(静态方法)
 - final指明这是一个终结方法
 - abstract指明这是一个抽象方法
 - native用来集成java代码和其它语言的代码
 - syschronized用来控制多个并发线程对共享数据的访问
 
实例方法
- 表示特定对象的行为
 - 声明时前面不加static修饰符
 - 参数传递:
- 值传递:参数类型为基本数据类型时
 - 引用传递:参数类型为对象类型或者数组时
 
 
类方法:
- 也称为静态方法,声明时前面需要加static修饰。
 - 不能被声明为抽象的
 - 可以类名直接调用,也可以类名实例调用。
 
可变长参数
- 
可变成参数使用省略号表示,其实质是数组。
例如,“String …s” 表示“String[]s” - 
对于具有可变长参数的方法,传递可变参数的实际参数可以是以0个到多个对象
可变参数的实际上是利用数组实现的,具体可以参考下边的例子
 
public class Varargs {
	public void varagsMethod(List<String>... values) {
		Object[] array = values;
		List<Integer> list = (List<Integer>) array[0];
		list.add(1);
	}
	public void useVaragsMethod() {
		List<String> list = new ArrayList<String>();
		list.add("Hello");
		// Type safety: A generic array of List<String> is created for a varargs
		// parameter
		varagsMethod(list);
		String str = list.get(1);
	}
	public static void main(String[] args) {
		System.out.println("Varargs");
	}
}
反编译之后
public class Varargs
{
    public Varargs()
    {
    }
    public transient void varagsMethod(List values[])
    {
        Object array[] = values;
        List list = (List)array[0];
        list.add(Integer.valueOf(1));
    }
    public void useVaragsMethod()
    {
        List list = new ArrayList();
        list.add("Hello");
        varagsMethod(new List[] {
            list
        });
        String str = (String)list.get(1);
    }
    public static void main(String args[])
    {
        System.out.println("Varargs");
    }
}
包与目录
- 包名就是文件夹名,即目录名;
 - 目录名并不一定是包名。
 - Java自动引入Java.lang包
 
类成员的访问权限
- public公有:可以被其它任何方法访问,前提是对类成员所属的类有访问权限。
 - protected 只能被同一类及其子类的方法访问
 - private 只可被同一类的方法访问
 - default 默认 仅允许同一个包内的访问,又被称为包访问权限
 
this 关键字
- 如果方法内的局部变量(包括形参)名与实例变量名相同,则方法体内部访问实
例变量时需要this关键字 
对象的自动回收
- 无用对象
 - 离开iale作用域的对象
 - 无引用指向对象
 - Java运行时系统通过垃圾收集器周期性的释放无用对象所使用的内存
 - Java运行时系统会在对象进行自动垃圾回收前,自动调用对象的finalize()方法
垃圾回收器 - 自动扫描对象的动态内存区,对不再使用的对象做上标记以进行垃圾回收
作为一个后台线程运行,通常在系统空闲时异步地执行 
finalize()方法
- 
在类java.lang.Object中声明,因此Java中的每一个类都有该方法:
protectetd voud finalize() throw throwable
用于释放资源 - 
类可以覆盖(重写)finalize()方法。
finalize()方法有可能在任何时候以任何次序执行 
覆盖toSting()方法
- toString()方法 将对象内容转化为字符串对象
下面的两行代码等价 
System.out.prientln(anAccount);
System.out.println(anAccount.toString());
如果需要特殊的转化功能,则需要自己覆盖toString()方法:
- 必须被声明为public;
 - 返回类型为String;
 - 方法的名称必须为toString,且没有参数
 - 在方法体中不要使用输出方法System.out.prientln();
 
DecimalFormat类
DecimalFormat类在Java.text包中。
在toString()方法中使用DecimalFormat类的实例方法format对数据进行格式化。
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					4万+
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            