黑马程序员——Java基础---数据类型、编码解码

------- android培训java培训、期待与您交流! ----------


数据类型

Java中数据类型包含两大类:

基本类型(primitivetypes)

基本类型直接包含值,每种基本类型所占存储空间是固定的,它们的大小并不像其他大多数语言那样随着机器硬件架构的变化而变化,这使得java语言相对于其他语言来说可移植性更强。

引用类型(referencetypes)

引用类型引用对象,对象内封装着各种数据。基本数据类型和引用数据类型之间具有一定的关系,通过基本数据类型包装类可以将基本数据类型转换成对象来操作。

基本类型

大小

最小值

最大值

包装器类型

boolean

-

-

-

Boolean

char

16-bits

Unicode 0

Unicode 216-1

Character

byte

8-bits

-128

+127

Byte

short

16-bits

-215

+215-1

Short

int

32-bits

-231

+231-1

Integer

long

64-bits

-263

+263-1

Long

float

32-bits

IEEE754标准

IEEE754标准

Float

double

64-bits

IEEE754标准

IEEE754标准

Double

 

基本数据类型对象包装类的最常用方式就是基本数据类型和字符串类型之间做转换

基本数据类型转成字符串

     1.基本数据类型用双引号例如“123”

     2.包装器类型.toString(基本数据类型值)如:Integer.toString(34);//将34整数转成“34”

字符串转成基本数据类型 

    1. parseInt(String s);将字符串转成整数

在java 5.0之后出现对基本数据类型进行隐式拆箱、装箱功能,大大方便了代码书写。

class IntegerDemo
{
     public static void main(String[] args)
     {
          Integer x=new Integer(4);//新特性之前的基本数据类型通过包装类转成对象
          Integer x=4;//x为引用类型变量指向对象,此处4为对象,具有隐式装箱也即4=new Integer(4)
          x=x+2;//此处为隐式对象拆箱,虽然方便了书写,但是代码健壮性受到影响,可能导致空指针异常
     }
}

 

编码、解码

       计算机处理数据和我们人类处理数据方式是不同的,人类通过自己的感官来认识世界,通过语言、图像来表达我们的感受。计算机不一样,它们只能识别电路的开和关,想要计算机帮人类处理数据首先让其读懂我们的语言,这其中就涉及到编码、解码。

计算机一系列的开关动作记录下来演变为二进制数据,二进制通过进制转换变成八进制、十进制、十六进制。

class StringDemo
{
     public static void main(String[] args)
     {
          sop(Integer.toBinaryString(6));//将十进制的6转成二进制
          sop(Integer.toHexString(30));//将十进制的30转成十六进制
         sop(Integer.toOctalString(30));//将十进制的30转成八进制
          sop(("将十六进制的30转成十进制:"+Integer.parseInt("30",16)));//将十六进制的30转成十进制
          sop(("将八进制的30转成十进制:"+Integer.parseInt("30",8)));//将八进制的30转成十进制
          sop(("将二进制1111001101转成十进制:"+Integer.parseInt("1111001101",2)));//将二进制的1111001101转成十进制
     }
     public static void sop(Object obj)
     {
          System.out.println(obj);
     }
}

二进制通过编码表与人类文字关联,由于世界上各个国家民族之间语言的多样性,也就有了各种各样的编码表。我们常用的码表为GBK(中国标准编码表)、UTF-8(世界通用编码表为Unicode的一种实现方式)。

编码:字符串变成字节数组    str.getBytes(charsetName)

解码:字节数组变成字符串    new String(byte[] charsetName)

解码用错码表,可以再用该错码表进行编码,之后再用正确码表解就能得出
正确结果。注意错码表和正确码表之间没有交集才行。

import java.util.*;
class EncodeDemo
{
     public static void main(String[] args)throws Exception
     {
          String s="你好";
          byte[] b1=s.getBytes("gbk");//将字符串通过gpk编码
          System.out.println("你好gbk编码:"+Arrays.toString(b1));//输出编码
          String s2=new String(b1,"iso8859-1");//错误解码
          System.out.println("错误解码,iso8859-1:"+s2);//输出错误解码
          byte[] b2=s2.getBytes("iso8859-1");//将乱码用错码表再编码
          System.out.println("乱码再编码:"+Arrays.toString(b2));
          String s3=new String(b2,"gbk");
          System.out.println("正确解码,gbk:"+s3);
         }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值