enum枚举类型的用法
1)有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
2)枚举,能让我们的代码可读性更强。
3)向枚举中添加新方法如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
4)覆盖枚举的方法
5)实现接口所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
6)使用接口组织枚举
反码补码原码含义
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。
以下都以8位整数为例,
原码就是这个数本身的二进制形式。
例如
0000001 就是+1
1000001 就是-1
正数的反码和补码都是和原码相同。
负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。
为什么要设立补码呢?
第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补
第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)
有人会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个
又例:
1011
原码:01011
反码:01011 //正数时,反码=原码
补码:01011 //正数时,补码=原码
-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1
0.1101
原码:0.1101
反码:0.1101 //正数时,反码=原码
补码:0.1101 //正数时,补码=原码
-0.1101
原码:1.1101
反码:1.0010 //负数时,反码为原码取反
补码:1.0011 //负数时,补码为原码取反+1
在计算机内,定点数有3种表示法:原码、反码和补码
所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
同名屏蔽原则
1:使用当前语言规定的合法字符(最好是英文)。记住当前语言(甚至是大多数语言)的关键字,不起关键字的名字。
比如:C语言不支持中文名字,而Java支持,等等等。。。
2:见名知意,看到这个变量名就应该大概知道是用来做什么的。
比如:人的名字你用一个叫a的变量存储就不太合适。
3:作用域越大的变量名就越起的复杂些,或者加上限定前缀、后缀什么的。
比如:一个全局变量直接起个叫Name的变量,其他地方用起来就可能出问题。
4:注意大写的i和小写的L。这俩货如果打错,不靠编辑器找错会很困难。
比如:某变量名表示一个人是否生病:bIsIll……知道后三个是什么么。。
5:尽量不要和常用的系统类、方法重名。
比如:print这个方法,很多语言里都有。你创建一个这个方法是给自己找麻烦……
6:如果加入了某开发团队,则要熟悉该团队的命名规范,这样你好我好大家好。
比如:某团队要求变量名字前面要加类型前缀,例:bool型的前缀b啦或者怎么样。
你就是不加,然后一个Gender名的变量对阅读代码的人是个负担,这性别是按字符存储的呢?还是按Object存储的呢?还是按bool型存储的呢?
Java中每个数据类型所占的位数,和表示数值的范围
1)基本类型; 2)扩展类型。它包括 类型 描述 取值范围 Boolean 布尔型 只有两个值true、false Char 字符型
-
Byte 8位带符号整数 -128到127之间的任意整数
Short 16位无符号整数 -32768~32767之间的任意整数
Int 32位带符号整数 -2^31到2^31-1之间的任意整数
Long 64位带符号整数 -2^63到2^63-1之间的任意整数
Float 32位单精度浮点数 根据IEEE754-1985标准
Double 64位双精度浮点数 根据IEEE754-1985标准 一些提示:
不象其它程序设计语言,Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。
-
1> boolean型
在上一章的逻辑运算符中,我们就已经看到过了取值为true和false的变量,这种变量称为boolean型变量。
实例说明 源程序:test601.javapublic class test601 {public static void main(string args[]){boolean x=true;boolean y=false;System.out.println("x&&y="+(x&&y));System.out.println("x||y="+(x||y));System.out.println("x^y="+(x^y));System.out.println("!x="+(!x));}} 根据逻辑运算符的计算表可以得出x&&y=true&&false=false;x||y=true||false=true;x^y=true^false=true;!x=!true=false。
-
2 >char型
char型是用来表示字母的,它仅能表示一个单一的字母。通常char型常量必须使用单引号括起来,以与数字区分开来。下面就是一个char
型变量的实例:
char letter=’a’;
char型在Java语言中并不是很常用,因为如果要存储字符的话,一般使用扩展的数据类型string.
-
3 >整型
在Java语言中,提供了多种整型数据类型:byte、short、int、long。它们都是定义了一个整数,唯一的区别就是它们能够表示数据的范
围。
能够表示数据的范围越大,占用的内存空间也就越大,因此,在程序设计中应该选择最合适的类型来定义整数。
大家可以根据以下规律,记住它们所占的内存空间:
1) int是最基本的,它占用32位(现代计算机不就是32位机嘛!);
2) long,长的,也就是比int还长,它占用64位;
3) short,短的,也就是比short还短,它占用16位;
4) byte,字节,8位组成一个字节,当然byte就只占8位了。
根据它们所占用的内存空间不同,能够表示的数字范围也不同。占用内存空间越大,能够表示的数字范围也就越广。
实例说明 源程序:test602.java
public class test602 {public static www.gzlij.com void main(String args[]){int x=20;System.out.println(x+5);System.out.println(x*7);}}
源程序:test603.java
public class test603 {public static void main(String args[]){byte x=129;System.out.println(x+5);}}
-
4 >>浮点型
前面我们学习了存储整数的变量数据类型,现在我们还看看存储小数的变量数据类型---浮点数。在Java语言中有两种浮点数类型:float
、double。
其中float是单精度型,占用32位内存空间,而double是双精度型,占用64位内存空间。
浮点数:
浮点数这个名称是相对于定点数而言的,这个点就是小数点。浮点数就是指小数点可以根据需要改位置。