JAVA中的数据类型转换

下午忽然发现一知识的盲点,泛型这个概念,涉及到java集合中数据类型转换的问题
以及字符串转换为基本数据类型的问题.
 先列几个关键的例子,让自己在整理的时候有有个头绪:
 1.Integer.parseInt("1"); 
 2.(int)Str="1234";
 3.(3<2)?(1.2:1);
 4.new Integer(1).toString;
 5.toString(3);
 6.String.valueOf(123123);
 7.Collection<String>;
 上述几个例子概括起来就是:
 3的自动类型转换,2的强制类型转换,1的包装类数据类型转换,4的对象的基本数据类型对象
的字符串转换,5的对象的基本数据类型的字符串转换,6的String类的valueOf方法将基本数据类型转化为字符串类型.7的集合泛型.
 基本数据类型之间的转换:
 强制类型转换,自动类型转换,对于这两个概念,很多书上大费口舌的讲了一通,将数据伸缩
的问题本来很简单的事情看起来费劲,其实原则只有一个"人往高处走",自动类型转换将低精度
数据转化成高精度数据,比如int 向float或者double转换(当然int和float同占内存32位,但是
其数据的表示格式确实不一样,float可以是带小数的表示方法.虽然此类型数据在逐渐积累过程
中 会带来精度失真,但是足以精确表示所需要的数据,double占内存64位,当数据自动转化成此类型时,存贮原来数据的内存单元也会随之扩展成64位,这 也就是很多书上所说的数据扩大).强制类型转换,就是你非让数据变成低精度数据,比如float或者double(具体不知道他的整数部分以及小数部分在 内存中怎样分配的,不过我估计应该是高几位存整数,低几位存小数)转变成int型.还是那个原则你非要让人家干不愿意做的事情当然就得强制,这样造成了数 据小数部分的丢失.
 包装类的数据类型转换,通过基本数据数据类型中在API中提供的包装类.可以将基本数据类型
转变成对象,其实就是将比如int型的某个数据(转变成Sting型),放到一个类里,这个类里便有个参数或者属性来接受你的int型数据,并且在这个类里提供了一些列方法最终将其转变成字符串.
1.4的过程基本上就是这样..56是将字基本数据类型转变成字符串,原理也基本上是上述过程.
 今天的主角还是泛型,这个概念困扰过我好长时间,他和强制类型转换在实际开发中所要达到
的 目的是一样的,但是既然SUN在jdk1.5中加入了他,肯定是有道理的,要知道强制类型转换,语法上在编译之前是不容易被程序员或者被IDE检测到的只 有在程序编译之后才会发现.这要是大项目就麻烦了.所以越加佩服詹姆斯那帮人的创造力,我今天下午特写了两个检测程序来对比一下验证一下这个说法,结果理 论==实践,而泛型这个概念就像给预加入或将取出集合的数据加上了一个阀(相当于过滤器).
程序如下:
//程序一,使用强制类型转换,其中 int c作为验证的,自己可以在list.add(b)后加入list.add(c)
//分别运行一下下述两个程序.验证一下我上述说法的对错.
package ex1;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class GenericData {
 public static void main(String[] args) {
  String a="a";
  String b="b";
  int c=2;
  Collection list=new ArrayList();
  list.add(a);
  list.add(b);
  Iterator it=list.iterator();
  while(it.hasNext()){
   String str=(String)it.next();
   System.out.println(str);
  }
 }

}
//程序二 引入泛型概念
package ex1;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class GenericData {
 public static void main(String[] args) {
  String a="a";
  String b="b";
  int c=2;
  Collection<String> list=new ArrayList();
  list.add(a);
  list.add(b);
  Iterator<String> it=list.iterator();
  while(it.hasNext()){
   String str=it.next();
   System.out.println(str);
  }
 }

}
最 后泛型是向后兼容的如果你的Eclipse无法识别泛型,就查查自己的jdk路径因为Eclipse的默认jdk是1.4的,所以你得自己重新设置一下自 己的jdk路径(前提是你的jdk版本是1.5以上),否则你的程序无法正常运行程序二,别怪我没提醒你啊,如果这点被我点到了.建议你买本 Eclipse的书好好看看,这个IDE确实不错,好好研究一下,开发起来会很快.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值