JAVA-常用类

1、包装类

在JAVA中,将基本类型数据封装在包装类中,这样便可以把基本数据类型转换为对象类型处理。
包装类详单于基本数据类型与对象类型之间的一个桥梁,这里有装箱和拆箱的概念,装箱就是将基本类型转换为包装类,而拆箱就是将包装类转换为基本数据类型。
JAVA中的包装类及其对应的基本数据类型如下表所示:

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

Integer类
我们可以使用valueOf方法创建一个Integer对象,也可以用new的方法来创建。

package CommonClass;

public class IntegerDemo {
    public static void main(String[] args){
        int num = Integer.parseInt("456");
        Integer iNum = Integer.valueOf("456");
        Integer iNum2 = new Integer("456");
        System.out.println("int数据与Integer数据的比较:" + iNum.equals(num));
    }
}

输出为:

int数据与Integer数据的比较:true

Double类
Double类的操作与Integer类基本相同。

package CommonClass;

public class DoubleDemo {
    public static void main(String[] args){
        Double dNum = new Double("3.14");
        double num = Double.parseDouble("3.14");
        Double dNum2 = Double.valueOf("3.14");
        System.out.println("double数据和Double数据比较:"+dNum.equals(num));
        System.out.println("整数部分为:"+dNum.intValue());
    }
}

输出为:

double数据和Double数据比较:true
整数部分为:3

Boolean类
Boolean类也提供了两种构造方法,当使用字符串时,只有当字符串不为null且忽略大小写时为true的情况下才为true,其他情况都是false。

package CommonClass;

public class BooleanDemo {
    public static void main(String[] args){
        Boolean b1 = new Boolean(true);
        Boolean b2 = new Boolean("ok");
        Boolean b3 = new Boolean("True");
        System.out.println("b1:" + b1.booleanValue());
        System.out.println("b2:" + b2.booleanValue());
        System.out.println("b3:" + b3.booleanValue());
    }
}

输出为

b1:true
b2:false
b3:true

Character类
Character类提供了很多方法,可以确定字符的类型,以及很方便的将字符转换大小写等方法

package CommonClass;

public class CharacterDemo {
    public static void main(String[] args){
        Character mychar1 = new Character('A');
        Character mychar2 = new Character('a');
        Character mychar3 = new Character('1');
        if(Character.isUpperCase(mychar1)){
            System.out.println("mychar1转换为小写字母为:" + Character.toLowerCase(mychar1));
        }
        if(Character.isLowerCase(mychar2)){
            System.out.println("mychar2转换为大写字母为:" + Character.toUpperCase(mychar2));
        }
        if(Character.isDigit(mychar3)){
            System.out.println("mychar3是为数字字符" );
        }
    }
}

输出为:

mychar1转换为小写字母为:a
mychar2转换为大写字母为:A
mychar3是为数字字符

2、Math类

Math 类包含常用的数学方法以及常用的数学常量。数学方法包括三角函数方法sin、cos、tan等,指数函数方法exp,log、log10、sqrt等、取整函数方法ceil、floor、round等遗迹最大值,最小值和绝对值函数方法。

package CommonClass;

public class MathDemo {
    public static void main(String[] args){
        System.out.println("90度的正弦值:" + Math.sin(Math.PI / 2));
        System.out.println("2的平方根与2商的反弦值:" + Math.asin(Math.sqrt(2)/2));
        System.out.println("e的平方值:"+ Math.exp(2));
        System.out.println("以e为底2的对数值:" + Math.log(2));
        System.out.println("以10为底2的对数值:" + Math.log10(2));
        System.out.println("2的平方根:" + Math.sqrt(2));
        System.out.println("2的平方:" + Math.pow(2,2));
        System.out.println("不小于3.5的最小整数" + Math.ceil(3.5));
        System.out.println("不大于3.5的最大整数:" + Math.floor(3.5));
        System.out.println("3.5最接近的整数为,同样接近取偶数:" + Math.rint(3.5));

    }
}

输出为:

90度的正弦值:1.0
2的平方根与2商的反弦值:0.7853981633974484
e的平方值:7.38905609893065
以e为底2的对数值:0.6931471805599453
以10为底2的对数值:0.3010299956639812
2的平方根:1.4142135623730951
2的平方:4.0
不小于3.5的最小整数4.0
不大于3.5的最大整数:3.0
3.5最接近的整数为,同样接近取偶数:4.0

3、随机数

Math.Random()方法
Math.Random()方法返回一个大于等于0,小于1的随机数。该方法返回的随机数实际上是伪随机数,它通过复杂的运算得到一系列的数,该方法是通过当前时间作为随机数生成器的参数,所以每次执行程序都会产生不同的随机数。

Random类
我们通过一个例子来了解Random类的使用:

package CommonClass;

import java.util.Random;
import java.util.Scanner;

public class RandomDemo {
    public static void main(String[] args){
        System.out.println("------模拟微信抢红包--------");
        Random r = new Random();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入红包金额:");
        double total = sc.nextDouble();
        System.out.println("请输入红包总数:");
        int bagsnum = sc.nextInt();
        double min = 0.01;

        for (int i = 1;i<bagsnum;i++){
            //后面每个至少有1分
            double max = total - (bagsnum-i) * min;
            double bound = max - min;
            double safe = (double)r.nextInt((int)(bound * 100))/100;
            double money = safe + min;
            total = total - money;
            System.out.println("第" + i + "个红包的金额是:" + String.format("%.2f",money));
        }
        System.out.println("第" + bagsnum + "个红包的金额是:" + String.format("%.2f",total));
    }
}

输出为:

------模拟微信抢红包--------
请输入红包金额:
10
请输入红包总数:
10
第1个红包的金额是:0.46
第2个红包的金额是:1.42
第3个红包的金额是:5.41
第4个红包的金额是:1.64
第5个红包的金额是:0.22
第6个红包的金额是:0.07
第7个红包的金额是:0.50
第8个红包的金额是:0.17
第9个红包的金额是:0.03
第10个红包的金额是:0.08

4、日期时间类

Date类
目前Date类只有两种构造方法,Date()和Date(long date),后一种方法需要传入一个毫秒数:

package CommonClass;

import java.util.Date;
public class DateDemo {
    public static void main(String[] args){
        Date d1 = new Date();
        long timeMillis = System.currentTimeMillis();
        Date d2 = new Date(timeMillis);
        long value = d2.getTime();
        System.out.println("日期" + d1);
        System.out.println("毫秒数" + value);
    }    
}

输出为:

日期Sat Jan 27 13:57:19 CST 2018
毫秒数1517032639754

DataFormat类
DateFormat 类是日期/时间格式化子类的抽象类,在java.text包中,一般使用的是SimpleDateFormat类:

package CommonClass;

import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Date;

public class DateFormatDemo {
    public static void main(String[] args) {
        DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
        DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = new Date();
        System.out.println("格式化输出日期1:" + df1.format(date));
        System.out.println("格式化输出日期2:" + df2.format(date));
    }
}

输出为:

格式化输出日期1:2018-01-27 02:03:16 星期六
格式化输出日期2:2018年01月27日

Calendar类
为了更加便捷的对日期进行操作,Calendar类对YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

package com.test.calendar;

import java.util.Calendar;

import org.junit.Before;
import org.junit.Test;

public class CalendarDemo {
    Calendar calendar = null;

    @Before
    public void test() {
        calendar = Calendar.getInstance();
    }

    // 基本用法,获取年月日时分秒星期
    @Test
    public void test1() {
        // 获取年
        int year = calendar.get(Calendar.YEAR);

        // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
        int month = calendar.get(Calendar.MONTH) + 1;

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        // 获取时
        int hour = calendar.get(Calendar.HOUR);
        // int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示

        // 获取分
        int minute = calendar.get(Calendar.MINUTE);

        // 获取秒
        int second = calendar.get(Calendar.SECOND);

        // 星期,英语国家星期从星期日开始计算
        int weekday = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour
                + "时" + minute + "分" + second + "秒" + "星期" + weekday);
    }

    // 一年后的今天
    @Test
    public void test2() {
        // 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.YEAR, 1);

        // 获取年
        int year = calendar.get(Calendar.YEAR);

        // 获取月
        int month = calendar.get(Calendar.MONTH) + 1;

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        System.out.println("一年后的今天:" + year + "年" + month + "月" + day + "日");
    }

    // 获取任意一个月的最后一天
    @Test
    public void test3() {
        // 假设求6月的最后一天
        int currentMonth = 6;
        // 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量
        // 1
        calendar.set(calendar.get(Calendar.YEAR), currentMonth, 1);

        calendar.add(Calendar.DATE, -1);

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        System.out.println("6月份的最后一天为" + day + "号");
    }

    // 设置日期
    @Test
    public void test4() {
        calendar.set(Calendar.YEAR, 2000);
        System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年");

        calendar.set(2008, 8, 8);
        // 获取年
        int year = calendar.get(Calendar.YEAR);

        // 获取月
        int month = calendar.get(Calendar.MONTH);

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);

        System.out.println("现在是" + year + "年" + month + "月" + day + "日");
    }
}

输出为:

现在是2016年11月7日11时42分18秒星期2
一年后的今天:2017年11月7日
6月份的最后一天为30号
现在是2000年
现在是2008年8月8日
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 参考文献:《Java疯狂讲义》(第三版) Objects工具类 知识点: 它提供了一些工具方法来操作对象,这些工具...
    houc阅读 713评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 曾经看到一篇文章说,因为一个人爱上一座城市。虽然之前和那座城市是那么的不相干,却在猛然中,因为某个人因为某段情因为...
    知易行难789阅读 399评论 0 0
  • 晴,宜思考。 突然开始反思自己,我终于发现自己的学习习惯有多不好,容易在学习的时候拿起手机查阅资料的时候,然后点开...
    傻孩子_shz阅读 201评论 0 0
  • 今天,2017年9月18日。你们听起来是不是觉得这个日子很普通啊?虽然对你们很普通,但是对我们来说就很重要。因为今...
    懒猫鳶阅读 460评论 3 4