java学习笔记(二十)java常用类

一:基本数据类型包装类

为了方便基本类型的数据做更多的操作,java就针对每种基本类型的数据给出了对应的类类型。这就是我们说的基本类型的包装类。

     基本类型       类类型
      byte          Byte
      short         Short
      int           Integer
      long          Long
      float         Float
      double        Double
      char          Character
      boolean       Boolean

而我们比较常用的就是其中的Integer类和Character类。接下来我就重点介绍这两个类。
Integer类中有两个常用的成员变量

    最大值:MAX_VALUE
    最小值:MIN_VALUE

这两个成员变量用来确定一个int类型数据的数据范围
比如说我有如下需求
需求:我有一个数据,请问如何判断是否是int范围内的呢?
那么我们就可以利用这两个成员变量来进行判断

public class IntegerDemo {
    public static void main(String[] args) {
        //判断下面定义的值是否在int数据类型的范围内
        int i = 100000000;
        //输出int类型的最大值和最小值的范围
        System.out.println(Integer.MAX_VALUE);//2147483647
        System.out.println(Integer.MIN_VALUE);//-2147483648

        //使用if语句进行判断
        if (i>=Integer.MIN_VALUE&&i<=Integer.MAX_VALUE) {
            System.out.println("该数值在int的范围内");
        }   
    }

该类还有两个常用的构造方法

Integer(int value) 
Integer(String s) 
注意:这里的字符串必须是由数字组成的字符串

用来构造Integer类对象

还有一些比较好用的成员方法,这些方法都是静态的,所以我们使用的时候就可以用类名.方法名来调用它们

转换为二进制:toBinaryString(int i)
转换为八进制:toOctalString(int i) 
转换为十六进制:toHexString(int i) 

需求:我有一个数据,我要得到该数据的二进制,八进制,十六进制如何实现呢?

public class IntegerDemo2 {
    public static void main(String[] args) {
        //求出该数据的二进制,八进制,十六进制
        int i = 100;

        //调用Integer里面以为我们提供的方法将上面的数据直接转换为该十进制对应的二进制
        //public static String toBinaryString(int i)
        //以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
        String i2 = Integer.toBinaryString(i);
        System.out.println(i2);

        System.out.println("---------------");
        //转换成8进制
        //public static String toOctalString(int i)
        //以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 
        String i8 = Integer.toOctalString(i);
        System.out.println(i8);

        System.out.println("-----------------");
        //转换成16进制
        //public static String toHexString(int i)
        //以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。 
        String i16 = Integer.toHexString(i);
        System.out.println(i16);
    }
}

JDK5的新特性:
自动装箱:基本类型 – 包装类类型
Integer.valueOf(100)
自动拆箱:包装类类型 – 基本类型
i.intValue()

好了,Integer类就简单的介绍完了,下面来给大家介绍Character类
Character常用的构造函数只用一个

public Character(char value)

这里就不过多介绍了
但是它的成员方法我们就用的比较多了

 public static boolean isUpperCase(char ch) 判断是否是大写字符
 public static boolean isLowerCase(char ch) 判断是否是小写字符
 public static boolean isDigit(char ch) 判断是否是数字
 public static char toUpperCase(char ch) 转成大写
 public static char toLowerCase(char ch) 转成小写

上面这些成员方法就是我们经常用到的
我们可以通过一些代码来说明这些方法的用法:

public class CharaterDemo {
    public static void main(String[] args) {
        //构造方法:public Character(char value)
        char c = 'a';
        Character ch = new Character(c);
        System.out.println(ch);

        System.out.println("-------------------");
        // public static boolean isUpperCase(char ch) 判断是否是大写字符
        System.out.println(Character.isUpperCase('a'));
        System.out.println(Character.isUpperCase('A'));
        System.out.println(Character.isUpperCase('0'));

        System.out.println("-------------------");
        //  public static boolean isLowerCase(char ch) 判断是否是小写字符
        System.out.println(Character.isLowerCase('a'));
        System.out.println(Character.isLowerCase('A'));
        System.out.println(Character.isLowerCase('0'));

        System.out.println("-------------------");
        //  public static boolean isDigit(char ch) 判断是否是数字
        System.out.println(Character.isDigit('a'));
        System.out.println(Character.isDigit('A'));
        System.out.println(Character.isDigit('0'));

        System.out.println("-------------------");
        // public static char toUpperCase(char ch) 转成大写
        System.out.println(Character.toUpperCase('a'));
        System.out.println(Character.toUpperCase('A'));

        System.out.println("-------------------");
        // public static char toLowerCase(char ch) 转成小写
        System.out.println(Character.toLowerCase('a'));
        System.out.println(Character.toLowerCase('A')); 

    }

}

二.Math:用于执行数学运算的类。

Math类在数学运算中我们用的比较多,下面是一些它的成员方法

  public static int abs(int a)绝对值
  public static double ceil(double a)向上取整
  public static double floor(double a)向下取整
  public static int max(int a,int b) 求最大值
  public static double pow(double a,double b)  a的b次方
  public static double random()产生0-1之间的随机数,不包括一
  public static int round(float a) 参数为double的自学
  我们可以用Math类的一些方法做一个猜数字的小游戏
public class GuessNumber {
    public static void main(String[] args) {
        /**
         * 猜数字小游戏分析:
         * 1.生成随机数
         * 2.获取键盘录入数据
         * 3.while死循环进行判断,并给予提示
         * 4.如果判断成功则跳出死循环
         */
        //1.生成随机数
        int ran = (int) (Math.random()*100+1);
        //创建键盘录入对象,并获取键盘录入数据
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你猜测得数字");
            int guessNumber = sc.nextInt();
            //进行判断并给予提示
            if (ran>guessNumber) {
                System.out.println("小了");
            }

            if (ran<guessNumber) {
                System.out.println("大了");
            }

            if (ran==guessNumber) {
                System.out.println("答对了");
                break;
            }

        }

    }

}

猜数字

三.Object:是所有类的根类。所有的类都直接或者间接的继承自该类

它里面有两个比较重要的成员方法:

toString()
equals():

需求:创建学生对象打印学生对象的地址值

class Student{
    private String name;
    private int age;
    public Student(){}
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }


}
/**
 *       创建学生对象打印学生对象的地址值(本质上是将地址通过哈希算法算出的哈希值)
           同一个对象的哈希值肯定是一样的。
           哈希值相同的对象的地址值未必一样。
          新华字典,zhu -- 456(哈希值)  -- 猪(第三个),朱(第5个),珠(第9个)
 *      
 *      
 *      toString():
 *      因为打印的对象时候打印的是对象的哈希吗值
 *      ,这个对于我们来说,没有意义,我们需要看到的是对象内部的成员变量值。。
 *      这个时候我们就需要重写toString()方法,自动生成即可
 *      
 *      equals():
 *      默认比较的是地址值,但是==已经可以比较对象的地址值,这个方法如果默认比较对象的地址值对我们来数意义也不大。
 *      所以我们需要重写一下,equals()方法,可以用来比较对象的成员变量是否相同
 *      
 *      

 */

public class StudentDemo {
    public static void main(String[] args) {
        Student s = new Student("刘德华",20);
        System.out.println(s);//com.edu.object.Student@69123787,其实是对象的哈希吗值

    }

}

==和equals()的区别?

A:==的作用
    a:基本类型  数据值
    b:引用类型  地址值
B:equals()
    只能比较引用类型。默认比较地址值。
    如果重写后,是按照重写后的规则进行的。

四.Scanner:帮助我们从键盘获取数据。

Scanner:帮助我们从键盘获取数据。
构造方法:
Scanner(InputStream source)

    Scanner sc = new Scanner(System.in);

    System.in   in是System类下面的一个静态的成员变量。

成员方法:

    int nextInt():获取int类型的数据
    String nextLine():获取String类型的数据

当为同一个Scanner对象,数据的输入顺序问题:
String,String
String,int
int,int
int,String
出现的问题:
先int再String就出现了问题。
解决:

    A:我把所有的数据都按照String来拿。
        String s1
        String s2
        String s3
        将来你要什么,我就把String的数据转换为什么类型。
    B:重新创建一个新的对象。

五. Random:用于产生随机数的类。和种子相关(种子其实可以把它看成一个产生随机数的定义的规则)。

构造方法:

    Random():没有指定种子,采用的是默认种子。
    Random(long seed):可以指定种子。种子相同,产生的随机数就相同。

成员方法:

    public int nextInt():返回int范围内的数据
    public int nextInt(int n):返回[0,n)之间的数据

需求:利用有无种子的方式创建对象,使用for循环产生十个随机数

public class RandomDemo {
    public static void main(String[] args) {
        //无种子创建随机数产生对象
        //Random r = new Random();

        //有种子创建random对象,同一个种子产生的随机数是相同的
        Random r = new Random(17);

        //如何产生1-100之间的随机数
        //r.nextInt(100)+1;

        //使用for循环产生十个随机数
        for (int i = 0; i <10; i++) {
            System.out.println(r.nextInt(100)+1);
        }

    }

}

这里写图片描述

六.System: System 类包含一些有用的类字段和方法。它不能被实例化。

成员方法:

      public static void exit(int status):终止当前正在运行的 Java 虚拟机。根据惯例,非 0 的状态码表示异常终止。 
      public static long currentTimeMillis():获取当前时间的毫秒值。
      public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):复制数组
      参数一:要复制的源数组
      参数二:从源数组那个索引开始复制
      参数三:需要复制到哪个数组中
      参数四:从哪个索引开始进行覆盖
      参数五:需要覆盖几个元素
public class SystemDemo {
    public static void main(String[] args) {
        //public static void exit(int status):终止当前正在运行的 Java 虚拟机。根据惯例,非 0 的状态码表示异常终止。
        System.out.println("hello");
        //System.exit(100);//异常终止java虚拟机
        //System.exit(0);//正常终止虚拟机
        System.out.println("world");

        System.out.println("----------------------------------");
        //public static long currentTimeMillis():获取当前时间的毫秒值。
        //主要用在测试程序的执行时间
        //获取循环执行前的时间
        /*
        long start = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            System.out.println(i);
        }
        //结束时间
        long end = System.currentTimeMillis();

        //程序执行使用时间
        long time = end - start;
        System.out.println("使用"+time+"毫秒");
        */
        System.out.println("----------------------------------");
        // public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):复制数组
        /**
         * 参数一:要复制的源数组
         * 参数二:从源数组那个索引开始复制
         * 参数三:需要复制到哪个数组中
         * 参数四:从哪个索引开始进行覆盖
         * 参数五:需要覆盖几个元素
         */
        //复制一个数组
        int[] arr = {1,2,3,4,5};
        int[] arr2 = {6,7,8,9,10};

        System.arraycopy(arr, 1, arr2, 2, 2);
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));

    }

}

七.Date:类 Date 表示特定的瞬间,精确到毫秒。

构造方法:

    Date():默认获取的是当前的日期时间
    Date(long date):把当前日期按照指定的毫秒值进行设定

成员方法:

    public long getTime():获取日期对象的毫秒值
    public void setTime(long time):设置日期对象的毫秒值
public class DateDemo {
    public static void main(String[] args) {
        //Date():默认获取的是当前的日期时间
        Date d = new Date();
        System.out.println(d);//Fri Jan 06 16:39:45 CST 2017

        //Date(long date):把当前日期按照指定的毫秒值进行设定
        //public long getTime():获取日期对象的毫秒值
        System.out.println(d.getTime());
        System.out.println(System.currentTimeMillis());//这两种方式获取当前事件毫秒值,效果是等价的

        System.out.println("--------------------------");
        Date d2 = new Date(d.getTime());
        //将第一个创建的日期对象的毫秒值赋值给这个日期对象的构造方法,
        //其实创建的就是上个日期对应的日期对象,因为两次的毫秒值相同
        System.out.println(d2);

        System.out.println("--------------------------");
        Date d3 = new Date();
        //给日期对象重新赋值之前获取的时间毫秒值
        d3.setTime(d.getTime());
        System.out.println(d3);

    }
}

这里写图片描述

八.DateFormat(格式化和解析日期对象)

格式化:
Date – String
2015年9月27日 15:14:23

    String format(Date d)

解析:
String – Date
“2015-12-12”

    Date  parse(String s)

构造:

 SimpleDateFormat()用默认的模式格式化日期对象
 SimpleDateFormat(String pattern):用给定的模式格式化日期对象

例如:
yyyy年MM月dd日 HH:mm:ss
yyyy-MM-dd HH:mm:ss

成员方法:

 public final String format(Date date)将一个 Date 格式化为日期/时间字符串
public class DateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();
        System.out.println(d);//Fri Jan 06 17:02:07 CST 2017

        System.out.println("----------------------");
        //使用simpleDateFormat进行格式化
        //默认的格式进行格式化
        SimpleDateFormat sdf = new SimpleDateFormat();
        String dStr = sdf.format(d);
        System.out.println(dStr);

        //默认的格式似乎还无法满足我们的需求
        //我们需要自定义格式(查看定义的时间字段)
        // SimpleDateFormat(String pattern):用给定的模式格式化日期对象
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String d2Str = sdf2.format(d);
        System.out.println(d2Str);

        System.out.println("--------------------------------");
        //解析日期,将一个日期字符串解析成一个日期对象
        String dateStr = "2017-01-06 17:08:54";
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //注意创建这个对象的参数格式一定要和解析的字符串的格式相匹配
        Date date = sdf3.parse(dateStr);
        System.out.println(date);

    }

}

这里写图片描述

九.Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法

Calendar(日历类) – 获取年,获取月,获取日,获取时,获取分,获取秒。
成员方法:

  public int get(int field):返回给定日历字段的值
  public void add(int field,int amount):根据amount修改field的值
  public void set(int year,int month,int date):设置当前日历的年月日

需求:获取当前时间的5年后的3个月前的7天后。

public class CalenderDemo2 {
    public static void main(String[] args) {
        //创建日历对象
        //需求:获取当前时间的5年后的3个月前的7天后。
        Calendar c = Calendar.getInstance();
//      c.add(Calendar.YEAR, 5);
//      c.add(Calendar.MONTH, -3);
//      c.add(Calendar.DATE, 7);

        //public void set(int year,int month,int date):设置当前日历的年月日
        c.set(2011, 2, 2);

        //获取年份
        System.out.println(c.get(Calendar.YEAR));

        //获取月份
        System.out.println(c.get(Calendar.MONTH)+1);

        //获取日期
        System.out.println(c.get(Calendar.DATE));
    }

}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值