java short类型取值范围与用法

short 16位  最大是+2^15,最小-32768
shortint -128..128 1 带符号8位
inteter -32768..32767 2 带符号16位
longint -2147483648..2147483647 4 带符号32位
byte 0..255 1 带符号8位
word 0..65535 2 带符号16位

实例

public class MainClass {

  public static void main(String[] arg) {
    short smallNumber = 1234;
    System.out.println(smallNumber);
  }

}

short s = 1;
为什么s += 1没错,
s = s + 1就有错?问题补充:

原来是赋值的时候类型不匹配,而不是相加的时候类型不匹配,
s = (short)(s + 1);

解析

首先看“s = s + 1”为什么错。

Java编译器认为一个像“1”这样的直接数是一个int型。Java的自动类型转换是一个占用空间少的类型可以自动转换成占用空间大的类型,反之则必须强制类型转换,否则报错。“s + 1”这个表达式因为是short型和int型相加,因此自动转换成了int型,此时再用“s = s + 1”赋值给一个short型而没有强制类型转换那么自然报错。

而至于为什么 s += 1 没有错我认为没有必要深入研究,你既然发现了这个事实,那么知道就行了,也许Java的设计者当初对它做了特殊处理。

时间: 2024-10-12 13:44:30

java short类型取值范围与用法的相关文章

关于在java中map取值问题

问题描述 关于在java中map取值问题 Map,其中object为ArrayList,如何取值 解决方案 ArrayList al = (ArrayList)ordersMap.get("rows"); 解决方案二: 谢谢各位的回答,跟一楼说的一样,我已经把值取出来了 解决方案三: 一楼正解,强制转型即可. 解决方案四: map以key.value形式存在,你直接通过key获取value就可以了

byte类型取值范围以及溢出详解

例1: [html] view plain copy  print? public class test {       public static void main(String[] args) {           byte a = 127 ;           a = (byte)(a+3) ;           System.out.println(a);       }   }   输出-126,为什么呢 byte类型的取值范围是-128-127 这个输出结果是由java编码方

ASP.NET服务器端控件RadioButtonList,DropDownList,CheckBoxList的取值、赋值用法_实用技巧

这三个控件都有一个Items集合,可以用 RepeatLayout 和 RepeatDirection 属性来控制列表的呈现形式.如果 RepeatLayout 的值为 Table,那么将在表中呈现列表.如果设置成 Flow,那么将在没有任何表结构的情况下呈现列表.默认情况下,RepeatDirection 的值为 Vertical.将此属性设置成 Horizontal 将会使列表水平呈现. RadioButtonList:控件提供已选中一个选项的单项选择列表(数据源单选).与其他列表控件相似,

Java Object类型与值类型之间的相互转化

public static void main(String[] args) { boolean var = true; foo((Object)var); } public static void foo(Object value) { boolean var = (boolean)value; System.out.println(var); } 如上方代码所示,函数foo会传递一个Object类型的变量value过来(传递进来的值确实是布尔值,不要问我为什么不直接在foo函数中将Objec

求指点!!Java数据库表取值

问题描述 事情是这个样子的:有两张表,一张是员工表(userId,userName,deptId),一张是部门表(deptId,deptName),现在要在jsp中列出员工表,但是我想在员工表里面显示部门的名称,而员工表里面存的是部门的ID啊!怎么办?用到的是SpringMVC.Hibernate新手,懂的不多,求指教! 解决方案 解决方案二:你在查询的时候将部门信息也带出来不就行了,如下SelectUser.userId,User.userName,Dept.deptNameFromUserL

代码-ajax提交数据后 ,怎么取值??

问题描述 ajax提交数据后 ,怎么取值?? <script type="text/javascript"> function validate(){ //var username = $('#usernmae').val(); var username = document.getElementById("username").value; alert(username); $.ajax({ url:"register", type

求教,java里面request.getParameter取值偶现是null,post也有长度限制?

问题描述 求教,java里面request.getParameter取值偶现是null,post也有长度限制? string a = request.getParameter("ids"); 前台是 $.ajax({ type: 'POST',dataType: 'TEXT',cache: false,data: 'ids=' +ids 现在看到的规律是ids短一点就有正常的值, ids长了,a就直接是null了 . 求大神帮忙看一下~ 奇怪的是,尝试用@RequestBody Str

mongodb的java开发查询返回结果后取值的问题

问题描述 mongodb的java开发查询返回结果后取值的问题 用find查询会返回一个document,但是这个document只能获取一级key的数据,如果我想要获得某个子目录的下的数据应该怎么做,好像用get方法取出来的并不谁document类型也就没 办法转型后继续用get方法来取值.比如 {"table":{field:"字段1"}}这个数据格式,在结果的document里可以用get("table")的方式获得"{field

Java中常见的日期操作(取值、转换、加减、比较)_java

Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处