Java基础语法(三)_深入理解数据类型-corejava-5

7 篇文章 0 订阅
6 篇文章 0 订阅

目标:
1.对各种数据类型有一个更加清晰的概念

一、boolean类型:只能是true或false

 		位置						boolean类型变量取值   
	====================================================================
  	   Java源程序            		 只能是true或false
       class文件            	  用int或byte表示boolean 0 非0
       虚拟机中               用整数0来表示false, 有任意一个非零整数表示true

      强调,在Java源程序中不允许把整数或null赋给boolean类型的变量,
      这是有别于其它语言(如c语言)的地方. 例:
             boolean isMarried = 0;          //编译出错,提示类型不匹配
             boolean isMarried = null;       //编译出错,提示类型不匹配

二、char类型:本质是一个无符号的整数

  1.Java语言采用UCS-2字符编码,字符占2个字节(1个字节8位),一个数字对应一个字符。字符本质是一个整数,可以进行+,-运算,会先转换为int类型

     字符a的二进制数据形式为 0000 0000 0110 0001
          十六进制数据形式为 0x0061
          十进制数据形式为 97
          
    所以:  以下4种赋值方式是等价的:
                char c = 'a';
                char c = '\u0061';      //设定"a"的十六进制数据的Unicode字符编码
                char c = 0x0061;        //设定"a"的十六进制数据的Unicode字符编码
                char c = 97;            //设定"a"的十进制数据的Unicode字符编码

 2.转义字符
 	1.原因: Java编程人员在给字符变量赋值时,通常直接从键盘输入特定的字符,而不会使用Unicode字符编码,因为很难记住各种字符的Unicode字符编码值。 
 	对于有些特殊字符,比如单引号,如不知道它的Unicode字符编码,直接从键盘输入编译错误:
 		 char c = ''';           //编码出错
		 为了解决这个问题,可采用转义字符来表示单引号和其他特殊字符: 

	简而言之:无法直接用字符表示,书写到源文件中。用转义字符来代替这些特殊字符。
	2.规则:转义字符以反斜杠开头
	3.常用转义字符:
      \n           换行符,将光标定位到下一行的开头;
      \t           垂直制表符,将光标移到下一个制表符的位置;
      \\           反斜杠字符
      \'           单引号字符

三、整数类型

1.分类: 
	byte, short, int和long都是整数类型,并且都是有符号整数。
	char为无符号整数。
	
2.区别:在于把二进制数转换为十进制整数的方式不一样。
  		有符号整数把二进制数的首位作为符号数,当首位是0时,对应十进制的正整数,当首位是1时,对应十进制的负整数。
  		无符号整数没有所谓的符号位,都是正数或0
3.表示方式:
   在Java语言中,为了区分不同进制的数据,二进制以"0b"开头八进制数以“0”开头,十六制以“0x”开头。
   如:		    
   				int a0 = 0b11
    		    int a1 = 012;                 //012为八进制数,变量a1的十进制取值为10
                int a2 = 0x12;                //0x12为十六进制数,变量a2的十进制取值为18
                int a3 = 12;                  //12为十进制数,变量a3的十进制取值为12
                
                注意:后面的数值不能大于其进制数,
                二进制不能超过1,八进制不能超过7,十六进制不能超过F,否则报错
  
   可以调用以下方法转换
  	    二进制转十进制 
	    Integer.valueOf("0101",2).toString() 
	    另外还有
	    十进制转成十六进制: 
	    Integer.toHexString(int i) 
	    十进制转成八进制 
	    Integer.toOctalString(int i) 
	    十进制转成二进制 
	    Integer.toBinaryString(int i) 
	    十六进制转成十进制 
	    Integer.valueOf("FFFF",16).toString() 
	    八进制转成十进制 
	    Integer.valueOf("876",8).toString()
	    
 4.注意点:
 	long类型后面要加上l或L
 	赋值byte,short,int类型时不能超过对应的范围

四、浮点类型

1.浮点类型表示有小数部分的数字。

2.两种浮点类型:
		loat: 占4个字节,共32位,称为单精度浮点数;
        double: 占8个字节,共64位,称为双精度浮点数;
        
3. 双精度比单精度表示的位数大精确的位数多,
   简单地说, float表示的小数点位数少,double能表示的小数点位数多!
   
4.在默认情况下,如果直接构建带有小数的数字(或十进制科学计数法表示的数字),
  表示的是double类型,可以把它直接赋值给double类型变量。
  
5.代码:
	float f1 = 1.0                    //编译错误,必须进行强制类型转换;
	float f2 = 1;                     //合法,把整数1赋值给f2,f2的取值1.0;
	float f3 = (float)1.0;            //合法,f3的取值为1.0;
	float f4 = (float)1.5E+55;        //合法, 1.5E+55超出了float类型的取值范围, f4的取值为正无穷大
 	System.out.println(f3);           //打印1.0;
 	System.out.println(f4);           //打印Infinity

六、字符编码

        Java语言对文本字符采用Unicode字符编码。由于计算机内存只能存取二进制数据,因此必须为各个字符进行编码。
        所谓字符编码,是指用一串二进制数据来表示特定的字符。常见的字符编码包括:

        a. ASCII字符编码
           ASCII--Amecian Standard Code for Information Interchange(美国信息交换标准代码). 主用于表达现代英语
           和其他西欧语言中的字符。它是现今最通用的单字节编码系统,它只用一个字节的7位,一共表示128个字符。

        b. ISO-8859-1字符编码
           又称为Latin-1, 是国际标准化组织(ISO)为西欧语言中的字符制定的编码,用一个字节(8位)来为字符编码,与
           ASCII字符编码兼容。所谓兼容,是指对于相同的字符,它的ASCII字符编码和ISO-8859-1字符编码相同。

        c. GB2312字符编码
           它包括对简体中文字符的编码,一共收录了7445个字符(6763个汉字+682个其他字符. 它与ASCII字符编码兼容。

        d. GBK字符编码 windows系统
           对GB2312字符编码的扩展,收录了21886个字符(21003个字符+其它字符), 它与GB2312字符编码兼容。

        e. Unicode字符编码:
           由国际Unicode协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码。
           UCS(Universal Character Set)是指采用Unicode字符编码的通用字符集。
           Unicode具有两种编码方案:
           . 用2个字节(16位)编码,被称为UCS-2, Java语言采用;
           . 用4个字节(32位)编码,被称为UCS-4;

        f. UTF字符编码 unix操作系统使用
           有些操作系统不完全支持16位或32位的Unicode字符编码,UTF(UCS Transformation Format)字符编码能够把
           Unicode字符编码转换为操作系统支持的编码,常见的UTF字符编码包括UTF-8, UTF-7和UTF-16.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值