文档章节

数值类型的注意问题(代码形式)

蜀山下的鱼
 蜀山下的鱼
发布于 2015/04/29 00:42
字数 1011
阅读 3
收藏 0

public class HelloWord{
 
 public static void main(String[] args){
 System.out.println("HelloWord");
 byte a =36;
 /*
 系统不会把一个超过int型整数范围的数当做long类型处理,即使没有超过int型也不会自动当做long型,而是int型数字;
 */
 //long bigValue = 9999999999999999999; //报错,超出int型范围。
 /*
 要在整数后面添加L后缀
 */
 long bigValue2= 99999999999999L;
 long bigValue3=12;//不会报错,12当做int型,自动类型转换到long型
 
 
 /*
 只有浮点类型的数值才可以使用科学表示法。
 只有浮点数除以0才可以得到正负无穷大,因为java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)处理,
 如果一个整数值除以0,则会抛出一个异常。
 
 浮点类型默认是double类型,要把一个浮点数赋给float类型,需加f或F后缀。
 */
 double d=0.0;
 double b=12;
 double c=b/d;
 System.out.println(c);
 
 /*
 boolean的值自动转换为字符串
 */
 String str =true+"";
 String str2 =2+"";
 System.out.println(str);
 System.out.println(str2);
 
 /*
 通过基本类型对应的包装类可以把字符串转换成基本类型
 8种基本数据类型对应的包装类:
   boolean     Boolean
   byte           Byte
   short         Short
   int              Integer
   long           Long
   char          Character
   float           Float
   double      Double
   
 */
 String str3 = "12";
 int istr3 =Integer.parseInt(str3);
 System.out.println(istr3);
 
 /*
 表达式类型的自动提升
 byte short char 将被提升到int型
 整个算术过程中,自动提升到表达式中最高等级的类型。
 */
 short s1 = 6;
 //s1= s1-3;//s1自动提升到int型,运算完后将一个int型赋给short型变量将发生错误。
 s1-=2;     //底层的运行机制不一样。推荐使用这种,程序更健壮。
 System.out.println(s1);
 
 
 /*
    (/)除法运算时,两个运算数都是整数类型和有一个或两个浮点数的运算规则不一样。
    (%)求余运算,浮点求余时,除于0会得到NaN(非数)
 */
 double d2=112;
 int    i2=0;
 //d2=d2%0;   //得到NaN
 d2= 0%d2;    //得到0.0
 System.out.println(d2);
 
 /*
 左移相当于乘以2的N次方
 右移相当于除以2的N次方
 */
 int i3= 2;
 i3<<=3;   //得到16--->2*2的3次方=16
 System.out.println(i3);
 
  
 /*
 ==     比较的两个操作数都是数值型,即使它们的数据类型不相同,只要它们的值相等,都返回true;
          比较的两个操作数都是引用类型,只有引用相同类的实例时才可以比较,而且,只有指向同一个对象才会返回true;
 !=      类似== 
 
 */
 System.out.println((5.0==5));//true
 System.out.println((new String()==new String()));//false
 Integer i=new Integer(5);
 System.out.println(i>6);//false  包装类的i虽然是引用类型,但可以与数值型的值进行比较,直接取出包装类实例
       //所包装的数值来进行比较的
 System.out.println((new Integer(2)==new Integer(2)));//false
 
 
 /*
 Integer:系统把-128~127的Integer实例放入一个cache的数组缓存起来。
 String:也会对通过直接量直接赋值的String实例进行缓存。
 */
 Integer ina=2;
 Integer inb=2;//其实ina inb都是引用cache数组中的同一个cache[X]引用。
 System.out.println(ina==inb);//true
 
 Integer inc=128;
 Integer ind=128;//超出了系统缓存-128~127的范围,需要新建一个实例。两个实例引用不同
 System.out.println(inc==ind);//false
 
 String sa="a";
 String sb="a";//系统会进行缓存,相同引用。
 System.out.println(sa==sb);//true
 
 String sc=new String("a");
 String sd=new String("a");//新建实例,引用不同
 System.out.println(sc==sd);//false
 
 
 /*
 实际的数组元素被存储在堆(heap)内存中;数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中。
 定义并初始化一个数组后,在内存里分配了两个空间,一个(stack)用于存放数组的引用变量,另一个(heap)
 用于存放数组本身。
 
 方法及方法内的变量存放在stack中,对象存放在heap中。
 */
 
 int[] iarr;   //定义一个int[]类型的数组变量
 iarr=new int[5];//动态初始化数组,数组长度为5
 for(int i=0;i<iarr.length;i++){//循环赋值
  iarr[i]=i+10;
  }
  
  
 
 }


}

 

 

 

 


 

本文转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/8226433

蜀山下的鱼
粉丝 9
博文 405
码字总数 0
作品 0
广州
高级程序员
私信 提问
('b' + 'a' + + 'a' + 'a').toLowerCase()输出banana的剖析

前言 今天逛微博的时候看到有个博主发的一个问题,代码如下: 当时第一反应是JavaScript会报错,但是并没有。然后就来了兴趣 剖析 后来仔细一想,估计和JavaScript运算符优先级、隐式转化有关...

BlackHole1
08/14
0
0
如何解决0.1 +0.2===0.30000000000000004类问题

上篇博客深度剖析了0.1+0.2 === 0.30000000000000004的原因。 这篇博客将主要提供几种解决小数精度丢失问题的Javascript类库的代码示例,以及简单的原生EcmaScript方法的代码示例。 一.类库部...

趁你还年轻233
2017/11/08
0
0
如何解决0.1 +0.2===0.30000000000000004类问题

上篇博客深度剖析了0.1+0.2 === 0.30000000000000004的原因。 这篇博客将主要提供几种解决小数精度丢失问题的Javascript类库的代码示例,以及简单的原生EcmaScript方法的代码示例。 一.类库部...

趁你还年轻
2017/11/08
0
0
Python之0.35+0.3+0.35不等于1

  在Python3中,数值类型有int、float、bool、complex四种类型。float型即为浮点型,用来表示实数。然而,笔者在实际运用中,却发现事实:      这是不是有点不可思议?然而我们还可以...

jclian91
2017/10/28
0
0
C Primer Plus 第9章 函数 9.1 函数概述

9.1 函数概述 首先,什么是函数?函数(funcation)是用于完成特定任务的程序代码的自包含单元。 为什么使用函数?第一,函数的使用可以省去重复代码的编写。第二,即使某种功能在程序中只使用...

idreamo
2016/07/08
63
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis + Ehcache 二级缓存实例

二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕...

xiaolyuh
8分钟前
1
0
Spring源码学习(二)哎呦,按菜谱做菜与AbstractAutowireCapableBeanFactory.createBean流程差不多

记得跟老婆谈恋爱时,有一天心血来潮给老婆做饭,按照菜谱一步一步的做,结果差点把厨房烧了!!! 这事至今老婆还记得。 入口 上一篇说了,AbstractBeanFactory.getBean的主流程 ,今天来说下...

温安适
10分钟前
25
0
前端UI攻城狮 你们该抛弃jQuery了

你不再需要jQuery! Web工程师太依赖jQuery了,某种意义上说jQuery已经成了JavaScript的同义词。但是我们真的需要他么?或许我们应该反思一下什么时候才真的需要jQuery。 对我个人而言开始使...

前端老手
11分钟前
1
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
53分钟前
5
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部