20140617笔记

本文详细探讨了JavaSE中的基本概念,包括变量的定义、数据类型的分类及转换规则,还深入讲解了运算符的使用和表达式的构成,是初学者理解Java变量与常量的入门指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量与常量

数据类型及转换

运算符及表达式


变量

定义:
其值可变的量为变量,在java中,每一个变量属于一个类型
声明:
在声明变量时,变量所属的类型位于变量名之前,如 double salary;
变量可以这样声明 String str1,str2,str3;但还是更推荐一行声明一个变量,因为可读性强
理解:
变量可以理解为一块内存空间,使用变量时,实际上使用的是变量所代表的内存空间中的数据
变量名的书写规则:
变量名只能由字母a-zA-Z、下划线_、美元符号$、数字0-9组成
首字母不能是数字
变量名要起的有意义
使用驼峰命名法(从第二个单词开始每个单词首字母大写)
大小写敏感
长度不限
变量名不能是关键字
另外:java中的“字母”和“数字”所代表的范围要更大些
字母和数字不止包括常见的a-z、0-9,也包括各种语言中这些字母和数字的对应字符
变量的初始化:
声明一个变量之后,必须用赋值语句对变量进行显示初始化之后,才能使用变量
要想对一个已经声明过的变量进行赋值,就需要将变量名放在等号(=)左侧,相应取值的java表达式放在等号的右侧
如:
int vacationDays;//声明
vacationDays = 12;//初始化
也可以将声明和初始化放在同一行中。例如:
int vacationDays = 12;
最后,在java中可以将声明放在代码中的任何地方。
在java中,变量的声明尽可能的靠近变量第一次使用的地方。--最佳实践
局部变量和全局变量:
在类的{}中声明的变量为全局变量,可以在类的任何地方使用,
在方法中声明的变量为局部变量,只能在方法中使用,不能在方法外使用。
变量的默认值:
全局变量如果没有初始化,类实例化时变量拥有默认的初始值,
局部变量没有默认的初始值,想要使用必须显示的进行初始化。
另外:如果全局变量是final类型,即常亮,将不再拥有默认值的初始值。
变量的生命周期:
全局变量在类实例化时创建,在实例被GC回收后释放。
局部变量,在方法被调用时创建,方法返回后释放。
另外:静态变量,在类被加载时就创建了,在程序停止运行后释放。
常量:
在java中利用关键字final声明常量。
关键字final表示这个变量只能被赋值一次,一旦被复制之后,就不能够再更改了。
习惯上,常量名使用大写。
在java中,经常希望某个常量(字面量)可以在一个类中的多个方法中使用,
通常将这些常量成为类常量。可以使用static final设置一个类常量。之所以
使用static修饰,是因为类常量可能被普通方法引用,也可能被静态方法引用
所以必须声明为静态的才能被静态方法引用。
对常量的理解:
用final修饰的变量(即常量),可以看成是一种特殊的变量。
它的特殊之处在于一旦被初始化(这表示变量所代表的内存区域写入一个基本数据类型的值
或写入一个指向一块内存的地址的值),这块内存存储的值就不能再改变。
这里有两种情况:
如果存的是基本类型值,则就是变量存的值不再变动。
如果存的是一块内存的地址值(当变量为引用数据类型),则指的是指向的对象不再改变
,但被指向的这个固定的对象的状态(成员变量)还是可以改变的!


数据类型及转换
Java是一种强类型语言。这就意味着必须为每一个变量声明一个类型。在java中,一共有8种基本类型,其中
4种整型,2种浮点型,1种用于表示Unicode编码的字符单元的字符类型char,一种表示真值的boolean类型。
java的引用数据类型包括如类、接口、数组等


整型:
整型用于表示没有小数部分的数值,它允许是负数。
byte-1字节 -128~127-2^7~2^7-1 之所以是2的7次方,是因为首位的二进制数用来表示正负
short-2字节 -32768~32767
int-4字节 正好超过20亿
long-8字节
ps:1字节是8位二进制数


java中,整型的取值范围与机器无关。
四种整型的使用场景:
int最常用,但如果表示的数大于20亿(比如地球居住人数),就要用long了
byte和short类型主要用于特定的应用场合(比如底层的文件处理或者需要控制占用存储空间量的大数组)
整型的字面量:
long类型要加一个L后缀。十六进制数值有一个0x前缀,八进制有一个0前缀。
一个普通的字面量被默认视为int类型。


浮点型:
浮点类型用于表示有小数部分的数值。
float-4字节 6~7有效位数
double-8字节 15位有效位数


double表示这种类型的数值精度是float类型的两倍。绝大部分应用程序都采用double。
在很多情况下,float类型的精度很难满足需求。只有很少的情况使用到float,如需要存储大量数据。
字面量:
float类型的数值有一个后缀F,没有后缀F的浮点数值默认为double(也可以在末尾加D)
浮点计算遵循IEEE 754规范。
下面是用于表示溢出和出错情况的三个特殊浮点数值:
正无穷 Double.POSITIVE_INFINITY(Float雷同)
负无穷 Double.NEGATIVE_INFINITY
NaN(不是一个数字)Double.NaN


不能判断NaN相等,所有的“非数值”都被认为是不相等的,但可以使用Double.isNaA(x)方法来判断是否是NaN值
*****浮点数值不适合用于禁止出现舍入误差的金融计算中。


char类型:
char类型用于表示单个字符。通常用来表示字符常量。字符类型用单引号括起来'',例如'A'表示编码为65所对应字符。
它不同于"A",这是一个字符串。Unicode编码单元可以表示为十六进制值,范围是\u0000~\uUffff。
还有一些表示特殊字符的转移序列符,这些序列符可以出现在字符或字符串中。特殊的\u还可以在字符常量或字符串的引号之外。
转移序列号:
\b 退格 \u0008
\t 制表
\n 换行
\r 回车
\" 双引号
\' 单引号
\\ 反斜杠


****字符编码:
可以理解为一本字典,字典的一边是符号样式,另一边是特定长度的二进制值。每个符号对应一个二进制值。
不同的编码标准,要表示的符号种类、符号所占二进制数长度以及符号-数值映射规则都可能不同。
Unicode编码就是为了解决统一编码问题而开发的。它使用2个字节表示字符,可以表示65535个字符。
但因为需求的增长,2个字节不再够用了。以下是java语言解决这个问题的基本方法:
不太看得懂!暂时搁置。
强烈建议在程序中不使用char类型。因为一个字符即1个代码点可以由1个也可能由2个代码单元构成。一些方法操作的是代码单元。可能引起错位。
boolean类型:
有2个值,true和false;用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。


数据类型的转换:
byte-short-int-long-float-double
1 2   4    8    4      8
   char——int
之所以long可以向上转型成float是因为float的科学计数法可以表示更大的数字。
表达式运算结果的精度最少是int类型,所以这意味着:
当有byte、short、char参与的运算,结果会隐式的转化为int类型,这是为了防止产生溢出
int-float
long-float
long-double
这三种不会报错的转换可能产生精度损失
强制类型转换:比如int x = (int)11.1


运算符及表达式:
运算符:
整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN的结果。
算数运算符:
+ - * / %
整型之间的除法如果会得到小数,则抛除小数部分,得到整数。
8765 获得百位的值的方法:
8765 % 1000 = 765;
765 / 100 = 7;
赋值运算符:
= += -= *=  /= %=
自增/自减运算符:它的操作数不能是数值。前++则先加后参与表达式运算,后++ 反之。
关系运算符:
== != > < >= <=
boolean运算符:
! & | 短路与(如果第一个表达式的值是false则不再计算另一个表达式的值)&& 短路或(同理)||
三元操作符,条件操作符:
condition?expression1:expression2
可用于赋值或比较大小,如:
String = x>90?"90分以上":"90分以下";
int max = x>y?x:y;
位运算符:
& | ^(异或) ~(非)
可以使用屏蔽技术获得整数中的各个位(二进制位)
比如,n是一个整型变量,并且二进制表示的n从右数第四位为1那么:
int f = (n & 8)/8;返回1。 通过运用2的幂次方的& 运算可以将其他位屏蔽掉,而只保留其中的某一位。
<< >> ,>>>
<< 用0填充低位;>>用符号位填充高位;>>>用0填充高位
当需要建立位模式屏蔽某些位时,使用这两个运算符十分方便:
上面那个例子:int f = (n & (1 << 3)) >> 3;
数学函数:
Math类包含很多数学运算。


表达式:
操作符和操作数在一起就是表达式,表达式的结果类型决定了表达式的类型。
表达式的计算结果会返回最高等级操作数的数据类型。


运算的优先级:
分为三种:
左结合与右结合
运算级别
小括号括起来的级别最高


枚举: 
声明初始化:enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};
使用:Size s =Size.MEDIUM;











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值