数据转换

变量在第(3)篇中有讲到过八种数据类型,分别是能够用来表示整型的 byte、short、int、long 和表示浮点型的 float、double 以及字符型 char、布尔型 boolean。

那就又衍生了一个问题:我怎么让 int 型的 1 转成 byte 型的 1 呢?
so easy,把 byte 型变量赋值给 int 型就可以啦~

byte a = 1;
int b = a; // 这时候b的值就会是1了

像这样就完成了转换。

然鹅,这里要注意的是因为是从范围小的 byte 转成范围大的 int,所以可以直接转。那么如果是从范围大的 int 转成范围小的 byte 呢?
我们就需要给后面的值做一个强调,like this:

int a = 1;
byte b = (byte) a;

这个操作【(byte)】就是强转了。当然,如果 a 是超过了 byte 的范围 - 128~127 的话,那么就会丢失精度。比如:

int a = 130;
byte b = (byte)a;
System.out.println("b="+b);

130 超过 127 了吧,我们看看运行结果:

 
结果并不是 130:
 

是的,结果果然就不是 130,而变成了 - 126。Java 在这个强转之后把多余的 2 加上了 (-128) 就成了 - 126 了。所以呀,强转要注意范围区间哟!

好了,讲到这里,需要给三个定义了:

  1. 优先级:是根据数据类型分配空间的大小,取值范围的不同来划分。(按字节呗,详见下表)
  2. 从优先级低的数据类型转成优先级高的数据类型是可以直接进行转换的,这种转换就叫隐式类型转换。
  3. 从优先级高的数据类型转成优先级低的数据类型是不能直接进行转换的,需要进行强转,这种转换就叫显式类型转换。
 
上次写的数据类型表

引用类型

除了上表中八种基本类型之外,Java 还有一种比较特殊的类型,叫引用类型。
引用了,就是在别的地方写好了,我在这里用嘛~ Java 的引用类型只想的是一个对象,不是像 byte、int 这种是一个原始值。

当然了,既然叫引用类型,那么根据它引用的对象的不同,我们大致上可以把引用类型分为三种,类、接口和数组。(就这么一说,之后再仔细讲)。
那么怎么用呢?比如说我这里有个用户实体类(User),那么我们用的时候就是

User user = new User();

这里的user变量就是引用类型啦~
当然,常用的 String 也是一个类,

String str = "ahan";

这个 str 也是引用类型哦~

以上,阿里嘎多,20190406 from ahanwhite。

Java 基础(5)——数据转换 & 特殊的引用类型的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  3. Java基础进阶整理

    Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...

  4. java 基础题 很基础, 很有趣

    都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底, 老手们就不用进来了,免得笑话我们这些未出校门的孩纸们, ...

  5. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  6. java 基础拾漏

    1.java语言支持的类型非为两类:基础类型(primitive Type) 和引用类型(Reference Type),基础类型8种 2.数组元素的类型是基本类型中的整数类型(byte,short, ...

  7. java基础要点

    Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...

  8. 【概念笔记】JAVA基础 - part1

    IT`huhui前言录 这是自己对JAVA基础的一个小总结,会不断完善.因为时间仓促的原因. 每学习一段时间,停下来,静心总结一下,甚好.停停走,走走停,一往无前,不摔倒. 一些链接里面是我看到一些人 ...

  9. Java基础-String、StringBuffer、StringBuilder

    看下面这段代码: public class Main { public static void main(String[] args) { String string = ""; ...

  10. Java基础——数组Array

    一.数组基本概念 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 数组有三 ...

随机推荐

  1. 包(package)

    一个文件夹管理多个模块文件,这个文件夹就被称为包,如下: 既然是多个模块文件,那么涉及多个模块怎么导入呢? ***当前路径下包之间模块导入: import wsg ***不同路径下包之间模块导入: f ...

  2. 小记一次shellscript的麻烦

    小记一次shellscript的麻烦 一.起因: 之前写过篇文章 文本分析实例 ,大致的内容就是对 "nginx的web服务器进行日志分析,删除不被访问的截图". 点我打开哔哩哔哩 ...

  3. python模块之——tqdm(进度条)

    from tqdm import tqdm for i in tqdm(range(10000)): """一些操作""" pass 效果: ...

  4. 图论 竞赛图(tournament)学习笔记

    竞赛图(tournament)学习笔记 现在只是知道几个简单的性质... 竞赛图也叫有向完全图. 其实就是无向完全图的边有了方向. ​ 有一个很有趣的性质就是:一个tournament要么没有环,如果 ...

  5. 二叉搜索树 思想 JAVA实现

    二叉搜索树:一棵二叉搜索树是以一棵二叉树来组织的,这样一棵树可以使用链表的数据结构来表示(也可以采用数组来实现).除了key和可能带有的其他数据外,每个节点还包含Left,Right,Parent,它 ...

  6. js中奇怪的问题 同步ajax,modal遮罩层

    奇怪问题一 今天有一段js执行的时候出现了问题 $.ajax({ ..., async:false, ... }); $('#myModal').modal('hide'); loadcurrentp ...

  7. 使用百度地图API查地理坐标

    在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...

  8. eAccelerator 配置参数详解

    eAccelerator配置参数如下: [eaccelerator]extension=eaccelerator.soeaccelerator.shm_size="64"eacce ...

  9. oracle使用已有vid快速新建虚拟机

    有时候需新建虚拟机,但是每一次新建都花费很多时间,这里在oracle中快速新建虚拟机,只需要复制已有的vdi,然后修改uuid即可   windows下在cmd下输入命令 cd C:\Program ...

  10. docker编排工具,docker-compose下载与安装

    安装很简单,但是难免会遇到问题:1.安装curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compos ...