JAVA相关介绍
Java语言是一种特殊的高级语言,Java程序需要先经过编译,在经过解释两个步骤。Java经过编译之后不会产生机器码,而是生成一种与平台无关的字节码(*.class文件)。这种字节码是不可执行的,必须使用Java解释器来解释执行。
Java语言负责解释执行字节码文件的是Java虚拟机,即JVM(JavaVirtual Machine)。JVM是可运行java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译只需要面向 虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。
一、安装JDK
想要开发JAVA必须安装JDK,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行是环境,以及常用的Java类库等。
在JDK安装路径下:
bin:该路径下是JDK的各种命令工具,常用的javac、java等命令都在此路径下。
db:
demo:该路径下是JDK的演示代码。
jre:该路径下是运行Java程序必需的JRE环境。
lib:该路径下存放的是JDK工具命令额实际执行程序。
sample:该路径下是JDK提供的简单示例代码。
src.zip:该文件包括了Java所有核心类的源代码。
二、设置PATH环境变量
编译和运行Java程序有两个步骤(编译和执行),分别需要使用java和javac两个命令。这两个命令均在bin目录下。
在 windows的环境变量下设置此变量。
JAVA命名规范
定义规范的目的是为了是项目的代码样式统一,使程序有良好的可读性。
A.包的命名:全部小写,由域名定义
B.类的命名:单词首字母大写
C.方法的命名:首字母小写,其余字母开头大写
D.常量的命名:全部大写,常加下划线
E.参数的命名:为了避免阅读程序时造成迷惑,尽量保证参数有明确的含义
F.变量的命名:常采用首字母小写,其余字母大写的规则。
Java基本语法
一、标识符和关键字
标识符就是用于给程序中变量、类、方法命名的符号。Java语言的标识符必须以字母、下划线(_)、美元符($)开头,后面可以跟任意数目的字母、数字、下划线(_)和美元符($)。
Ø 标识符可以由数字、字母、下划线和美元符组成,但是数字不能开头
Ø 标识符不能是Java关键字和保留字
Ø 标识符不能包含空格
Ø 标识符只能包含美元符,不能包含@#等其他特殊字符
二、Java关键字
关键字是一些具有特殊用途的单词。当定义标识符时,不要让标识符和关键字相同,否则会引起错误。
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
continue |
default |
do |
double |
else |
enum |
extends |
final |
finally |
float |
for |
if |
implements |
import |
int |
interface |
instanceof |
long |
native |
new |
package |
private |
protected |
public |
return |
short |
static |
strictfp |
super |
switch |
synchronized |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
三、数据类型
Java语言是强类型的语言,每个变量必须显式声明类型,也就是说,所有的变量必须先声明后使用。
Java语言的类型包括两类:基本类型(Primitive Type)和引用类型(Reference Type)。
基本类型包括boolean类型和数值类型。数值类型包括整数类型和浮点类型。整数类型包括byte、short、int、long、char,浮点类型包括float和double。
引用类型包括类、借口和数组类型,还有一种特殊的null类型。引用类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是java语言中没有指针这个说法。
空类型(null type)就是null值的类型,这种类型没有名称。因为null类型没有名称,所以不可能声明一个null类型的变量或者转换到null类型。空引用(null)是null类型变量唯一的值。空引用(null)可以转换为任何引用类型。
四、基本数据类型
JAVA中一共有8种数据类型。但是字符串不是基本数据类型,它是一个引用类型。
1.整形:
Ø byte:占8位,范围是-128(-27)到127(27-1)
Ø short:占16位,范围是-32768(-215)到32767(215-1)
Ø int:占32位,范围是-2147483648(-231)到-2147483467(231 -1)
Ø long:占64位,范围是-9223372036854775808(-263)到9223372036854775807(263-1)
java整形常量默认就是int类型,int是最常用的整形常量。
2.字符型
字符型常量有三种表示形式:
Ø 直接通过单个字符来指定字符常量:例如’A’、’9’。
Ø 通过转义字符表示特殊字符常量:例如’\n’、’\t’。
Ø 直接使用Unicode值来表示字符常量,格式是’\uXXXX’,其中’XXXX’代表一个16进制的整数。
Java中常用的转义字符表:
转义字符 |
说明 |
Unicode表示方式 |
\b |
退格符 |
\u0008 |
\n |
换行符 |
\u000a |
\r |
回车符 |
\u000d |
\t |
制表符 |
\u0009 |
\’’ |
双引号 |
\u0022 |
\’ |
单引号 |
\u0027 |
\\ |
反斜线 |
\u005c |
字符型常量也可以采用16进制编码方式来表示,范围是’\u0000’~’\uFFFF’,一共表示65535个字符,其中前256个字符和ASCII码中的字符完全重合。
如果把一个在0~65535范围内的int整数赋给char类型的变量,系统会自动把这个int整形当成char类型来处理。
3.浮点型
Java的浮点类型的字段长度和表数范围和机器无关。采用二进制数据的科学计数法来表示浮点数,对于float型数值,第一位是负号位,接下来8位表示指数,接下来23位表示系数;对于double型数值,第一位是负号位,接下来的11位表示指数,接下来的52位表示尾数。
一个float类型的数值占4个字节,32位。
一个double类型的数值占8个字节,64位。
Java语言的浮点型默认的是double型,如果希望把一个浮点型当成float处理,应该在这个浮点型值后紧跟着f或F。所有正无穷大数值都是相等。所有负无穷大数值都是相等。而NaN不与任何数值相等,甚至和NaN都不相等。
Double或Float的POSITIVE_INFINITY表示它们的正无穷大,NEGATIVE_INFINITY表示它们的正无穷小。
4.布尔型
在逻辑上表示“真“或“假”。Boolean值只能是true或false。其他基本数据类型不能转换为布尔类型。
五、基本数据类型转换
有两种转换类型:自动类型转换和强制类型转换。
把一个范围小的数值或变量直接赋给另一个表数范围大的变量时,称为自动类型转换。
如: int a = 9; float f = a;//int可以自动转换为float类型
把一个范围大的数值或变量直接赋给另一个表数范围小的变量时,称为强制类型转换。
如:double dValue =3.21; int result = (int)dValue;//强制把一个double类型的值转换为int
通常情况下,字符串不能直接转换为基本类型,但是通过基本类型对用的包装类则可以将字符串转换成基本类型。
如:String str = “23”; int iValue = Integer.parseInt(str);
六、运算符
1.算术运算符
+(加法)、-(减法)、*(乘法)、/(除法)、%(求余)、++(自加)、--(自减)
2.赋值运算符
Java使用=作为赋值运算符,通常使用赋值运算符将一个常量值赋给变量。
扩展后的赋值运算符:
Ø +=:x = x + y
Ø -=:x = x – y
Ø *=:x = x *y
Ø /=:x = x / y
Ø %=:x = x % y
Ø &=:x = x & y
Ø |=:x = x | y
Ø ^=:x = x ^ y
Ø <<=:x = x <<y
Ø >>=:x = x >>y
Ø >>>=:x = x >>> y
3.比较运算符
Ø >
Ø >=
Ø <
Ø <=
Ø ==
Ø !=
4.逻辑运算符
Ø &&:与,前后两个操作数都是true才返回true,否则返回false
Ø &:不短路与
Ø ||:或,只要两个操作数中有一个true就返回true,否则返回false
Ø |:不短路或
Ø !:非,只需要一个操作数,操作数为true返回false,操作数为false返回true
Ø ^:异或,当两个操作数不同时才返回true,相同时返回false
注:&总会计算前后两个操作数,而&&先计算前一个操作数,如果左边的操作数为false,直接返回false,根本不会计算右边的操作数。
5.位运算符
Ø &:按位与
Ø |:按位或
Ø ~:按位非
Ø ^:按位异或
Ø <<:左位移运算符
Ø >>:右位移运算符
Ø >>>:无符号右移运算符
位运算的运算结果表
第一个运算数 |
第二个运算数 |
按位与 |
按位或 |
按位异或 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
注:按位与 0&0 = 0;0&1 = 0;1&0 = 0; 1&1 = 0;
按位或 0|0 = 0; 0|1 = 1; 1|0 = 1; 1|1 = 1;
按位异或 0^0 = 0; 0^1 = 1;1^0 = 1; 1^1 = 0;
>>、>>>和<<<三个移位运算符并不是适合所有的数值类型,他们只适合对byte、short、char、int和long等整数型进行运算。除此之外,进行移位运算时还有如下规则;
对于低于int类型的操作数总是先自动类型转换为int类型后再移位。
对于int类型的整数移位a>>b,当b>32,系统先用b对32求余(因为int类型只有32位),得到的结果才是真正移位的位数。例如a>>33和a>>1的结果完全一样,而a>>32的结果和a相同。
对于long型的整数移位时a>>b,当b>64,总是先用b对64求余(因为long类型是64位),得到的结果才是真正移位的位数。
6.类型相关运算符
7.三目运算符 ?:
七、运算符的优先级
运算级优先级表(上面的优先级高于下面的)
运算符说明 |
java运算符 |
分隔符 |
[] () {} , ; |
单目运算符 |
++ - ~ ! |
强制类型转换运算符 |
(type) |
乘法/除法/求余 |
* / % |
加法/减法 |
+ = |
移位运算符 |
<< >> >>> |
关系运算符 |
< <= >= > instanceof |
等价运算符 |
== != |
按位与 |
& |
按位异或 |
^ |
按位或 |
| |
条件与 |
&& |
条件或 |
|| |
三目运算符 |
?: |
赋值 |
= += -= *= /= &= |= ^= %= <<= >>= >>>= |