Java基础 -2.2
整形数据
保存的范围由小到大:byte、short、int、long
在java中任何的一个整型常量 那么其默认的类型都是int型(只要是整数就是int类型的数据)。
public class ex1 {
public static void main(String[] args) {
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
System.out.println(max);
System.out.println(min);
//int类型 - int类型 = int类型
System.out.println(max + 1);
System.out.println(max + 2);
//int类型 - int类型 = int类型
System.out.println(min - 1);
}
}
>>> 2147483647 //01111111 11111111 11111111 11111111
>>>-2147483648 //10000000 00000000 00000000 00000000
>>>-2147483648 //10000000 00000000 00000000 00000000
>>>-2147483647 //10000000 00000000 00000000 00000001
>>> 2147483647 //01111111 11111111 11111111 11111111
由此得出结论
- int的范围是 -2147483648 ~ 2147483647
- 在进行运算中如果出现超过了其最大的保存范围,那么将出现 循环的问题 这个问题在java中 叫做数据溢出
解决办法
1)定义更大的数据类型 long型
2)直接在常量上进行处理 默认的整数类型都是int型 那么可以为它追加字母L 或者直接使用(long) 转换
在这里记一点 我有点混淆的东西
11111111 11111111 11111111 11111111 这个是负数最大的数 -1 因为11111111 11111111 11111111 11111111 加1后 会溢出 得到0
10000000 00000000 00000000 00000000 这个是负数最小的数 -2147483648 原因同理
int类型 - long类型 = long类型
int类型 + long类型 = long类型 (大桶套小桶)
范围小的数据类型 可以自动转为范围大的数据类型
范围大的数据类型 要转为范围小的数据类型 那么就必须采用强制类型转化 同时要考虑数据溢出
程序支持有数据转换处理,但是如果不是必须的情况不建议这种转换。
在进行整数处理的时候,还有一个byte类型特别需要注意,这个类范围是-128~127
public class ex2 {
public static void main(String[] args) {
byte num = 20;
System.out.println(num);
}
}
不觉得有点别扭吗?
正常来讲在Java程序里面20这个数字应该是int类型 但是在为num(byte类型)赋值时并没有因为是int类型 而发生强制类型转换
是因为java对byte做了特殊处理 即:如果没有超过byte范围的常量可以自动由int 变为byte。
需要注意的是:这个处理只针对常量 对变量就不行
public class ex2 {
public static void main(String[] args) {
int x = 20;
byte num = (byte)x; //不强制类型转化 报编译错误
System.out.println(num * num );
}
}
结论 对于常量可以自动适配转换 对于变量则还是必须使用强制转换处理
Java基础 -2.2的更多相关文章
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- 最适合作为Java基础面试题之Singleton模式
看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...
- java基础练习 字符串,控制流,日历,日期等
1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)
线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- MySQL删除语句比较,清空表数据,重置自增长索引
drop truncate delete 程度从强到弱 1.drop table tbdrop将表格直接删除,没有办法找回 2.truncate (table) tbtruncate 删除表中的所有数 ...
- IDF-CTF-简单的Elf逆向Writeup
ElfCrackMe1 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...
- VMware下Linux虚拟机访问本地Win共享文件夹
VMware下Linux虚拟机访问本地Win共享文件夹 : 访问共享文件夹的步骤如下: 1.先在本地Win创建一个需要共享到虚拟机中的共享目录,如 F:\share. 2.打开你的VMware,选择 ...
- “1+X”证书Web前端开发等级考试简介
考试简介 “1+X”证书制度是为了深入贯彻党的十九大精神和全国教育大会精神,教育部会同国家发展改革委.财政部.市场监管总局制定了<关于在院校实施“学历证书+若干职业技能等级证书”制度试点方案&g ...
- MyBatis操作mysql数据库查询出来是时间戳的问题
在pojo类中用java.sql.Date接收就能正常显示
- iOS 开发之函数式编程思想(Functional Programming)
函数式编程(Functional Programming), 函数式编程强调的函数:1.不依赖外部状态:2.不改变外部状态. 函数式编程可解决线程安全问题,每一个函数都是线程安全的. 时间状态:变量一 ...
- html解析のBeautifulSoup
引子: 使用python爬虫对爬取网页进行解析的时候,如果使用正则表达式,有很多局限,比如标签中出现换行,或者标签的格式不规范,都有可能出现取不到数据,BeautifulSoup作为一个专门处理htm ...
- C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
//将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...
- Python - 协议和鸭子类型
参考: Fluent_Python - P430 wiki 这里说的协议是什么?是让Python这种动态类型语言实现多态的方式. 在面向对象编程中,协议是非正式的接口,是一组方法,但只是一种文档,语言 ...
- springMVC的跳转
服务器内部跳转: return "forward:/forward/test1"; 或者 request.getRequestDispatcher(path).forward(r ...