首页 Java java教程 Java数据类型和字符集的介绍

Java数据类型和字符集的介绍

Nov 16, 2018 pm 03:45 PM
java

本篇文章给大家带来的内容是关于Java数据类型和字符集的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

什么是数据类型

简单理解就是数据的类型。

what?数据怎么会有类型?数据难道不就是0或者1组成的字节码吗?

没错,在计算机中,只能存储0或者1,也就是说从存储的角度来看,根本没有类型这种东西,它们确实不过就是0或者1组成的字节码。

那为什么还会有数据类型?

因为,类型是相当于编程者(人)来说的,人把数据分成不同的类型,方便理解,方便计算。

比如:

 int a = 0x61;
 char b = 0x61;
 float c = 0x61;
 double d = 0x61;
 System.out.println(a+" "+b+" "+c+" "+d);
登录后复制

输出结果是:97 a 97.0 97.0。

四个不同类型的变量,给与相同的字节码0x61,但是输出竟然不同!why?

因为编程者(人)给0x61这个16进制数赋予了类型,或者说给它赋予了含义。

为什么要赋予类型(含义)?是为了让0或1的字节码能够表示更具体的东西,或是说把它映射为人能理解的东西。

不设置类型,也可以对0x61这个数进行各种运算,但是。。。what is the meaning?

没有意义,对于一个整数进行加减乘除具有现实意义,对于一个字符小写变大写具有现实意义,可是对于一个二进制数的操作却是没有意义的。人不能理解的事情是没有意义的。

那么什么是数据类型?

就是人看待数据的方式,人理解数据的方式,人规定数据的方式,这就是数据类型。

数据之所以有类型,那取决于人的看法,而不却决于数据本身,数据本身是没有类型的。

为什么上面程序的输出不同?

因为输出就是把数据变成人想要的格式显示给人看。

计算机怎么知道人想要什么格式?通过数据类型!

当0x61被规定为int型时计算机就知道应该显示十进制数6*16+1 = 97。

当0x61被规定为char型时计算机就知道应该显示十进制数6*16+1 = 97代表的ascii码所对应的字符'a'。

虽然它们在计算机中都是同一个字节码0x61,但是因为人规定了类型,所以计算机才返回不同的结果。

从编解码的角度来看

编码是信息从一种形式或格式转换为另一种形式的过程,解码,是编码的逆过程。

具体来讲编码就是,把人理解的东西转换为计算机理解的东西,而解码则是把计算机理解的东西转换为人理解的东西。

计算机理解什么?只理解0和1,人呢?almost everything。

它们之间转换的桥梁是什么?就是数据类型!人只有规定了数据的类型,规定人所理解的事情如何转换为计算机理解的字节码,才能完成这种转换!

举例:

对于97这个数字,人可以理解它为一个十进制数,但是计算机只能理解0或者1,那么如何让计算机理解?给97编码。how?如果用二进制编码,则把97变成了1100001这个数。这样计算机就理解(能存储和计算)了,那么人怎么理解1100001这个二进制码呢?计算机在显示的时候把1100001这个数进行二进制解码,解码成97,人就理解了,而之所以能转换,是因为规定了二进制编码解码的规则,并且规定了它是个整数。而对于'a'这个字符,人理解为它是一个小写字母a,如何让计算机理解?还是编码?编什么码?编ASCII码,'a'的ASCII码是1100001,这样计算机又理解(能存储和计算)了,计算机如何让人理解1100001,解码!ASCII解码,就变成了'a',这样人就又理解了!。

不同的事物,使用不同的编码方式可能得到相同的二进制码,而相同的二进制码,使用不同的解码方式会被理解为不同的事物!

从本质上来讲什么是数据类型?

其实就是数据的编解码的方式!!!

最后,什么是字符集?

就是对字符的编码解码的方式!

不同字符集,规定了字符的编码(字符转换为二进制数)和解码(二进制数转换为字符)方式。

System.out.println("你好".getBytes("utf-8") );
System.out.println("你好".getBytes("gbk") );
登录后复制

输出:

[B@677327b6
[B@14ae5a5

可以看到不同的字符集(utf-8和gbk)把相同的中文"你好",编码成了不同的二进制码。

当然,上面输出并不是0和1,显然不是二进制码。。。那是因为计算机显示的时候把二进制码使用ASCII码帮你解了码。。。都变成了ASCII字符。why?我并不想让它解码,但是显示就是解码!!!

当然通过一些技巧可以输出二进制的字符串,但是这个不是重点,这里就不给出了。

最后的最后

计算机最早在什么领域应用了编解码?

汇编语言!

计算机命令也是二进制码,把汇编语言的英语单词变成二进制码就是编码,而把二进制码变成汇编语言的单词就是解码!


以上是Java数据类型和字符集的介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java 中的完美数 Java 中的完美数 Aug 30, 2024 pm 04:28 PM

Java 完美数指南。这里我们讨论定义,如何在 Java 中检查完美数?,示例和代码实现。

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java 版 Weka 指南。这里我们通过示例讨论简介、如何使用weka java、平台类型和优点。

Java 中的史密斯数 Java 中的史密斯数 Aug 30, 2024 pm 04:28 PM

Java 史密斯数指南。这里我们讨论定义,如何在Java中检查史密斯号?带有代码实现的示例。

Java Spring 面试题 Java Spring 面试题 Aug 30, 2024 pm 04:29 PM

在本文中,我们保留了最常被问到的 Java Spring 面试问题及其详细答案。这样你就可以顺利通过面试。

突破或从Java 8流返回? 突破或从Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

Java 中的时间戳至今 Java 中的时间戳至今 Aug 30, 2024 pm 04:28 PM

Java 中的时间戳到日期指南。这里我们还结合示例讨论了介绍以及如何在java中将时间戳转换为日期。

Java程序查找胶囊的体积 Java程序查找胶囊的体积 Feb 07, 2025 am 11:37 AM

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4

创造未来:面向零基础的 Java 编程 创造未来:面向零基础的 Java 编程 Oct 13, 2024 pm 01:32 PM

Java是热门编程语言,适合初学者和经验丰富的开发者学习。本教程从基础概念出发,逐步深入讲解高级主题。安装Java开发工具包后,可通过创建简单的“Hello,World!”程序实践编程。理解代码后,使用命令提示符编译并运行程序,控制台上将输出“Hello,World!”。学习Java开启了编程之旅,随着掌握程度加深,可创建更复杂的应用程序。

See all articles