博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA API 之包装类、数学类和 Calendar 类
阅读量:5354 次
发布时间:2019-06-15

本文共 4009 字,大约阅读时间需要 13 分钟。

1. 包装类
(基本类型中没有多少我们能够使用的方法和属性,为了便捷我们需要自己去写)
针对每一种基本类型提供了对应的类的形式 --- 包装类
 
byte short int long float double char boolean void
Byte Short Integer Long Float Double Character Boolean Void
void 是一个最终类,不能被实例化。
 
 
 
package cn.tedu.baozhuang;public class IntegerDemo1 {        public static void main(String[] args) {                int i = 7;        //封箱        Integer in = new Integer(i);                //自动封箱,都是 JDK1.5 的特性        //其实就是在底层默认调用 Interger 类身上的静态方法 valueOf,Double Boolean 这些也是这样的!!        //Integer in2 = Integer.valueOf(i);        Integer in2 = i;                Integer in3 = new Integer(5);        //自动拆箱,在底层调用对象身上的 IntegerValue()        //in3.IntegerValue();        int i3 = in3;            }}
 
当把基本类型的变量直接赋值给对应的引用类型的对象,--- 自动封箱,底层是调用了对应类身上的 valueOf() 方法
当把引用类型的对象直接赋值给对应的基本类型的变量,---自动拆箱,底层是调用了对应类身上的***Value() 方法,
 
package cn.tedu.baozhuang;public class IntegerDemo2 {    public static void main(String[] args) {                //Integer i1 = Integer.valueOf();        //如果这个值不在 -128~127 底层的 valueOf() 调用构造方法 new 一把,返回一个新对象!!!        //如果在 -128~127,从 cache 数组中对应下标位置上取值。        Integer i1 = 50;        Integer i2 = 50;                System.out.println(i1 == i2);                Integer in = 400;        int i = 400;        //包装类和基本类型比较时,会进行自动拆箱成基本类型        System.out.println(in == i);            }    }
四种整数型都有范围判断(-128~127),float 就没有,直接 new 了!
 
 
注意:凡是 Number 的子类都会提供将字符串转化为对应类型的构造方法
 
 
 
包装类产生的对象的哈希码是固定的,不随环境改变。
 
注意:字面量的哈希码不随环境不随系统而改变
 
 
 
2. 数学类
(是在代码中调用 Java 中写好的数学类)
 
Math --- 最终类,针对基本类型提供了基本的数学运算
BigDecimal --- 能够精确运算,要求参数以字符串形式传递
 
几个比较重要的方法对应如下代码:
package cn.tedu.math;import java.util.Random;public class MathDemo1 {    public static void main(String[] args) {                System.out.println(Math.abs(-5.86));        //求立方根        System.out.println(Math.cbrt(8));                //向上取整,返回一个double 类型的数据        System.out.println(Math.ceil(4.06));                //向下取整,都是返回double 类型的        System.out.println(Math.floor(4.06));                //四舍五入,返回一个 long 类型的        System.out.println(Math.round(3.68));                //返回一个[0,1)的一个随机小数        System.out.println(Math.random());                //获取 30-90 一个随机整数        System.out.println((int)(Math.random()*61+30));                //获取 0-30的数,只能是整数        Random r = new Random();        System.out.println(r.nextInt(30));                //抽奖系统,实际上要考虑权重问题(就是让那种经常到这里消费的人的概率高一些)        if(Math.random() * Math.random() > 0.95){            System.out.println("亲,恭喜你中奖啦!");        }    }    }

 

两个很大的数相乘,用一个数组存放。
int[ ] arr1 = new int[ n ];
int[ ] arr2 = new int[ n ];
int[ ] result = new int[ 2*n ];
 
for(int i = 0; i < n; i++){
    for(int j = 0;  j < n; j++){
        int r = arr1[i] * arr2[j] + result[ i+j ];//是一个暂时的数,用于后面分别存放,是i+j位的数(其实就是上一位的 i + j +1 位)
        result[ i+j ] = r % 10;  //表示第 i + j 位的结果
        result[ i+j+1 ] = r / 10; //表示第 i + j + 1 位结果,用于表示进位
    }
}
 
 
3. Calender --- 抽象类
 
JDK1.8的特性:简书,51CTO,是以讹传讹,自己试试是不是正确。最准确的是别人的官网!!
Map<String, Integer> map = {"a":1, "b":2};   //别人说都没有说
 
package cn.tedu.time;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateDemo {    public static void main(String[] args) throws Exception {        //获取当前时间        System.out.println(new Date().toString());                //获取指定时间        //这个方法在 1990-01的基础上进行累加        @SuppressWarnings("deprecation")        //压制警告        //这个方法已过时        Date date = new Date(2000,2,9);        System.out.println(date);                //将字符串转化为日期        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date date1 = sdf.parse("2000-12-15 18:58:45");        System.out.println(date1);                //将日期转化为字符串        //XX年XX月XX日        SimpleDateFormat sdf2 = new SimpleDateFormat("yy年MM月dd日 HH时mm分ss秒");        String str = sdf2.format(date1);                //格里高利历(GregorianCalendar),毫秒值(time=1534494939307),偏移量---表示当前时期到零时区的毫秒值(offset=28800000)        //WEEK_OF_MONTH=3(不完全周) DAY_OF_WEEK_IN_MONTH=3//        Calendar             }    }

 

转载于:https://www.cnblogs.com/tangdiao/p/9494637.html

你可能感兴趣的文章
nginx+tomcat 架构 HttpServletRequest.getScheme()获取正确的协议
查看>>
linux下如何编译python生成libpython2.5.so动态库
查看>>
盘点:2018年双11背后的蚂蚁核心技术
查看>>
题目1047:素数判定
查看>>
每天离不开的工具vim
查看>>
用户人物剧本
查看>>
进程间通信学习笔记一(管道通信)
查看>>
备份集中的数据库与现有的数据库不同解决方案
查看>>
CSUOJ1329——一行盒子_湖南省第九届大学生计算机程序设计竞赛
查看>>
递推 Codeforces Round #186 (Div. 2) B. Ilya and Queries
查看>>
POJ2480 Longge's problem gcd&&phi
查看>>
JavaScript中的DOM,BOM详细介绍;
查看>>
基于slf4j的log4j实战
查看>>
LDA算法入门
查看>>
QQ浏览器X5内核问题汇总
查看>>
配置Java开发环境
查看>>
关于微信端 顶部会撑开页面的解决方案
查看>>
sqlserver 自动生成行号
查看>>
c语言中的结构体
查看>>
【转载】资源整合
查看>>