Java学习 第三章 java基础(一)

 

一、 计算机进制转换:二进制、八进制、十进制、十六进制互转

计算机系统数制概述

      • 数制是一组固定的符号和统一的规划来表示数值的方法;
      • 计算机底层使用的数制是二进制;
      • 用Java编程实用的是十进制。Java底层仍使用二进制;
      • 计算机常用的数制还有八进制和十六进制;

十进制的基本数字0~9,逢十进位。

10称做“基数”,10^n(10的n次幂)被称作“权”。

二进制的基本数字是0、1,逢2进位。

二进制的基数为2,权为2^n(2的n次方)。

十六进制基本数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十六进位

十六进制是二进制的简写,方便专业人员书写二进制数据。

16进制的基数是16,权为16^n(16的n次方)

在Java代码中十六进制用0X或0x做前缀(0是数字,不是字母)。

示例:5E十六进制=5*16^1+14*16^0 = 80+14 =94;

二进制转换成十六进制 规则: 四位二进制数相当于一位十六进制数。

十进制数转换二进制:规则:不断除以2,保留余数,商为0时不再除2.

十进制数转换十六进制:规则: 不断除以16,保留余数,商为0时不再除16.

二、变量与数据类型

1、概述

Java 定义了基本数据类型、引用数据类型和自定义数据类型;

2、栈空

      • 栈空间存取数据的效率高;
      • 栈中的数据按“先进后出”的方式管理;
      • 栈空间存储空间较小,不能存放大量的数据;
      • JMV将基础数据类型的数据存放在栈空间;

3、堆空间

      • 堆空间存取数据的效率最低;
      • 数据存放的位置随机分配;
      • 堆空间存储数据的空间大,能存放大容量的数据;

 

三、变量的定义和变量使用的原因

变量:可变的量;

常量:不可变的量;

字面量:Java的变量和常量中存放的具体数据成为字面量;

计算机的高级语言普遍使用变量来管理内存中存储的数据。

变量管理引用类型的数据:

四、变量的命名、定义和初始化

1、变量的命名

      • 首字母是英文字母、$或下划线,由字母、数字、下划线组成;
      • 变量的命名遵循见名知义的原则。
      • Java变量名建议不用中文。
      • 变量名首字母不用大写字母。
      • 用驼峰命名法命名多个单词组成的变量名。eg:sumScore
      • 变量名不要使用Java关键字。

2、变量的定义

定义变量:每个变量必需属于一种类型。

类型  变量名1,变量2,…,变量n;

e.g: byte score; //保存单科分数

short age; //保存年龄

int sumScore; //保存总分

3、变量的初始化

赋值 = 

e.g:  age = 18;

score = 60;

sumScore = 600;

五、变量的作用域

1、java用一对大括号作为语句块的范围,称为作用域。

2、作用域中的变量不能重复定义。

3、离开作用域,变量所分配的内存空间将为JVM回收。

六、基础数据类型的包装类

Java为基础数据类型提供了对应的类,这些类称作包装类,如下图

1、包装类中封装了一些很实用的方法和常量。例如:Byte.MIN_VALUE是Byte类中的一个常量,存放了byte类型数据的最小值。

2、包装类在集合中用来自定义集合元素的类型。

3、使用包装类

Integer.MIN_VALUE: int类型的最小值:-2^31

Integer.MAX_VALUE: int类型的最大值:2^31-1

int Integer.parseInt(String sInteger);

作用:将字符串类型的整数转换为int类型的数据。

String Integer.toBinaryString(int value);

作用:将十进制数转化为二进制,返回结果String类型。

String Integer.toHexString(int value);

作用:将十进制数转换为十六进制,返回结果String类型。

七、二进制补码

1、概述

计算机系统的内部一二进制形式存储数据。

在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是是进制。

2、补码规则

      • 在计算机系统中,数值一律用二进制的补码来储存。
      • 二进制的最高位是符号位,0表示正数,1表示负数。
      • 正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反,再加1.  
      • 两数相加,若最高位(符号位)有进位,则进位被舍弃。

3、为什么使用补码

      • 可以将符号位和其他位统一处理。
      • 最高位不再表示数值,而是作为符号位,正好将数值折半,即一半是0至正数,一半是负数。eg :4位 二进制数共有16个数,用补码表示,则一半是0~7,一半是-1~-8. 8位 二进制数共有256个数,用补码表示,则一半是0~127,一半是-1~-128.
      • 减法也可按加法来处理。

4、补码运算的特征

      • 计算机中正数和负数的关系是取反加一。
      • 补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出。
      • 4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7.
      • 8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127.
      • 16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767.
      • 32位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-1.

5、补码运算的原理

正数+负数 = 模

模:某种类型数据的总数,例如:

4位二进制的模是2^4=16

因此,负数=模-正数,这就是逐位取反加1的原因。

八、整数、浮点、字符类型

1、整数类型

      • Java有四种整数类型:byte、short、int、long。
      • Java默认整数计算的结果是int类型。
      • 整数的字面量是int类型。
      • 若字面量超过int类型的最大值,则字面量是long类型,那么后面要用L(或l)表示该值是long类型。eg: long longValue = 300000000L  

2、浮点类型

      • 浮点类型用于表示小数的数据类型。
      • 浮点数原理:也就是二进制科学计数法。
      • Java的浮点类型有float和double两种。
      • Java默认浮点类型计算的结果是double类型,字面量也是double类型。若要给float类型的变量赋字面量的值,则要在字面量后面加F(或f)。eg : float f=5.3;将会出现编译错误,正确的赋值是:float f=5.3f;

浮点数科学计算法:

      • 十进制浮点数科学计数法:219345=2.19345*(10^5)
      • 二进制浮点数科学计数法:10111=1.0111*(2^100)

float类型:

      • float类型共32位,1位为符号位,指数8位,为数32位。
      • float的精度是23位(即能精确表示23位的数,超过就被截取了)。小数是以尾数长度来表示精确度的,比如pi=3.1415的精度是4位。
      • float存储数据的范围大于int类型,但精度比int要小,因为int的精度是31位。

double类型

      • double类型,1位符号位,11位指数,52位尾数。
      • double范围远远大于long,但double精度不如long(long存储数据的位数是63位)。

浮点运算的特点:

浮点运算就是实数运算,由于计算机智能存储整数,所以实数都是约数,这样浮点运算是很慢的而且会有误差。

3、字符类型

      • char类型的字面量可以是一个英文字母、字符或者一个汉字,并且由单引号包括。eg:’A’.
      • Java底层使用一个16位的整数来处理字符类型,该数值是一个字符的unicode编码值。

unicode编码:

      • unicode编码是全球范围内的编码方法。
      • unicode编码的英文部分与ASCII码兼容(ASCII表示范围0~128),同时英文字符和数字是连续编码的。
      • Java在处理char类型的数据时,在底层是按unicode码来处理的。

编码:

计算机硬件系统智能用0和1表示数,我们人为地做了规定,某个数还可以表示一个字符。eg:65表示A。

 

 

参考:极客学院课程 http://ke.jikexueyuan.com/zhiye/javaweb/

posted @ 2017-11-29 17:09  Belinda_sl  阅读(212)  评论(0编辑  收藏  举报