java中常用类

1、Java的包装类

  基本数据类型我们都很熟悉,例如:int、float、double、boolean、char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据类型也具备对象的特性,Java为每个数据类型都提供了一个包装类,这样我们就可以像操作对象一样,操作这些基本数据类型了

  常见的包装类和基本类型对应关系如下:


  包装类主要提供了两类方法:

  1、进行多个类型之间的转换

  2、将字符串和本类型及包装类相互转换

  比如下面代码:

1 int i = 2;

2 Integer m = new Integer(5);

3 Integer n = new Integer("8");

  第一行是用基本类型定义了整型变量i,第二行是利用int包装类定义了int对象m,虽然赋值为整型的5,但是现在会将基本类型转换为包装类中的5

  第三行初始化值为字符串类型的"8",但是会被包装类转换成整数类型,这就是包装类的基本使用方法

  每个包装类都可以和其他类进行转换,比如Integer包装类,转换的对应关系如下:

根据转换的对应关系,可以写一个简单的实例如下:

1 public class HelloWorld {

2    public static void main(String[] args) {

4          int score1 = 86;

5         

6          // 创建Integer包装类对象,表示变量score1的值

7          Integer score2=new Integer(score1);

8         

9          // 将Integer包装类转换为double类型

10          double score3=score2.doubleValue();

11         

12          // 将Integer包装类转换为float类型

13          float score4=score2.floatValue();

14         

15          // 将Integer包装类转换为int类型

16          int score5 =score2.intValue();

17 

18          System.out.println("Integer包装类:" + score2);

19          System.out.println("double类型:" + score3);

20          System.out.println("float类型:" + score4);

21          System.out.println("int类型:" + score5);

22      }

23  }

通过这个简单的包装类转换程序,可以看出包装类转换为各种基本数据类型也是很方便的

那么基本类型怎么转换为包装类的对象呢?其实前面三行代码已经体现了,只不过不太完全,基本类型转换为包装类可以理解为一个装箱的过程,装箱有两种方式:手动装箱和自动装箱,那么同理包装类转换为基本类型叫做拆箱,同样分为:手动拆箱和自动拆箱,上面的例子就是一个手动拆箱的例子,

那么其中自动装箱和自动拆箱,都是编译器根据数据类型自动完成了转换,简单的代码如下:

1 public class HelloWorld {

2      public static void main(String[] args) {

3          double a = 91.5;

4         

5          // double类型手动装箱

6          Double b = new Double(a);   

7         

8          // double类型自动装箱

9          Double c = a; 

10 

11          System.out.println("装箱后的结果为:" + b + "和" + c);

12 

13          Double d = new Double(87.0);

14         

15          // Double包装类对象手动拆箱

16          double e = d.doubleValue();

17         

18          //Double包装类对象自动拆箱

19          double f = d;

20         

21          System.out.println("拆箱后的结果为:" + e + "和" + f);

22      }

23  }

例子很简单,对每一个数据类型分别完成了自动和手动两个操作,所以b和c的值是一样的,e和f的值是一样的

除了基本数据类型的包装转换之外,基本类型和字符串之间也可以进行转换

比如一个基本类型:int a = 30;有3中方式转换为字符串对象:

  1、使用包装类的toString方法,String str1 = Integer.toString(a);

  2、使用String类的valueOf方法,String str2 = String.valueOf(a);

  3、用一个空字符串加上基本类型,系统会将基本类型转换为字符串类型,String str3 = a + "";

反过来,定义:String str = "18";将一个字符串类型转换为基本类型有以下两种方法:

  1、调用包装类的parseXxx静态方法,int b = Integer.parseInt(str);

  2、调用包装类的valueOf方法,完成自动拆箱,int c = Integer.valueOf(str);

其他类型转换也是一样,替换里面的类型即可,下面是一个简单的例子:

1 public class HelloWorld {

2      public static void main(String[] args) {

3         

4          double m = 78.5;

5          //将基本类型转换为字符串

6          String str1 = Double.toString(m);

7         

8          System.out.println("m 转换为String型后与整数20的求和结果为: "+(str1+20));

9         

10          String str = "180.20";

11          // 将字符串转换为基本类型

12          Double a = Double.valueOf(str);

13     

14          System.out.println("str 转换为double型后与整数20的求和结果为: "+(a+20));

15      }

16  }

这个例子实现了两次转换,所以str1+20应该输出:78.520,a+20应该输出:200.20,前者结果是字符串类型,后者结果是基本的浮点数类型

2、Java日期时间处理

  程序开发中,时间处理必不可少,这些内容相对简单一些,会使用一些固定的类即可

  首先,我们可以使用java.util包中的Date类来获取时间,方法如下:

1 Date d = new Date();

2 System.out.println(d);

这样是最简单的方法了,但是输出格式可能不太适合我们:Mon Sep 21 21:46:13 CST 2015

所以我们需要进行简单的修饰,那么这时需要java.text包中的SimpleDateFormat类中的format方法对文本进行格式化,代码如下:

1 Date d = new Date();

2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

3 String today = sdf.format(d);

4 System.out.println(today);

这样就输出了我们常用的时间:2015-09-21 21:51:39,另外格式我们也可以按照我们的需要定义

反过来呢,我们还可以把文本变成默认的时间格式,这用到了SimpleDateFormat类中的parse方法,但是这个方法可能会出现异常,所以需要java.text中的异常类ParseException类进行异常处理,看一个小实例:

1 import java.text.ParseException;

2 import java.text.SimpleDateFormat;

3 import java.util.Date;

5 public class HelloWorld {

6     

7      public static void main(String[] args) throws ParseException {

8         

9          // 使用format()方法将日期转换为指定格式的文本

10          SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

11          SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");

12          SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

13         

14          // 创建Date对象,表示当前时间

15          Date now = new Date();

16         

17          // 调用format()方法,将日期转换为字符串并输出

18          System.out.println(sdf1.format(now));

19          System.out.println(sdf2.format(now));

20          System.out.println(sdf3.format(now));

21 

22          // 使用parse()方法将文本转换为日期

23          String d = "2015-9-21 21:56:36";

24          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

25         

26          // 调用parse()方法,将字符串转换为日期

27          Date date = sdf.parse(d);

28         

29          System.out.println(date);

30      }

31  }

例子很简单,实现了时间格式化,文本到日期的转换

另外在java.util包中还有一个时间处理的Calendar类,因为Date类中的本身的设计方法,遭到了众多批评,所以推荐使用Calendar类来处理时间,Calendar类是一个抽象类,可以通过调用getInstance静态方法获得Calendar的一个对象,此对象默认由当前时间进行初始化,直接来一个简单的实例:

1 package com.imooc.collection;

2

3 import java.util.Calendar;

4

5 public class DateAction {

6

7    public static void main(String[] args) {

8        Calendar c = Calendar.getInstance();    //实例化Calendar对象

9        int year = c.get(Calendar.YEAR);    //通过get方法获得当前年

10        int month = c.get(Calendar.MONTH) + 1;    //月份0-11,需要加1

11        int day = c.get(Calendar.DAY_OF_MONTH);    //日期

12        int hour = c.get(Calendar.HOUR_OF_DAY);    //获取小时

13        int minute = c.get(Calendar.MINUTE);    //获取分钟

14        int second = c.get(Calendar.SECOND);    //获取秒数

15        System.out.println("当前时间:" + year + "年" + month + "月" + day + "日" + "  " + hour +

16                ":" + minute + ":" + second);

17    }

18

19 }

这样就打印出结果了:当前时间:2015年9月21日   22:12:13

Calendar还提供了getTime方法,用来获取Date对象,实现Calendar和Date对象的互转,还可以用getTimeInMillis获得1970年01月01日0时0分0秒,到当前时间的毫秒数,大约是Unix时间戳的1000倍

简单代码如下:

1 Date date = c.getTime();    //对象转换

2 Long time = c.getTimeInMillis();    //获取至现在的毫秒数

3 System.out.println("当前时间:" + date);

4 System.out.println("当前毫秒数:" + time);

这样就实现了转换

3、Java数学运算Math类

  Math类也是Java中做运算常用的类,在java.lang包中,这个系统会自动导入,这里简单的记录一下,常用的方法:

  直接看一个简单的实例:

1 public class MathAction {

2

3    public static void main(String[] args) {

4        double a = 12.86;

5        int b = (int) a;    //强制类型转换

6        System.out.println("强制类型转换:" + b);

7        long c = Math.round(a);    //四舍五入

8        System.out.println("四舍五入:" + c);

9        double d = Math.floor(a);    //返回小于参数a的最大整数

10        System.out.println("小于a的最大整数:" + d);

11        double e = Math.ceil(a);    //返回大于参数a的最小整数

12        System.out.println("大于a的最小整数:" + e);

13        double x = Math.random();    //产生[0,1)区间内的随机浮点数

14        System.out.println("默认随机数:" + x);

15        int y = (int) (Math.random()*99);    //产生[0,99)区间内的随机整数

16        System.out.println("0-99之间的随机整数(不包括99):" + y);

17

18    }

19

20 }

  很容易理解的例子,效果如下:

4Java File类

createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。

mkdir()  在指定位置创建一个单级文件夹。

mkdirs()  在指定位置创建一个多级文件夹。

renameTo(File dest)如果目标文件与源文件是在同一个路径下,那么renameTo的作用是重命名, 如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。

删除:

delete()  删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。

deleteOnExit()jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。

判断:

exists()  文件或文件夹是否存在。

isFile()  是否是一个文件,如果不存在,则始终为false。

isDirectory()  是否是一个目录,如果不存在,则始终为false。

isHidden()  是否是一个隐藏的文件或是否是隐藏的目录。

isAbsolute()  测试此抽象路径名是否为绝对路径名。

获取:

getName()  获取文件或文件夹的名称,不包含上级路径。

getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系

length()  获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。

getParent()  返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。

lastModified()获取最后一次被修改的时间。

文件夹相关:

static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)

list()  返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。

listFiles()  返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。

list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

listFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。


   publicclass FileMethod {

    publicstaticvoidmain(String[] args)throws IOException {

        //创建方法/*        @SuppressWarnings("unused")

        File file = new File("F:\\a.txt");

        //System.out.println("创建成功了吗?"+file.createNewFile());

        //System.out.println("单级文件夹创建成功了吗?"+file.mkdir());

        //System.out.println("多级文件夹创建成功了吗?"+file.mkdirs());

        //File dest = new File("F:\\电影\\c.txt");

        //System.out.println("重命名成功了吗?"+file.renameTo(dest));*//*      //删除方法

        File file = new File("F:\\电影");

        System.out.println("删除成功了吗?"+file.delete());

        file.deleteOnExit();*///判断方法/*        File file = new File("F:\\a.txt");

        System.out.println("文件或者文件夹存在吗?"+file.exists());

        System.out.println("是一个文件吗?"+file.isFile());

        System.out.println("是一个文件夹吗?"+file.isDirectory());

        System.out.println("是隐藏文件吗?"+file.isHidden());

        System.out.println("此路径是绝对路径名?"+file.isAbsolute());*///获取方法/*        File file = new File("f:\\a.txt");

        System.out.println("文件或者文件夹得名称是:"+file.getName());

        System.out.println("绝对路径是:"+file.getPath());

        System.out.println("绝对路径是:"+file.getAbsolutePath());

        System.out.println("文件大小是(以字节为单位):"+file.length());

        System.out.println("父路径是"+file.getParent());

        //使用日期类与日期格式化类进行获取规定的时间

        long  lastmodified= file.lastModified();

        Date data = new Date(lastmodified);

        SimpleDateFormat simpledataformat = new SimpleDateFormat("YY年MM月DD日 HH:mm:ss");

        System.out.println("最后一次修改的时间是:"+simpledataformat.format(data));*///文件或者文件夹的方法        File[] file = File.listRoots();

        System.out.println("所有的盘符是:");

        for(File item : file){

            System.out.println("\t"+item);

        }

        File filename =newFile("F:\\Java workspace\\Java");

        String[] name = filename.list();

        System.out.println("指定文件夹下的文件或者文件夹有:");

        for(String item : name){

            System.out.println("\t"+item);

        }

        File[] f = filename.listFiles();

        System.out.println("获得该路径下的文件或文件夹是:");

        for(File item : f){

            System.out.println("\t"+item.getName());            }        }}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • foochane :https://foochane.cn/article/2019122001.html API...
    foochane阅读 1,696评论 0 1
  • 麦穗技术屌丝程序员的自我对白 干货来啦!JAVA常用代码目录 技术文章2016年6月22日1.获取环境变量 Sys...
    苗超阅读 1,201评论 0 3
  • 主要积累一些开发中比较 常用的工具类,部分借鉴于网络,主要来源于平时开发因需求而生的小工具类 13、ArithUt...
    大鸭梨leepear阅读 700评论 0 1
  • 1 2 命名规则 标识符起名:不能以数字开头,不能是java的关键字,区分大小写 标识符组成规则:英文大小写,数字...
    西瓜菠萝8800阅读 245评论 0 0
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 2,454评论 1 31