第二章 java编程基础(一)

1、变量与标识符

数学名词:

   变数或变量,是指没有固定的值,可以改变的数。变量以非数字的符号来表达,一般用拉丁字母。变量是常数的相反。变量的用处在于能一般化描述指令的方式。

   计算机解释: 变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据 。

变量分类:

  按所属的数据类型划分:         基本数据类型变量 引用数据类型变量 (自定义的数据类型)

  按被声明的位置划分:     局部变量:方法或语句块内部定义的变量     成员变量:方法外部、类的内部定义的变量(全局变量)

Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。

Java标识符命名规则: 由字母、数字、下划线(_)和美元符号($)组成。 不能以数字开头。 区分大小。 长度无限制。 不能是Java中的关键字和保留关键字

标识符命名习惯:驼峰命名法、见名知意。以单词或单词组合来命名

合法标识符: password、xuanxuanya、user_name、_userName、$abc_123

非法标识符: 2UserName(不能以数字开头 )、user#Name(#号不能当标识符)、Hello 轩轩(轩轩没问题,有问题的是空格)、class(这个class是java中的关键字 对于关键字 这个坑 我是深受其害 记得 我的数据库订单表 名字叫做order 坑大发了)

2、八种基本数据类型

字节(Byte)是:计算机文件大小的基本计算单位。最小的是位 但是计算机中 1位也是按一个字节存储的

1个字节(Byte) = 8个位(Bit)

在内存计算过程中, 字节少的数据运算速度更快; 在硬盘存储中, 字节少的数据类型也可充分存入更多的数据。

这句话的意思是相对于而言的,一个G的数据 存的int 比存long的数据要多 ,应该是这个意思吧!

数据类型

关键字

占用字节

取值范围

默认值

布尔型

boolean

不定值

true,false

false

字节型

byte

1

-128~127

0

短整型

short

2

-32768~32767

0

整型

int

4

-2147483648~2147483647

0

长整型

long

8

-9223372036854775808~9223372036854775807

0

字符型

char

2

0~65535

‘\u0000’

单精度浮点型

float

4

1.4E-45~3.4028235E38

0.0F

双精度浮点型

double

8

4.9E-324~1.7976931348623157E308

0.0D

这里解释一下为什么 boolean占用字节为不定值呢?

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html(官方文档了解一下)

boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。

可以看出,boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。

3、基本数据类型的声明

(1)声明变量 类型    变量名;  int number;

(2)声明的同时给变量赋值 类型    变量名 = 值;   number=10;

(3)给已声明过的变量赋值 变量名 = 值; number=20;

4、进制与转换

十进制: 人们计算通常用的是十进制,可能是因为 我们有十个手指头吧!手动滑稽!

二进制:计算机中的数据都以二进制数字保存。二进制:逢二进一。即只有0、1两个值。 如:十进制的10在计算机内保存为二进制的1010

位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。 字节(Byte):一个字节由8个位组成。它表示作为一个完整处理单位的8个二进制数码。

八进制: 基数为八。 Java中八进制数据要以0开头。如:0123 八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。 现在的计算机系统很少用八进制的了。

二进制 

八进制 

000 

001 

010 

011 

100 

101 

110 

111 

 

十六进制: 二进制表示法太冗长,所以在程序中一般喜欢用十六进制 十六进制:基数为十六,逢十六进一。它用abcdef表示从0-9之上的值 Java中十六进制数据要以0x或0X开头。如:0x23D 十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可

二进制 

十六进制

二进制

十六进制 

0000 

1001 

0001 

 

1010 

0010 

1011 

0011 

1100 

0100 

1101 

0101 

1110 

0110 

1111 

0111 

 

 

1000 

 

 

补码: 事实上,计算机内的二进制数值是以补码形式表示的。 补码: 一个正数的补码和其原码的形式是相同的。 负数的补码是:将该数的绝对值的二进制形式,按位取反再加1。  由此可知,二进制补码数值的最高位(最左位)是符号位:该位为0,表示数值为正数;该位为1,表示数值为负数。 主要原因:使用补码,可以将符号位和其它位统一处理; 同时,减法也可按加法来处理。 另外,两个用补码表示的数相加时, 如果最高位(符号位)有进位, 则进位被舍弃。

二进制数转换成十进制数 : 按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。

例:原码1011.01 = 1×2^3+0×2^2+1×2^1+1×2^0+0×2^-1+1×2^-2               = 8+0+2+1+0+0.25               =11.25

十进制转换成二进制 整数部分:"除2取余,逆序排列"法 小数部分:"乘2取整,顺序排列"法

6、基本数据类型转换

自动类型转换: 容量小的类型自动转换成容量大的数据类型

byte,short,int,它们三者在计算时会转换成int类型 如果把int值转换为float值,或者long转换为double值,不需要强制转换,但可能丢失精度

面试题

因为byte,short,int,它们三者在计算时会转换成int类型,所以这样写会报错的!

这样加一个强制转换符就可以了,手动滑稽!但是这样会丢失精度!

容量大的转换为容量小的,会丢失精度,但是 为什么int转float 或double 也会丢失精度呢?

这是因为float和double 在存储的时候,存储的是近似值,int long 啥的是精确值,因为是精确值转近似值所以会有精度丢失!

废话不多说 直接上代码

这个的输出结果是科学计数法,2.01978912 10的8次方 201978912 貌似变大了,,手动滑稽!所以表示货币值不能用float或者double

强制类型转换:

容量大的类型转换成容量小的数据类型时,要加上强制转换符。 long n = 100L; int i = (int)n; 有可能造成精度降低或数据溢出,使用时要小心。 boolean 类型不能转换成任何其它数据类型。

System.out.println("点个赞吧");java Android技术交流群:679293162

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值