一些Java编程中的基本概念
介绍一些编程中的基本概念,比如:标识符、变量、常量、数据类型、运算符、基本数据类型的类型转换等。
二进制和十进制的转化
1.十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
2.二进制转十进制采用“权相加法”。
注释
在Java中根据注释的功能不同,主要分为单行注释、多行注释和文档注释。
单行注释:使用//开头。
多行注释:以/*开头以*/结尾。注意,多行注释不能嵌套使用。
文档注释:以/**开头以*/结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
标识符和关键字
标识符是用来给变量、类、方法以及包进行命名的。4大规则:
1.必须以字母、下划线_、美元符号$开头。
2.其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
3.大小写敏感,且长度无限制。
4.不可以是Java的关键字。
标识符的使用规范
1.表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
2.表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()
Java关键字是Java语言保留供内部使用的,如class用于定义类。 我们不能使用关键字作为变量名或方法名。
变量(variable)
1.变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。
2.可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。
3.Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。
4.不同数据类型的常量会在内存中分配不同的空间。
变量的分类和作用域
变量有三种类型:局部变量、成员变量(也称为实例变量)和静态变量。
局部变量(local variable):
1.方法或语句块内部定义的变量。
2.生命周期是从声明位置开始到到方法或语句块执行完毕为止。
3.局部变量在使用前必须先声明、初始化(赋初值)再使用。
成员变量(也叫实例变量 member variable):
1.方法外部、类的内部定义的变量。
2.从属于对象,生命周期伴随对象始终。
3.如果不自行初始化,它会自动初始化成该类型的默认初始值。
静态变量(类变量 static variable):
1.使用static定义。
2.从属于类,生命周期伴随类始终,从类加载到卸载。
3.如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值
常量(Constant)
在Java语言中,用关键字final来定义一个常量。常量一旦被初始化后不能再更改。
声明格式:final type varName = value;
为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、helloWorld等称为字符常量,而使用final修饰的PI等称为符号常量。
基本数据类型(primitive data type)
Java数据类型分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
整型
类型 占用存储空间 表数范围
byte 1字节 -27 ~ 27-1(-128~127)
short 2字节 -215 ~ 215-1 (-32768~32767)
int 4字节 -231 ~ 231-1 (-2147483648~2147483647) 约21亿
Long 8字节 -263 ~ 263-1
Java 语言整型常量的四种表示形式
1.十进制整数,如:99, -500, 0
2.八进制整数,要求以 0 开头,如:015
3.十六进制数,要求 0x 或 0X 开头,如:0x15
4.二进制数,要求0b或0B开头,如:0b01110011
【Java语言的整型常数默认为int型,声明long型常量可以后加l或L 。】
浮点型(Floating Point Number)
类型 占用存储空间 表数范围
float 4字节 -3.403E38~3.403E38
double 8字节 -1.798E308~1.798E308
1.float类型又被称作单精度类型,尾数可以精确到7位有效数字。
2.double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
3.Java浮点类型常量有两种表示形式
(1) 十进制数形式: 例: 3.14 314.0 0.314
(2) 科学记数法形式 例:3.14e0 3.14E2 3.14E-1
4.浮点型不精确,不要用于比较。浮点数存在舍入误差,数字不能精确表示。
5.浮点常量默认类型是double,要改成float可以后面加F或f
java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。
BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
字符型
ASCII字符集表示了英文字母、数字、特殊字符、控制符,所有字符集的老祖宗,大家都会兼容它。
【但是一个字节能够表示256个状态,而ASCII字符只用到128个,后面128个一直是空的。】
Unicode字符集是为了给全世界所有字符一个唯一的编码,“唯一”对应的英文为Unique,而编码的英文为code。
【Unicode采用了字符集和编码分开的策略。】
char 类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
Unicode具有从0到65535之间的编码,他们通常用从’\u0000’到’\uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)
Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义。
转义符 含义 Unicode值
\b 退格(backspace) \u0008
\n 换行 \u000a
\r 回车 \u000d
\t 制表符(tab) \u0009
\“ 双引号 \u0022
\‘ 单引号 \u0027
\ 反斜杠 \u005c
以后我们学的String类,其实是字符序列(char sequence), 本质是char字符组成的数组。
布尔型(boolean)
1.boolean类型有两个常量值,true和false。
2.在内存中占一个字节或4个字节,不可以使用 0 或非 0 的整数替代true和false,这点和C语言不同。
运算符(operator)
算术运算符:
1.+,-,*,/,%属于二元运算符。%是取模运算符,就是我们常说的求余数操作。
2.算术运算符中++(自增),--(自减)属于一元运算符。
二元运算符的运算规则:
整数运算:(1)如果两个操作数有一个为long, 则结果也为long。
(2)没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算:(1)如果两个操作数有一个为double,则结果为double。
(2)只有两个操作数都是float,则结果才为float。
取模运算:其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同
赋值及其扩展赋值运算符:
运算符 用法举例 等效的表达式
+= a += b a = a+b
-= a -= b a = a-b
*= a *= b a = a*b
/= a /= b a = a/b
%= a %= b a = a%b
关系运算符:关系运算符用来进行比较运算。关系运算的结果是布尔值:true/false;
运算符 含义 示例
== 等于 a==b
!= 不等于 a!=b
> 大于 a>b
< 小于 a<b
>= 大于或等于 a>=b
<= 小于或等于 a<=b
注意事项:
1.=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
2.==、!= 是所有(基本和引用)数据类型都可以使用。
3.> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long,float/double 以及char)
逻辑运算符:
逻辑运算的操作数和运算结果都是boolean值。
短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
位运算符:位运算指的是进行二进制位的运算。
位运算符 说明
~ 取反
& 按位与
| 按位或
^ 按位异或
<< 左移运算符,左移1位相当于乘2
>> 右移运算符,右移1位相当于除2取商
&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。
字符串连接符:
+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
条件运算符:
x为 boolean 类型表达式,先计算 x的值,若为true,则整个运算的结果为表达式y的值,否则整个运算结果为表达式z 的值。
运算符的优先级
优先级 运算符 类
1 () 括号运算符
2 !、+(正号)、-(负号) 一元运算符
2 ~ 位逻辑运算符
2 ++、-- 递增与递减运算符
3 *、/、% 算术运算符
4 +、- 算术运算符
5 <<、>> 位左移、右移运算符
6 >、>=、<、<= 关系运算符
7 ==、!= 关系运算符
8 & 位运算符、逻辑运算符
9 ^ 位运算符、逻辑运算符
10 | 位运算符、逻辑运算符
11 && 逻辑运算符
12 || 逻辑运算符
13 ? : 条件运算符
14 =、+=、-=、*=、/=、%= 赋值运算符、扩展运算符
数据类型的转换:
1.自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。
2.强制类型转换又称为造型(cast),用于强制转换数值的类型,可能损失精度。
3.当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值。
基本类型转化时常见错误和问题
1.操作比较大的数时,要留意是否溢出,尤其是整数操作时。
2.L和l的问题:
(1) 不要命名名字为l的变量,字母l容易和数字1混淆。
(2) long类型使用大写L,不要用小写l。