Java学习(五)

Java学习(五)

标签(空格分隔): Javajava


final的用法

final在java中并不经常使用,然而它却为咱们提供了诸如在c语言中定义常量的功能,不只如此,final还可让你控制你的成员、方法或者是一个类是否可被重写或继承等功能,这些特色使final在java中拥有了一个不可或缺的地位,也是学习java时必需要知道和掌握的关键字之一。android

   final成员:当你在类中定义变量时,在其前面加上final关键字,那即是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来讲是其值不可变,而对于对象变量来讲是其引用不可再变。其初始化能够在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中,注意,这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。还有一种用法是定义方法中的参数为final,对于基本类型的变量,这样作并无什么实际意义,由于基本类型的变量在调用方法时是传值的,也就是说你能够在方法中更改这个参数变量而不会影响到调用语句。然而对于对象变量,却显得很实用,由于对象变量在传递时是传递其引用,这样你在方法中对对象变量的修改也会影响到调用语句中的对象变量,当你在方法中不须要改变做为参数的对象变量时,明确使用final进行声明,会防止你无心的修改而影响到调用方法。设计模式

   final方法:将方法声明为final,那就说明你已经知道这个方法提供的功能已经知足你要求,不须要进行扩展,而且也不容许任何今后类继承的类来重写这个方法,可是继承仍然能够继承这个方法,也就是说能够直接使用。另外有一种被称为inline的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用,例如保存断点,压栈等,这样可能会使你的程序效率有所提升,然而当你的方法主体很是庞大时,或你在多处调用此方法,那么你的调用主体代码便会迅速膨胀,可能反而影响效率,因此你要慎用final进行方法定义。函数

   final类:当你将final用于类身上时,你就须要仔细考虑,由于一个final类是没法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,而且此类的设计已被认为很完美而不须要进行修改或扩展。对于final类中的成员,你能够定义其为final,也能够不是final。而对于方法,因为所属类为final的关系,天然也就成了final型的。你也能够明确的给final类中的方法加上一个final,但这显然没有意义。学习

JavaI/O部分之File类的用法

在java中,I/O(输入/输出)是比较乏味的事情,由于看不到明显的运行效果,但输入/输出是全部程序都必需的部分——使用输入机制,容许程序读取外部数据(包括来自磁盘、光盘等存储设备的数据)、用户输入数据;使用输出机制,容许程序记录运行状态,将程序数据输出到磁盘、光盘等存储设备中。.net

 Java的I/O经过java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种IO流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字节为单位来处理输入、输出操做,而字符流则以字符来处理输入、输出操做。设计

Java的IO流使用了一种装饰器设计模式,它将IO流分为底层节点流和上层处理流,其中节点流用于和底层的物理存储节点直接关联——不一样的物理节点获取节点流的方式可能存在必定的差别,但程序能够把不一样的物理节点流包装成统一的处理流,从而容许程序使用统一的输入。输出代码来读取不一样的物理存储节点的资源。code

下面主要经过一个类来记录此部分知识点,具体代码以下:对象

import java.io.File;
import java.util.Date;
 
 
 
/**
 * 
 * @author Android将军
 *
 */
/*
 * File类是java.io包下表明与平台无关的文件和目录,也就是说,若是但愿在程序中操做文件和目录,均可以经过File
 *类来完成。值得指出的是,不论是文件仍是目录都是使用File来操做的,File能新建、删除、重命名文件和目录,File
 *不能访问文件内容自己。若是须要访问文件内容自己,则须要使用输入/输出流。
 *  一旦建立了File对象后,就能够调用File对象的方法来访问,File类提供了不少方法来操做文件和目录。
 */
public class FileStudy {
    
 
    private static File file;
    /**
     * 传入指定目录的文件或目录,获取该对象的详细信息
     * @param uri 传入的文件路径或文件目录
     */
    public static void createSysout(String uri)
    {
        file=new File(uri);
        if(file.isFile())//判断File对象所对应的是不是文件,而不是目录
        {
            //返回此File对象所表示的文件名
            System.out.println("文件名:"+file.getName());
            //返回此File对象所对应的路径名
            System.out.println("文件路径:"+file.getPath());
            //返回此File对象所对应的绝对路径所对应的File对象
            System.out.println("该文件所对应的绝对路径所对的File的名字:"+file.getAbsoluteFile().getName());
            //返回此File对象所对应的绝对路径名。
            System.out.println(file.getAbsolutePath());
            //返回此File对象所对应目录(最后一级子目录)的父目录名.
            System.out.println(file.getParent());
            
            //重命名此File对象所对应的文件或目录,若是重命名成功,则返回true,不然返回false
//          System.out.println(file.renameTo(new File("TestNewName.txt")));//重命名以后,该file所对应的文件就没有了。
            //判断File对象所对应的文件或目录是否存在
            System.out.println("文件是否存在:"+file.exists());
            //判断File对象所对应的文件和目录是否可写
            System.out.println("文件是否可写:"+file.canWrite());
            //判断File对象所对应的文件和目录是否可读
            System.out.println("文件是否可读:"+file.canRead());
            //判断File对象所对应的是不是目录,而不是文件
            System.out.println("该对象是否为目录:"+file.isDirectory());
            //判断File对象所对应的文件或目录是不是绝对路径。该方法消除了不一样平台的差别,能够直接判断File对象是否为绝对路径。
            //在Unix/Linux/BSD等系统上,若是路径名开头是一条斜线(/),则代表该File对象对应一个绝对路径;在Windows等系统上,若是路径开头
            //是盘符,则说明它是一个绝对路径。
            System.out.println("是否为绝对路径:"+file.isAbsolute());
            System.out.println("文件的最后修改时间:"+new Date(file.lastModified()).toString());
            System.out.println("文件内容的长度:"+file.length());
            
        }
        
    }
}

http://blog.csdn.net/android_jiangjun/article/details/41683915blog

相关文章
相关标签/搜索