CreateTime--2017年12月6日10:03:53

Author:Marydon

一、java数据类型之基本数据类型

  (二)八种基本数据类型的特征

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject; /**
* 八种基本数据类型的特征
* @author Marydon
* @createTime 2017年12月1日下午5:14:37
* @description 初始值、取值范围、按容量大小排序、对应的封装类
* @Email:Marydon20170307@163.com
* @version:1.0.0
*/
public class BaseDataTypeCharacteristic {
// 为什么要声明static属性?因为main方法(静态方法)调用类的变量(成员变量),则被调用的变量也必须是静态的
// 布尔类型
static boolean bl;
// 字符型
static char c;
// 整型
static byte b;
static short s;
static int in;
static long l;
// 浮点型
static float f;
static double d; private static JSONObject byteObject = new JSONObject();
private static JSONObject shortObject = new JSONObject();
private static JSONObject charObject = new JSONObject();
private static JSONObject intObject = new JSONObject();
private static JSONObject longObject = new JSONObject();
private static JSONObject floatObject = new JSONObject();
private static JSONObject doubleObject = new JSONObject();
// 数据类型数组
private static JSONArray dataTypeArray = new JSONArray();
static List<BigDecimal> maxValList = new ArrayList<BigDecimal>();
static List<String> maxValType = new ArrayList<String>(); public static void main(String[] args) {
// 1.初始化验证
initValue();
// 2.取值范围验证
baseTypeRange();
// 3.将基本数据类型对象添加到json数组中
addDataToArray();
// 4.输出八种基本数据类型的特征并往maxValList、maxValType集合中填充内容
printCharacters();
// 5.排序
capacitySortByAsc(); } /**
* 按容量大小升序排列
*/
static void capacitySortByAsc() {
BigDecimal bg1 = null;
BigDecimal bg2 = null;
int compareResult = 0;
String str1 = "";
String str2 = "";
// 冒泡排序
for (int i = 0; i < (maxValList.size() - 1); i++) {// 最后一个也不再需要与其它数比较,因为它之前的数都已经和它做过比较了,所以i<(maxValList.size() - 1)
// 如果-1无法理解,自己可以在此处打个断点进行调试;当然,不减1也不影响最终结果
for (int j = (i + 1); j < maxValList.size(); j++) {// 每一个元素都不再需要与自己、自己前面的元素比较,所以j的最小值为i+1;
// 每个元素都需要自己身后的元素[自己身后第一个元素,最后一个元素]进行比较,所以j<maxValList.size()
bg1 = maxValList.get(i);
bg2 = maxValList.get(j);
compareResult = bg1.compareTo(bg2);
// bg1=bg2-->返回0;bg1>bg2-->返回1;bg1<bg2-->返回-1
if (1 == compareResult) {// 较大值放在后面
maxValList.set(i, bg2);// 错误用法:调用add方法
maxValList.set(j, bg1);
str1 = maxValType.get(i);
str2 = maxValType.get(j);
maxValType.set(i, str2);
maxValType.set(j, str1);
} }
} StringBuffer sb = new StringBuffer("八种基本数据类型按容量大小升序排列结果为:");
// 大小比较
for (int i = 0; i < maxValList.size(); i++) {
if (i == (maxValList.size() - 1)) {// 最后一次拼接去掉"<"
sb.append(maxValType.get(i));
} else {
sb.append(maxValType.get(i)).append("<");
}
} System.out.println(sb.toString());
} /**
* 输出八种基本数据类型的特征
*/
static void printCharacters() {
// 迭代输出
for (Iterator iterator = dataTypeArray.iterator(); iterator.hasNext();) {
JSONObject object = (JSONObject) iterator.next();
System.out.println(
"java八种基本数据类型之\"" + object.get("baseType") + "\"在作为类的成员变量时,其初始值为:" + object.get("initVal")
+ ";取值范围为:[" + object.get("minVal") + "," + object.get("maxVal") + "];对应的封装类为:"
+ object.get("packageType"));
// 说明:char类型的取值范围无法打印出来,通过转化测试取得结果为[0,65535]
if ("char".equals(object.get("baseType"))) {
object.put("minVal", 0);
object.put("maxVal", 65535);
}
// 将八种基本数据类型的最大值添加到maxValList集合中
maxValList.add(new BigDecimal(String.valueOf(object.get("maxVal"))));
// 将八种基本数据类型添加到maxValType集合中
maxValType.add((String)object.get("baseType"));
}
} /**
* 将八种基本数据类型对应的JSONObject添加到JSONArray中
*/
static void addDataToArray() {
dataTypeArray.add(doubleObject);
dataTypeArray.add(floatObject);
dataTypeArray.add(longObject);
dataTypeArray.add(intObject);
dataTypeArray.add(charObject);
dataTypeArray.add(shortObject);
dataTypeArray.add(byteObject);
} /**
* 八种基本数据类型作为成员变量时的初始值
*/
static void initValue() {
// 数据类型
String baseDateType = "";
// 默认值
Object defaultVal = "";
for (int i = 1; i <= 8; i++) {
for (int j = i; j <= i; j++) {
switch (j) {
case 1:
baseDateType = "boolean";
defaultVal = bl;// false
break;
case 2:
baseDateType = "char";
defaultVal = c;// ""
charObject.put("initVal", c);
break;
case 3:
baseDateType = "byte";
defaultVal = b;//
byteObject.put("initVal", b);
break;
case 4:
baseDateType = "short";
defaultVal = s;//
shortObject.put("initVal", s);
break;
case 5:
baseDateType = "int";
defaultVal = in;//
intObject.put("initVal", in);
break;
case 6:
baseDateType = "long";
defaultVal = l;//
longObject.put("initVal", l);
break;
case 7:
baseDateType = "float";
defaultVal = f;// 0.0
floatObject.put("initVal", f);
break;
case 8:
baseDateType = "double";
defaultVal = d;// 0.0
doubleObject.put("initVal", d);
break;
default:
break;
}
}
System.out.println("java八种基本数据类型之" + baseDateType + "在作为类的成员变量时,其初始值为:" + defaultVal);
} } /**
* 八种基本数据类型作为局部变量时,是否有初始值测试
*/
void localVar() {
// 局部变量只声明,未赋值
boolean bl2;
char c2;
byte b2;
short s2;
int in2;
long l2;
float f2;
double d2;
// 编译报错:局部变量没有初始值,要想调用必须先初始化
System.out.println(bl2);
System.out.println(c2);
System.out.println(b2);
System.out.println(s2);
System.out.println(in2);
System.out.println(l2);
System.out.println(f2);
System.out.println(d2); } /**
* 基本数据类型的最大值与最小值
*/
static void baseTypeRange() {
// 7种基本数据类型
String [] baseType = {"byte","short","char","int","long","float","double"};
// 7种封装数据类型
String [] packageType = {"Byte","Short","Character","Integer","Long","Float","Double"};
// 最小值
String minValue = "";
// 最大值
String maxValue = ""; for (int i = 0; i < baseType.length; i++) {
int j;
// 将j声明在外面的原因是:该层for循还体外可以共享变量j
for (j = i;j <= i;j++) {// int j = i;
switch (j) {
case 0:
minValue = String.valueOf(Byte.MIN_VALUE);
maxValue = String.valueOf(Byte.MAX_VALUE);
byteObject.put("minVal", minValue);
byteObject.put("maxVal", maxValue);
byteObject.put("baseType", baseType[j]);
byteObject.put("packageType", packageType[j]);
break;
case 1:
minValue = String.valueOf(Short.MIN_VALUE);
maxValue = String.valueOf(Short.MAX_VALUE);
shortObject.put("minVal", minValue);
shortObject.put("maxVal", maxValue);
shortObject.put("baseType", baseType[j]);
shortObject.put("packageType", packageType[j]);
break;
case 2:
minValue = String.valueOf(Character.MIN_VALUE);
maxValue = String.valueOf(Character.MAX_VALUE);
charObject.put("minVal", minValue);
charObject.put("maxVal", maxValue);
charObject.put("baseType", baseType[j]);
charObject.put("packageType", packageType[j]);
break;
case 3:
minValue = String.valueOf(Integer.MIN_VALUE);
maxValue = String.valueOf(Integer.MAX_VALUE);
intObject.put("minVal", minValue);
intObject.put("maxVal", maxValue);
intObject.put("baseType", baseType[j]);
intObject.put("packageType", packageType[j]);
break;
case 4:
minValue = String.valueOf(Long.MIN_VALUE);
maxValue = String.valueOf(Long.MAX_VALUE);
longObject.put("minVal", minValue);
longObject.put("maxVal", maxValue);
longObject.put("baseType", baseType[j]);
longObject.put("packageType", packageType[j]);
break;
case 5:
minValue = String.valueOf(Float.MIN_VALUE);
maxValue = String.valueOf(Float.MAX_VALUE);
floatObject.put("minVal", minValue);
floatObject.put("maxVal", maxValue);
floatObject.put("baseType", baseType[j]);
floatObject.put("packageType", packageType[j]);
break;
case 6:
minValue = String.valueOf(Double.MIN_VALUE);
maxValue = String.valueOf(Double.MAX_VALUE);
doubleObject.put("minVal", minValue);
doubleObject.put("maxVal", maxValue);
doubleObject.put("baseType", baseType[j]);
doubleObject.put("packageType", packageType[j]);
break;
default:
break;
}
}
// 为什么j-1?因为在j++在跳出for循环这个动作之前完成
System.out.println("java八种基本数据类型之" + baseType[j-1] + "的作用区间为:[" + minValue + "," + maxValue + "]");
} } }

  效果展示: 

  文字展示:

// java八种基本数据类型之"double"在作为类的成员变量时,其初始值为:0.0;取值范围为:[4.9E-324,1.7976931348623157E308];对应的封装类为:Double
// java八种基本数据类型之"float"在作为类的成员变量时,其初始值为:0.0;取值范围为:[1.4E-45,3.4028235E38];对应的封装类为:Float
// java八种基本数据类型之"long"在作为类的成员变量时,其初始值为:0;取值范围为:[-9223372036854775808,9223372036854775807];对应的封装类为:Long
// java八种基本数据类型之"int"在作为类的成员变量时,其初始值为:0;取值范围为:[-2147483648,2147483647];对应的封装类为:Integer
// java八种基本数据类型之"char"在作为类的成员变量时,其初始值为:'';取值范围为:['','和汉字的口字很相似,无法打印出来'];转换成数字后为:[0,65535];对应的封装类为:Character
// java八种基本数据类型之"short"在作为类的成员变量时,其初始值为:0;取值范围为:[-32768,32767];对应的封装类为:Short
// java八种基本数据类型之"byte"在作为类的成员变量时,其初始值为:0;取值范围为:[-128,127];对应的封装类为:Byte
// 八种基本数据类型按容量大小升序排列结果为:byte<short<char<int<long<float<double 
 

java 八种基本数据类型之初始值、取值范围、对应的封装类的更多相关文章

  1. java 八种基本数据类型之与对应的封装类之间的相互转化

      迁移时间--2017年5月26日17:47:37 Author:Marydon 一.java数据类型之基本数据类型 UpdateTime--2017年1月9日17:31:14 (三)格式转换 1. ...

  2. Java八种基本数据类型的大小,以及封装类,自动装箱/拆箱的用法?

    参考:http://blog.csdn.net/mazhimazh/article/details/16799925 1. Java八种基本数据类型的大小,以及封装类,自动装箱/拆箱的用法? 原始类型 ...

  3. 【转】Java八种基本数据类型的比较及其相互转化

    java中有且仅有八种基本数据类型,记住就行,共分为四类: 第一类:整型-->byte     short      int     long 第二类:浮点-->float    doub ...

  4. Java——八种基本数据类型(常用类)

    装箱和拆箱 装箱:基本数据类型转为包装类 拆箱:包装类转为基本数据类型 jdk1.5(即jdk5.0)之后的版本都提供了自动装箱和自动拆箱功能 基本数据类型的包装类 举两个例子,看一下 public ...

  5. java 八种基本数据类型

  6. JAVA四类八种基本数据类型

    boolean类型 Boolean在内存中占用一个字节. 当java编译器把java源代码编译为字节码时,会用int或byte来表示boolean.在java虚拟机中,用整数零来表示false,用任意 ...

  7. Java的八种基本数据类型及其包装类

    Java有八种基本数据类型,所谓基本类型就是说存储时仅存在栈中,那么与之相对就是引用类型,引用类型既存在栈里又存在堆里,栈内存放堆内地址. 八种基本类型分别为byte short int long f ...

  8. Java学习笔记四:Java的八种基本数据类型

    Java的八种基本数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. Java基本类型共有八种,基本类型可以分为三类,字符类型char,布 ...

  9. Java常用类之【八种基本数据类型】

    一.装箱和拆箱 装箱:将基本数据类型包装为对应的包装类对象 拆箱:将包装类对象转换成对应的基本数据类型 JDK5.0中为基本数据类型提供了自动装箱(boxing).拆箱(unboxing)功能 二.八 ...

随机推荐

  1. ImageView和onTouchListener实现,点击查看图片细节

    这是来自疯狂android讲义上的例子,其实没啥意思.就是用监听器获取到手指的坐标,然后根据这个坐标开始绘制一个图片.(这里的绘制方式有些问题,所以凑合看看吧.) 首先,还是布局文件(两个ImageV ...

  2. 全文居中及DIV居中

    第一种方案(全文档): body {     text-align: center; } body div {     margin: 0 auto; } 第二种方案(某DIV): .testing- ...

  3. C#多线程读写同一文件处理

    在多线程访问读写同一个文件时,经常遇到异常:“文件正在由另一进程使用,因此该进程无法访问此文件”. 多线程访问统一资源的异常, 解决方案1,保证读写操作单线程执行,可以使用lock 解决方案2,使用S ...

  4. Servlet 生命周期、工作原理(转)

    原文链接:Servlet 生命周期.工作原理 Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执 ...

  5. K3 LEDE固件更改FRP客户端版本

    1.下载文件 /usr/bin/wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.23. ...

  6. 非常精简的Linux线程池实现(一)——使用互斥锁和条件变量

    线程池的含义跟它的名字一样,就是一个由许多线程组成的池子. 有了线程池,在程序中使用多线程变得简单.我们不用再自己去操心线程的创建.撤销.管理问题,有什么要消耗大量CPU时间的任务通通直接扔到线程池里 ...

  7. 检索(retrieval && search )-单目标-多目标跟踪-MTMC Tracking和 ReID

    跨摄像头多目标跟踪(Multi-Target Multi-Camera Tracking, MTMC Tracking) 跨摄像头多目标跟踪(Multi-Target Multi-Camera Tra ...

  8. Spring Boot 集成Shiro和CAS

    Spring Boot 集成Shiro和CAS 标签: springshirocas 2016-01-17 23:03 35765人阅读 评论(22) 收藏 举报  分类: Spring(42)  版 ...

  9. 三种简洁的经典高效的DIV+CSS制作的Tab导航简析

    在网页中应用选项卡可以使网页显得更紧凑,结合AJAX技术可以使页面在有限的空间内展现更多的内容.本文主要介绍几种简洁的选项卡效果的实现(不涉及滑动门和AJAX),附有实例,无图片,兼容性较好,方便大家 ...

  10. 手把手实现腾讯qq拖拽删去效果(二)

    这节,就一个任务如何把上节自定义的翻页动画控件整进下拉列表中去. 由于是自定义的下拉列表控件,我们需要自定义能够上啦下滑的listview,这势必会造成这个问题,上拉刷新要响应相应touch事件,拖拽 ...