1、八种基本数据类型:

byte-short--int --long--float--double--char

2、八种基本类型所占字节空间

一、int

  • 整数的直接量为int;
  • 存储范围为:- -2147483648~2147483647       -2^31 ~ 2^31-1 -2^63~2^63-1

1.1 直接量表示直接写出的整数:

int a= 100;

整数直接量的数字必须在int的范围内;

除了进制书写形式外,整数的直接量也经常写为16进制数值,以OX或Ox或者8进制的0开头;

int c=0x10;//16进制整数直接量
int d=020;//8进制整数直接量
System.out,println(c);
System.out.println(d);

1.2 整形数据的除法运算中的取整:

除法运算保留整数部分,舍弃小数部分

1.3 运算时要防止溢出发生:

整数运算的溢出:两个整数进行运算时,其结果可能会超出整数的范围产生溢出

byte w=(byte)(127+1);
System.out.println(w);

二、long:

在表示较大整数的时候,int范围不够的情况下,范围:-2 63~2 63-1

表示long类型的直接量,需要以L或l结尾

long l1 = 2147483647;//对的
long l2 = 2147483648;//编译错误,超出整数直接量的范围,也就是int值得范围。

2.1 使用long类型进行较大整数的运算

较大整数:超过int范围的整数

long distance1 = 1000*365*24*299792458;//使用较大整数运算
System.out.println(distance1);//4个int相乘结果一定为int,则超出int范围导致溢出!
long distance2 = 1000*365*24*299792458L;
System.out.println(distance2);//4个int乘long,结果一定为long

2.1 通过时间毫秒数来存储日期和时间:

  • JDK提供了一个方法,返回1970年1月1日0点0分0秒到此时此刻所经历的毫秒数,其数据类型为long

三、double:

浮点数,小数,包含float和double

double类型的精度是float的两倍,因此double也叫双精度浮点数

3.1 浮点数的直接量为double类型

  • 小数的写法有以下几种:

  • 通常写法:3.14、314.0

  • 科学计数法:

  • 1.25E2、1.25e2、1.25E-2

    eg:1.25E2 1.25*10^2=125.0

  • 默认浮点直接量为double类型,如果需要表示float类型,则需要在末尾加F或f。float f=1.25F;

3.2 double运算时会出现舍入误差

二进制中无法精确的表示1/10,就和十进制无法精确表示1/3一样;

二进制表示10进制可能会误差

double money = 3.0;
double price =2.9;
System.out.println(money- price);//输出结果为0.100000000009 舍入误差!

四、char

本质是16位无符号的整数,对应的是字符集的编码;

采用的编码是Unicode编码(世界通用的定长字符集,所有字符都是16位)

4.1 对char类型遍历进行赋值

整数类型:0---65535之间的整数数值

字符直接量:用单引号括起来的内容就是字符的实际内容

Unicode形式:‘\u004e’、‘\u4e2d’,Unicode 的16进制形式

4.2 使用转义字符:

对于不方便输出的字符采用转义

五、boolean

  • boolean是逻辑运算类型;

  • 赋值只有true或者false;

  • 经常用于存储关系运算的结果值。

  • int age=18;
    boolean isChild=age>16;
    System.out.println(isChild);//true;

基本类型间的转换:

1、基本类型转换

自动类型转换:小类型--大类型

可以自动转换的,如下图:

强制类型转换 :大类型--小类型

byte,short,char这三种不能进行相互转换

需要转换符:格式:(需要转化的类型)变量

注意:这样转化可能精度丢失或者溢出

2、强制转换时的精度丢失和溢出

int a=100;
int b=200;
long c=a+b;
System.out.println(c);
long l1=1024l;
int i=(int)l1;
System.out.println(i);
long l=1024L*1024*4*1024;
int j=(int)l;
System.out.println(j);
double pi=3.1415193084094;
float f=(float)pi;
System.out.println(f);

精度丢失:转化后存储的小数位不是原来的小数位

3、数值运算时的自动转换

多种基本类型参与的表达式运算中,运算结果会自动向较大类型转换

//3.多种基本类型参与运算会向较大类型转换
long l3 = 123*456*789L;//int*int*long 向long转化
double d = 500-599.0;//-99.0
double persent2 = 80/100.0;//0.8

 

java的基本类型和类型转化的更多相关文章

  1. Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  2. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  3. Java开发学习--Java 中基本类型和包装类之间的转换

    Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...

  4. Java 基础 - 基本类型和引用类型

    ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中 ...

  5. 【Java】基本类型和引用类型(值传递)

    [关键词] [问题] · 加深对基本类型和引用类型的理解: [效果图] [分析] 參见最后的[參考资料] [解决方式] [代码] public void test() throws Exception ...

  6. java中基本类型和包装类型实践经验

    至今,小菜用java快两年了,有些事,也该有个总结. 基本类型和包装类型的概念在本文不作赘述. 如果这两种类型直接使用,倒没什么值得讨论的,无非就是自动装箱拆箱,java可以让你感觉不到他们的存在,但 ...

  7. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  8. java的基本类型和对应的封装类

    封装,是java这门语言的重要核心思想之一,封装也是对面向对象这一思想很好的体现. 在很多情况下,我们需要对数据进行一些转换,如:将一字符串"123"转换成int类型的123,或者 ...

  9. Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换(Wrapper类)

    基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱 ...

随机推荐

  1. JVM内存模型(五)

    一.JVM内存模型 1.1.与运行时数据区     前面讲过了运行时数据区那接下来我们聊下内存模型,JVM的内存模型指的是方法区和堆:在很多情况下网上讲解会把内存模型和运行时数据区认为是一个东西,这是 ...

  2. High ASCII字符从bat文件到dos控制台的转化问题

    背景是这样的,由于项目需要,需要用silent install的方式安装一些程序,而安装参数中有一些High ASCII字符,如ùé.通过代码,使用默认编码(ANSI,说明下,我用的是法语的系统)创建 ...

  3. 关于protected在子类创建父类对象无法访问父类protected方法或成员

    子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的.注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法. 请参见Ja ...

  4. Linux常用命令精华讲解 上部 (下部下回分解)不要催很忙的

    Linux常用命令讲解 1.Linux命令基础 2.Linux命令帮助 3.目录与文件的基操 1.Shell是系统中运行的一种特殊程序在用户和内核之间充当"翻译官"的角色,登录li ...

  5. 安装Linux8.3.2011

    镜像地址:http://mirrors.aliyun.com/centos/8.3.2011/isos/x86_64/ 非DVD镜像安装时的安装源地址:http://mirrors.aliyun.co ...

  6. 500行代码了解Mecached缓存客户端驱动原理

    原创不易,求分享.求一键三连 缓存一般是用来加速数据访问的效率,在获取数据耗时高的场景下使用缓存可以有效的提高数据获取的效率. 比如,先从memcached中获取数据,如果没有则查询mysql中的数据 ...

  7. Lesson12——NumPy 字符串函数之 Part1:字符串操作函数

    NumPy 教程目录 1 NumPy 字符串函数 以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作. 它们基于 Python 内 ...

  8. Solution -「ZJOI 2016」「洛谷 P3352」线段树

    \(\mathcal{Descrtiption}\)   给定 \(\{a_n\}\),现进行 \(m\) 次操作,每次操作随机一个区间 \([l,r]\),令其中元素全部变为区间最大值.对于每个 \ ...

  9. CentOS 7 下编译安装 4.14 内核

    文章目录 rpm升级 编译升级 升级前 下载安装包 编译内核 更新启动引导 修改默认启动内核 重启之后验证 rpm升级 # rpm的方式升级内核 1.载入内核公钥 [root@localhost ~] ...

  10. nginx负载均衡初体验

    本例采取简单的轮询策略进行nginx的负载均衡处理. 在反向代理(参考:https://www.cnblogs.com/ilovebath/p/14771571.html)的基础上增加负载均衡处理的n ...