2017.4.26API中的一些类

来源:互联网 发布:jenkins linux slave 编辑:程序博客网 时间:2024/06/03 18:06
常用API讲解
一:基本数据类型包装类
1.1
如何完成以下需求:
  需求1:我有一个数据,请问如何判断是否是int范围内的呢?
     int范围 -2^31 ~ 2^31-1
public class IntegerDemo {
 public static void main(String[] args) {
  /*
   字段:
   最大值:MAX_VALUE
   最小值:MIN_VALUE
   */
  System.out.println(Integer.MAX_VALUE);
  System.out.println(Integer.MIN_VALUE);
  /**
   *   需求1:我有一个数据,请问如何判断是否是int范围内的呢?
      int范围 -2^31 ~ 2^31-1
   */
  int num = 100000000;
  if (num>Integer.MIN_VALUE&&num<Integer.MAX_VALUE) {
   System.out.println("数据在int范围内");
  }
  
 }

}

  需求2:我有一个数据,我要得到该数据的二进制,八进制,十六进制如何实现呢?
     按照以前讲过规律进行计算,但是比较麻烦。
public class IntegerDemo3 {
 public static void main(String[] args) {
  /**
   * 各种成员方法:
   转换为二进制:toBinaryString(int i)
   转换为八进制:toOctalString(int i)
   转换为十六进制:toHexString(int i)
   */
  System.out.println(Integer.toBinaryString(100));
  System.out.println(Integer.toOctalString(100));
  System.out.println(Integer.toHexString(100));
  
 }

}
  为了方便基本类型的数据做更多的操作,java就针对每种基本类型的数据给出了对应的类类型。
  这就是我们说的基本类型的包装类。
  基本类型  类类型
  byte   Byte
  short      Short
  int   Integer
  long   Long
  float      Float
  double  Double
  char   Character
  boolean  Boolean
 
1.2 学习Integer类型(查看api进行学习)
可以完成以上需求的所要用到的方法:

1.2.1
字段:
最大值:MAX_VALUE
最小值:MIN_VALUE

1.2.2
构造方法:
   Integer(int value)
  Integer(String s)
    注意:这里的字符串必须是由数字组成的字符串
public class IntegerDemo2 {
 public static void main(String[] args) {
  /**
   * 1.2.2
   构造方法:
    Integer(int value)
   Integer(String s)
    注意:这里的字符串必须是由数字组成的字符串
   */
  Integer i = new Integer(100);
  System.out.println(i);
  
  System.out.println("---------------");
  //java.lang.NumberFormatException,当字符串给成非数字的字符串的时候会报如下异常
  Integer i2 = new Integer("abc");
  System.out.println(i2);
 
 }

}

1.2.3
各种成员方法:
转换为二进制:toBinaryString(int i)
转换为八进制:toOctalString(int i)
转换为十六进制:toHexString(int i)

1.2.4
  int和String类型的相互转换:
 
  int -- String
 方式1:
 String s = 100 +"";
 方式2:
   String.valueOf(int)
 方式3:
 Integer.toString(100);
 
  String -- int
 方式1:
   Integer.parseInt(String)
 public class IntegerDemo4 {
 public static void main(String[] args) {
  /**
   * 1.2.4
    int和String类型的相互转换:
    int -- String
   方式1:
   String s = 100 +"";
   方式2:
     String.valueOf(int)
   方式3:
   Integer.toString(100);
   
    String -- int
   方式1:
     Integer.parseInt(String)
     方式2:
     Integer i  = new Integer(100);
     int ii = i.intValue();
   */
  // int -- String
  //方式1:
  int i  = 100;
  String s = i+"";
  System.out.println("-------------");
  //方式2:
  String s2 = String.valueOf(i);
  System.out.println(s2);
  System.out.println("----------------");
  //方式3:
  String s3 = Integer.toString(100);
  System.out.println(s3);
  System.out.println("========================");
  //String -- int
  String ss = "100";
  int ii = Integer.parseInt(ss);
  System.out.println(ii);
  System.out.println("--------------------------");
  Integer integer = new Integer(ss);
  int intValue = integer.intValue();
  System.out.println(intValue);
  
 }

}
1.2.5
   JDK5的新特性:
    自动装箱:基本类型 -- 包装类类型
     Integer.valueOf(100)
    自动拆箱:包装类类型 -- 基本类型
     i.intValue()
 
public class IntegerDemo5 {
 public static void main(String[] args) {
  
//  自动装箱:基本类型 -- 包装类类型
  //我们之前创建Integer对象全部是new出来的
  //Integer i = new Integer(100);
  Integer i = 100;//jdk5之后会进行一个装箱操作,就是直接将你的int数值自动封装成Integer对象
  
  i+=200;
  /**
   * 理论上我们只有当两种数据类型一致的时候才能进行运算
   * ,此时一个数据类型是int,一个是Integer,这两个数据进行
   * 相加的时候,Integer类型的数据会自动转变成int类型的数据,
   * 这就叫拆箱
   */
  System.out.println(i);
 }

}

---------------------------------------------------------------------------------------------------------------------------
2:Character类的讲解
2.1
  Character:Character 类在对象中包装一个基本类型 char 的值
  此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
  构造方法:
    public Character(char value)
public class CharaterDemo {
 public static void main(String[] args) {
  /**
   *   Character:Character 类在对象中包装一个基本类型 char 的值
    此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
    构造方法:
     public Character(char value)
   */
  Character c = new Character('a');
  System.out.println(c);
  
  
 }

}

2.2
 成员方法
 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) 转成小写
 
2.3
  需求:键盘录入一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
  请把以前的代码复制过来,修改成功即可。
 public class CharaterDemo3 {
 public static void main(String[] args) {
  
  Scanner sc = new Scanner(System.in);
  String s = sc.nextLine();
  //判断里面的大小写字母和数字
  int bigCount = 0;
  int smallCount = 0;
  int numCount = 0;
  //将字符串转换成字符数组
  char[] chs = s.toCharArray();
  for (int i = 0; i < chs.length; i++) {
   if (Character.isUpperCase(chs[i])) {
    bigCount++;
   }else if (Character.isLowerCase(chs[i])) {
    smallCount++;
   }else if (Character.isDigit(chs[i])) {
    numCount++;
   }
   
  }
  
  System.out.println("大写字符:"+bigCount);
  System.out.println("小写字符:"+smallCount);
  System.out.println("数写字符:"+numCount);
  
 }

}

----------------------------------------------------------------------------------------------------------------------------
3. Math:用于执行数学运算的类。
  3.1
  成员方法:
  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) min自学//求俩个数的最大值
  public static double pow(double a,double b)  a的b次方
  public static double random()//随机产生大于0小于1的数字
   要产生1到100之间的随机数   int i = (int)(random*100+1);
  public static int round(float a) 参数为double的自学
     四舍五入;

  3.2
  案例:猜数字小游戏

  import java.util.Scanner;

public class MathDemo2 {
 public static void main(String[] args) {
  //案例:猜数字小游戏 (1-100的随机数)
  //随机生成一个随机数
  int random = (int) (Math.random()*100+1);
  //System.out.println(random);
  
  Scanner sc = new Scanner(System.in);
  while (true) {
   System.out.println("请输入你猜测的数字");
   int guessNum = sc.nextInt();
   if (guessNum<random) {
    //猜的小了
    System.out.println("小了");
   }else if (guessNum>random) {
    System.out.println("大了");
   }else if (guessNum==random) {
    System.out.println("答对了");
    break;
   }
  }
 }

}

----------------------------------------------------------------------------------------------------------------------------
  4.Object:是所有类的根类。所有的类都直接或者间接的继承自该类
   4.1
   创建学生对象打印学生对象的地址值(本质上是将地址通过哈希算法算出的哈希值)
   同一个对象的哈希值肯定是一样的。
   哈希值相同的对象的地址值未必一样。
    新华字典,zhu -- 456(哈希值)  -- 猪(第三个),朱(第5个),珠(第9个)
 
   4.2
   为什么重写toString()方法
   默认情况下,打印的是对象的字符串表示,意义不大。
   包名...类名+@+该对象的哈希值的十六进制
   所以,我们建议,所有子类重写该方法。
   至于如何重写,你就不要问了,自动生成即可。
   表示该对象的数据:
   [类名 成员变量1=数据值1,成员变量2=数据值2,...]
  
   4.3
 equals():
 默认情况下,比较的是地址值。没有意义。
 所以,建议子类重写该方法。
 至于如何重写,你就不要问了,自动生成即可。
  这个生成的方法作用是比较对象的成员变量值是否相同。
 
   4.4
    面试题:
 ==和equals()的区别?
 A:==的作用
  a:基本类型 数据值
  b:引用类型 地址值
 B: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()方法,自动生成即可
           自动生成toString方法的快捷键:shift+alt+s   选择Generate toString
 *     
 *      equals():
 *      默认比较的是地址值,但是==已经可以比较对象的地址值,这个方法如果默认比较对象的地址值对我们来数意义也不大。
 *      所以我们需要重写一下,equals()方法,可以用来比较对象的成员变量是否相同
 *     
 *      自动生成equals的方法;shift+alt+s   选择hashcode()and equals()
 *    

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

}
-------------------------------------------------------------------------------------------------------------------------------
  5.
  5.1
  Scanner:帮助我们从键盘获取数据。
  构造方法:
    Scanner(InputStream source)
    
    Scanner sc = new Scanner(System.in);
 
    System.in in是System类下面的一个静态的成员变量。
    现在我们并不知道in这个成员变量的数据类型。
  请看一下伪代码:
    Scanner {
     public Scanner(InputStream in){}
    }
 
    System {
     public static final InputStream in;
    }
    InputStream System.in
 
  成员方法:
    int nextInt():获取int类型的数据
    String nextLine():获取String类型的数据
 
  InputMismatchException:输入的数据和最终的结果类型不匹配。
  建议:要什么类型,你就输入什么类型。反正将来也不用。
 
  5.2
  当为同一个Scanner对象,数据的输入顺序问题:
  String,String
  String,int
  int,int
  int,String
 
  出现的问题:
    先int再String就出现了问题。
 
  解决:
    A:我把所有的数据都按照String来拿。
     String s1
     String s2
     String s3
    将来你要什么,我就把String的数据转换为什么类型。
    B:重新创建一个新的对象。
           将String类型转换为int 类型,调用Integer.parseInt(数字字符串);


-------------------------------------------------------------------------------------------------------------------------
6.
  Random:用于产生随机数的类。和种子相关(种子其实可以把它看成一个产生随机数的定义的规则)。
 
  构造方法:
    Random():没有指定种子,采用的是默认种子。
    Random(long seed):可以指定种子。种子相同,产生的随机数就相同。
 
  需求:利用有无种子的方式创建对象,使用for循环产生十个随机数
  成员方法:
    public int nextInt():返回int范围内的数据
    public int nextInt(int n):返回[0,n)之间的数据
 
  得到1-100之间的随机数:
    new Random().nextInt(100)+1;
 
import java.util.Random;

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);
  }
  
 }

}


-------------------------------------------------------------------------------------------------------------------------
 7.
  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):复制数组
  参数一:要复制的源数组
  参数二:从源数组那个索引开始复制
  参数三:需要复制到哪个数组中
  参数四:从哪个索引开始进行覆盖
  参数五:需要覆盖几个元素
import java.util.Arrays;
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));
  
 }

}






-------------------------------------------------------------------------------------------------------------------------
8.Date
  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);
  
 }
}

------------------------------------------------------------------------------------------------------------------------
9.DateFormat(格式化和解析日期对象)
9.1
  格式化:
    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
 import java.text.ParseException;

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);
  
 }

}


 成员方法:
 public final String format(Date date)将一个 Date 格式化为日期/时间字符串
 public Date parse(String source)throws ParseException从给定字符串的开始解析文本,以生成一个日期对象
 
 9.2
 日期工具类DateUtils
 需求:
  1.让外界无法创建这个类的对象
  2.设置的方法直接可以通过类名调用
  3.可以获取 yy年MM月dd日
  4.可以获取 HH:mm:ss
  5.可以获取 yy-MM-dd HH:mm:ss
 import java.text.SimpleDateFormat;

public abstract class DateUtils {

 // 可以获取 yy年MM月dd日
 public static String getDate() {
  Date d = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
  String dateStr = sdf.format(d);
  return dateStr;
 }

 // 可以获取 HH:mm:ss
 public static String getTime() {
  Date d = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  String dateStr = sdf.format(d);
  return dateStr;
 }

 // 获取 yy-MM-dd HH:mm:ss
 public static String getDateTime() {
  Date d = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String dateStr = sdf.format(d);
  return dateStr;
 }

}
public class DateUtilsTest {
 public static void main(String[] args) {
  System.out.println(DateUtils.getDate());
  System.out.println(DateUtils.getTime());
  System.out.println(DateUtils.getDateTime());
  
 }

}
 



 9.3
 案例:
 键盘录入出生日期,算一下你来到这个世界多少天?

import java.text.ParseException;
public class DateFormatTest {
 public static void main(String[] args) throws ParseException {
  //1.键盘录入年月日
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入你的出生日期:yyyy-MM-dd");
  
  //获取键盘录入数据
  String startDate = sc.nextLine();
  
  //2.将年月日封装成日期对象
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  Date startD = sdf.parse(startDate);
  
  //4.获取当前时间的毫秒值
  long nowTime = new Date().getTime();
  
  //5.算出差值
  long time = nowTime - startD.getTime();
  
  //算出天数
  long day  = time /1000/60/60/24;
  System.out.println("你已经来到世间"+day+"天了");
 }

}
0 0
原创粉丝点击