第二章 java语言中的数据与运算符

来源:互联网 发布:skype business mac 编辑:程序博客网 时间:2024/05/06 19:57

2.1 数制

在使用电脑时会遇到文字、图像、声音等信息,电脑是如何识别这些数据呢?首先,这取决于计算机底层硬件是如何识别数据的,计算机机底层硬件只能识别0和1,这种只能1和0两个数字符号的组合被称为二进制。如计算机处理128,会将其转化为10000000.这样就显得太麻烦,后来就引进了八进制、十六进制。

二进制 逢二进一

八进制 逢八进一 八进制数据前面有一个0的前缀,容易与二进制产生混淆,尽量不适用

十六进制 逢十六进一,前面有一个0x的前缀

2.2 数据类型

Java语言是一种强数据类型的语言,在声明变量时,必须将变量定义为一种数据类型。java中的数据类型包括基本数据类型和对象类型。Java程序中有8大基本类型,4种整形、1种字符型、2种浮点型、1种布尔型。

  1. 字节型 ==byte== 用一个字节来表示整数值,它的范围介于-128~127之间。无论采用哪种进制表示,系统会自动转化为十进制。
public  class ByteJunit{    public static void main(String[] args){        byte x =22;        byte y = 022;        byte z = 0x22;        //输入语句省略。。。    }}//输入结果x =22y = 18z = 34
  1. 短整型 ==short== 用两个字节表示整数型,它的范围介于-32768~32767之间

  2. 整数型 ==int== 用四个字节表示整数型,它的范围介于-2^32 ~ 2^32之间

  3. 长整型 ==long== 用八个字节表示整数型,唯一不同的是数值后面需要加一个L表示,不区分大小写,如long = 23L

  4. 字符型 ==char== 占两个字节 字符型数据只能表示单个字符,使用单引号,如 char = ‘a’

  5. 单精度浮点型 ==float== 占四个字节,有效数字最长7位,包括整数和小数部分,每个浮点型的数值后面需要加F,不区分大小写。

  6. 双精度浮点型 ==double== 占8个字节,有效数字最长15位,包括整数和小数部分,每个浮点型的数值后面需要加D,不区分大小写。

  7. ==boolean== 表示是真假,有两个值true和false

为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:
- 原始类型: boolean,char,byte,short,int,long,float,double
- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

这里涉及到自动装箱/拆箱机制,

public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i <= IntegerCache.high)            return IntegerCache.cache[i + (-IntegerCache.low)];        return new Integer(i);    }

值得注意是如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象

2.3 变量

变量就是在程序运行中值可以变化的量,前面说到Java是一门强数据类型的语言,在程序设计中就必须为声明的变量分配一个数据类型,随后在声明变量的名字,行尾的分号是必须的。

int a;byte b,c;

变量的分类从作用范围来分,一般分为全局变量和局部变量,全局变量在类的整个范围内都有效,局部变量就是在类中的方法函数内或某个子类有效。作为全局变量,无需初始化,系统自动给变量赋值,除了字符型数据被赋值为空,布尔类型被赋值为false,其他一律赋值为0或0.0,值存放在堆中,随着对象的销毁而销毁;而局部变量必须进行初始化赋值,否则编译时报错,值放在栈中,随着方法调用结束而销毁;

从所属范围来分,可以分为类变量和成员变量,类变量就是用关键字“static”修饰的全局变量,她是属于类的,而成员变量时属于对象本身的。类变量不会随着类对象的变化而变化。

==static==:表明一个成员变量或者是成员方法可以在没有实例的情况能被访问。修饰成员变量和成员方法。
1. 随着类的加载而加载
2. 既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
3. 静态的内容在方法区的静态区
4. 注意在静态方法中没有this对象
5. 所有的该类的实例共享一个变量
6. Java中static方法不能被覆盖(重写),因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关。

2.4 常量

常量就是程序从开始到结束都不变的量,不可更改,在程序中使用关键字“final”来修饰,常量名一般大写。

final int BC= 20;

如果要声明一个类常量,则要这样声明

static final BC = 3O;

final:
1. 修饰类:表示该类不能被继承;
2. 修饰方法:表示方法不能被重写;
3. 修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

2.5 运算符

运算符就是在变量或常量在进行运算时,需要用到的符号。

2.5.1算术运算符

算术运算符包括:+、-、*、%、/、++、–,当使用运算符结合在一起时,首先会将两个操作数转化为相同类型的数据,低精度向高精度自动转换。注意 ++a 指 a的值先自增1,在参与运算;a+ 指先参与运算,再自增1,–a 同理。

2.5.2关系运算符

关系运算符就是指两个操作数之间的关系,包括>、<、>=、<=、==、!=

2.5.3逻辑运算符

逻辑运算符有3种,与(&&)、或(||)、非(!),分别是并且、或者、相反的意思,结果都是一个布尔结果。

2.5.4位运算符

位运算符只要针对二进制进行运算,它包括,与(&)、或(|)、非(~)、异或(^)

public class Data{    public static void main(String [] args){        int a =129;        int b =128;        int c =2;        // a的二进制 10000001  b的二进制10000000        // a&b 两个位都是1,结果才是1  二进制结果为10000000 即128        // a|b 两个位有一个1,结果就是1  二进制结果为10000001 即129        // ~c 如果位为0,结果1,否则,反之。注意非运算就是取相反的位值,而且取反        //是针对二进制所有位置而言的。什么意思呢,我们来详解下,int类型占4个字节,        //每个字节8位,对于2来说,标准的二进制应该是32位 0000000000000000000010        //二进制非运算后11111111111111111111101,最高位表示符号,1为负数,然后        //负数的二进制是它的绝对值取反在加1,结果是00000000000000000011,最高位是        //1,表示负数,所以结果是-3,        // a^b 相同则为0,不同则为1  ,二进制的结果为00000001,即1    }}

2.5.5移位运算符

移位运算符也是针对二进制的位,包括左移(<<),右移(>>>),带符号的右移(>>),左移就是向左移n位,相当于乘上2的n次方;右移就是向右移,相当于除以2的n次方;带符号的右移,向右移动指定的位数。如果是正数则在高位补0,负数则在高位补1

2<<2 = 2*2^2 = 816>>>2 =16/2^2 = 416>>2 = 00010000->00000010 = 4-16>>2 =11101111->11111011 = -4
阅读全文
0 0
原创粉丝点击