“ 勤能补拙是良训,一分辛劳一分才。”
Java数据类型是我们学习java必须掌握的清楚的知识,今天我们一起来聊聊关于数据类型以及字节数的知识。
01
—
![1ca65338235027b3cf98804a8f1a9ed2.png](https://i-blog.csdnimg.cn/blog_migrate/11f83fba5c2ef6b9e35eb37d90bcd489.png)
Java数据类型分类
java数据类型的具体分类如下图:
今天我们主要说一下java基本数据类型的分类。
Java一共有8种基本数据类型(原始数据类型):类型 存储要求 范围(包含) 默认值 包装类整 int 4字节(32位) -231~ 231-1 0 Integer数 short 2字节(16位) -215~215-1 0 Short类 long 8字节(64位) -263~263-1 0 Long型 byte 1字节(8位) -27~27-1 0 Byte浮点 float 4字节(32位) -3.4e+38 ~ 3.4e+38 0.0f Float类型 double 8字节(64位) -1.7e+308 ~ 1.7e+308 0 Double字符 char 2字节(16位) u0000~uFFFF(‘’~‘?’) ‘0’ Character (0~216-1(65535))布尔 boolean 1/8字节(1位) true, false FALSE Boolean
在移动开发中由于移动设备内存的局限性,往往需要考虑使用的数据类型所占用的字节数。下面简单介绍下Java中几种基本数据类型,以加深记忆。在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示
Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。(一个字节等于8个bit)。
按照所占字节大小排序为:
byte→short(char)→int→long→float→double
02
—
![1ca65338235027b3cf98804a8f1a9ed2.png](https://i-blog.csdnimg.cn/blog_migrate/11f83fba5c2ef6b9e35eb37d90bcd489.png)
电脑中的字节
电脑分为32位和64位的操作系统,不同操作系统的字节数量不一样。我们电脑中的所有文件都是以字节(byte)为单位的,但是电脑存储数据的最小单位是位(bit)。在第一节我们介绍了基本数据类型其中都使用字节来表示存储数据的大小类型 | 所占字节 |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | 2 |
字节数 | 编码 |
1 | GB2312 |
1 | GBK |
1 | GB18030 |
1 | ISO-8859-1 |
1 | UTF-8 |
4 | UTF-16 |
2 | UTF-16BE |
2 | UTF-16-LE |
中文汉字:我
字节数 | 编码 |
1 | GB2312 |
2 | GBK |
2 | GB18030 |
1 | ISO-8859-1 |
3 | UTF-8 |
4 | UTF-16 |
2 | UTF-16BE |
2 | UTF-16-LE |
package com.xingyun.stringbytelength; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException; import org.dozer.loader.api.FieldDefinition; public class StringByteLength { /* * GB2312 GBK GB18030 ISO-8859-1 UTF-8 UTF-16 UTF-16BE UTF-16LE */ public static void main(String[] args) throws IOException { String s1 = "a"; String s2 = "我"; System.out.println(s1 + " GB2312 " + s1.getBytes("GB2312").length); System.out.println(s1 + " GBK " + s1.getBytes("GBK").length); System.out.println(s1 + " GB18030 " + s1.getBytes("GB18030").length); System.out.println(s1 + " ISO-8859-1 " + s1.getBytes("ISO-8859-1").length); System.out.println(s1 + " UTF-8 " + s1.getBytes("UTF-8").length); System.out.println(s1 + " UTF-16 " + s1.getBytes("UTF-16").length); System.out.println(s1 + " UTF-16BE " + s1.getBytes("UTF-16BE").length); System.out.println(s1 + " UTF-16LE " + s1.getBytes("UTF-16LE").length); System.out.println("---------------"); System.out.println(s2 + " GB2312 " + s2.getBytes("GB2312").length); System.out.println(s2 + " GBK " + s2.getBytes("GBK").length); System.out.println(s2 + " GB18030 " + s2.getBytes("GB18030").length); System.out.println(s2 + " ISO-8859-1 " + s2.getBytes("ISO-8859-1").length); System.out.println(s2 + " UTF-8 " + s2.getBytes("UTF-8").length); System.out.println(s2 + " UTF-16 " + s2.getBytes("UTF-16").length); System.out.println(s2 + " UTF-16BE " + s2.getBytes("UTF-16BE").length); System.out.println(s2 + " UTF-16LE " + s2.getBytes("UTF-16LE").length); } /** * 将转码后的文字写入文件,通过编辑器打开测试,确认写入的是相应编码 * * @param bytes * @throws IOException */ public void writeFile(byte[] bytes) throws IOException { String path = StringByteLength.class.getResource("/").getPath(); System.out.println(path); String file_path = path + "charsetFile"; File file = new File(file_path); if (!file.exists()) { file.createNewFile(); } FileOutputStream out = new FileOutputStream(file); out.write(bytes); out.close(); }}
总结:在开发总我们要时刻清楚我们当前的开发环境,统一环境、统一编码这样才能够减少错误的出现。
![10ca9d1d4c44c2bae6528a0c8b5567fb.png](https://i-blog.csdnimg.cn/blog_migrate/4d4471de5478e94edd8f36865a2abe0c.png)
作者:星云大圣
审稿:Nebula xiaoxing
编辑:Nebula xiaoxing
![b25abcb3dc6ba1011292abc067679fe8.gif](https://i-blog.csdnimg.cn/blog_migrate/a00854e903dd6ca104cdf060d1cf3c6f.gif)
2020年6月29日星云科技暑期班如约而至
JAVA高级开发班、Linux云计算9月班火热预报名
咨询请联系吕老师:
Tel/VX:13992827407
QQ:54020094
*版权申明:
转载文章和图片均来自公开互联网,版权归作者本人所有,推送文章除无法获取出处外,我们都会注明作者和来源,如有侵权,请与我们联系删除或授权。