API的相关类

来源:互联网 发布:软件自学网站大全 编辑:程序博客网 时间:2024/05/22 05:00

有关API的讲解
为了方便基本类型的数据做更多的操作,java针对每种基本类型的数据给出了对应的类类型。这就是我们说的基本类型的包装类。
下图表示了基本类型的包装类:
这里写图片描述
重点介绍一下Integer这个类,作如下需求:
有一个数据,我要得到该数据的二进制,八进制,十六进制如何实现呢?

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);        //转换成8进制        //public static String toOctalString(int i)        //以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。         String i8 = Integer.toOctalString(i);        System.out.println(i8);        //转换成16进制        //public static String toHexString(int i)        //以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。         String i16 = Integer.toHexString(i);        System.out.println(i16);    }}

运行结果为:
1100100
144
64
构造方法:
Integer(int value)
Integer(String s)
注意:这里的字符串必须是由数字组成的字符串
int和String类型的相互转换:
int – String
方式1:
String s = 100 +”“;
方式2:
String.valueOf(int)
方式3:
Integer.toString(100);
String – int
方式1:
Integer.parseInt(String)
相关代码如下:

public class IntergerStu3 {    public static void main(String[] args) {        int i=7384;        //int   --  String        //方式1:        //String s = 100 +"";        String s=i+"";        System.out.println(s);        /*方式2:        String.valueOf(int)*/        System.out.println(String.valueOf(i));        /*方式3:        Integer.toString(100);*/        System.out.println(Integer.toString(i));        /*String -- int        方式1:        Integer.parseInt(String)*/        String s2="352635";        System.out.println(Integer.parseInt(s2));    }}

运行结果为:
7384
7384
7384
352635
对于现在所使用的java版本的新特性:
自动装箱:基本类型 – 包装类类型
Integer.valueOf(100)
自动拆箱:包装类类型 – 基本类型
i.intValue()
Character类的讲解
Character:Character 类在对象中包装一个基本类型 char 的值
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
构造方法:
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 CharacterStu2 {    public static void main(String[] args) {        //public static boolean isUpperCase(char ch) 判断是否是大写字符        System.out.println(Character.isUpperCase('a'));//false        //public static boolean isLowerCase(char ch) 判断是否是小写字符        System.out.println(Character.isLowerCase('s'));//true        //public static boolean isDigit(char ch) 判断是否是数字        System.out.println(Character.isDigit('4'));//true        //public static char toUpperCase(char ch) 转成大写                System.out.println(Character.toUpperCase('s'));//S        //public static char toLowerCase(char ch) 转成小写    System.out.println(Character.toLowerCase('Y'));//y    }}

需求:键盘录入一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。

public class CharacterStu1 {    public static void main(String[] args) {        Scanner sc=new Scanner(System.in);        System.out.println("请输入字符串:");        String s=sc.next();        char[] arr=s.toCharArray();        int upp=0;        int low=0;        int di=0;        for(int i=0;i<arr.length;i++){            if(Character.isUpperCase(arr[i])){                upp+=1;            }else if(Character.isLowerCase(arr[i])){                                low+=1;            }else if(Character.isDigit(arr[i])){                                 di+=1;            }        }        System.out.println(upp);        System.out.println(low);        System.out.println(di);    }}

编译运行后结果为:
HDGWEdwyewu3463748
5
6
7
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) min自学
public static double pow(double a,double b) a的b次方
public static double random()
public static int round(float a) 参数为double的自学
在这里可以做一个简单的需求:猜数字小游戏

public class MathStu1 {    public static void main(String[] args) {        /*         * 1.创建键盘录入数据         * 2.创建一个随机数         * 3.获取键盘录入数据         * 4.进行循环判断         */        Scanner sc=new Scanner(System.in);        int random=(int) (Math.random()*100+1);        System.out.println("请输入你猜的数字:");            while(true){            int i=sc.nextInt();            if(i<=100&i>=1){               if(random>i){                   System.out.println("猜小了,请重新输入:");                }else if(random<i){                    System.out.println("猜大了,请重新输入:");                   }else if(random==i){                   System.out.println("恭喜你猜对了!!!");                   break;                 }            }            else{        System.out.println("你的输入有误,请重新输入:");            }        }    }}

编译运行后结果如下:
请输入你猜的数字:
56
猜大了,请重新输入:
35
猜小了,请重新输入:
45
猜小了,请重新输入:
50
猜大了,请重新输入:
48
恭喜你猜对了!!!
Object:是所有类的根类
所有的类都直接或者间接的继承自该类
重写toString()方法
默认情况下,打印的是对象的字符串表示,意义不大。
包名…类名+@+该对象的哈希值的十六进制
所以建议,所有子类重写该方法。
至于如何重写,自动生成即可。
表示该对象的数据:
[类名 成员变量1=数据值1,成员变量2=数据值2,…]
equals():
默认情况下,比较的是地址值。没有意义。
所以,建议子类重写该方法。
至于如何重写,你就不要问了,自动生成即可。
这个生成的方法作用是比较对象的成员变量值是否相同。
==和equals()的区别?
A:==的作用
a:基本类型 数据值
b:引用类型 地址值
B:equals()
只能比较引用类型。默认比较地址值。
如果重写后,是按照重写后的规则进行的。
* Scanner:帮助我们从键盘获取数据。*
构造方法:
Scanner(InputStream source)
Scanner sc = new Scanner(System.in);
System.in in是System类下面的一个静态的成员变量。
成员方法:
int nextInt():获取int类型的数据
String nextLine():获取String类型的数据
InputMismatchException:输入的数据和最终的结果类型不匹配。
建议:要什么类型,你就输入什么类型。反正将来也不用。
当为同一个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)之间的数据
得到1-100之间的随机数:
new Random().nextInt(100) + 1

public class RandomStu2 {    public static void main(String[] args) {        Random r=new Random(20);        for(int i=0;i<100;i++){            System.out.println(r.nextInt());        }       }}

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):复制数组
参数一:要复制的源数组
参数二:从源数组那个索引开始复制
参数三:需要复制到哪个数组中
参数四:从哪个索引开始进行覆盖
参数五:需要覆盖几个元素
Date
Date:类 Date 表示特定的瞬间,精确到毫秒。
构造方法:
Date():默认获取的是当前的日期时间
Date(long date):把当前日期按照指定的毫秒值进行设定
成员方法:
public long getTime():获取日期对象的毫秒值
public void setTime(long time):设置日期对象的毫秒值
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):用给定的模式格式化日期对象
成员方法:
public final String format(Date date)将一个 Date 格式化为日期/时间字符串
public Date parse(String source)throws ParseException从给定字符串的开始解析文本,以生成一个日期对象
做一个需求:日期工具类DateUtils
1.让外界无法创建这个类的对象
2.设置的方法直接可以通过类名调用
3.可以获取 yy年MM月dd日
4.可以获取 HH:mm:ss
5.可以获取 yy-MM-dd HH:mm:ss

public class DateUtils {    private DateUtils(){}    public static String getDate(){        Date d=new Date();        SimpleDateFormat sdf=new SimpleDateFormat("yy年MM月dd日");        String str=sdf.format(d);        return str;    }    public static String getTime(){        Date d=new Date();        SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");        String str=sdf.format(d);        return str;    }    public static String getTimeData(){        Date d=new Date();        SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss");        String str=sdf.format(d);        return str;    }}//测试public class DataUtilsTest {    public static void main(String[] args) {        System.out.println(DateUtils.getDate());        System.out.println(DateUtils.getTime());        System.out.println(DateUtils.getTimeData());    }}

运行结果:
17年04月26日
13:08:04
17-04-26 13:08:04
* Calendar*
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法
Calendar(日历类) – 获取年,获取月,获取日,获取时,获取分,获取秒。
public int get(int field):返回给定日历字段的值
需求:键盘录入年份,获取任意一年的二月有多少天

public class CalendarStu1 {    public static void main(String[] args) {        Scanner sc=new Scanner(System.in);        System.out.println("请输入年份:");        int year=sc.nextInt();        Calendar d=Calendar.getInstance();        //设置指定日期        d.set(year, 2, 1);        //将指定日期减一天,得到二月的最后一天        d.add(Calendar.DATE, -1);        //get得到该日期的天数        System.out.println("该年的二月有"+d.get(Calendar.DATE)+"天");          }}

结果如下:
请输入年份:
2018
该年的二月有28天
正则表达式:
正则表达式:符合一定规则的字符串
规则字符在java.util.regex Pattern类中
A:字符
x 字符x(举例:a,1)
\ 反斜线字符
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[0-9] 0-9字符
C:预定义字符类
. 任何字符
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
D:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
判断功能:
public boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
分割功能
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
替换功能
public String replaceAll(String regex,String replacement):把符合regex的用replacement替换
需求:我有如下一个字符串:”91 27 46 38 50”
请写代码实现最终输出结果是:”27 38 46 50 91”

public class RegexStu1 {    public static void main(String[] args) {        String s="91 27 46 38 50";        String reg=" ";        String[] str=s.split(reg);        int[] arr=new int[str.length];        for(int i=0;i<str.length;i++){            arr[i]=Integer.parseInt(str[i]);        }          Arrays.sort(arr);        StringBuffer sb=new StringBuffer();        for(int j=0;j<arr.length;j++){            sb.append(arr[j]+" ");        }        System.out.println(sb.toString());    }}

结果为:
27 38 46 50 91

0 0
原创粉丝点击