文章目录
一、了解Java语言
1、Java的历史
可自行百度,在此不做介绍。
2、Java编辑器
JDK命令:javac
打开命令行,cd 进入源文件目录,执行javac
编译文件已生成
3、运行程序
执行带main方法的class文件,命令行为:
java <CLASS文件名>
注意:CLASS文件名不要带文件后缀.class
如果执行的class文件是带包的,即在类文件中使用了:package <包名>
那应该在包的基路径下执行,命令行为:
java <包名>.CLASS文件名
进入编辑目录的上一层,java com.HelloWorld
4、Java 环境配置
首先安装JDK,安装成功后,可通过java -version 查看JDK是否安装成功和版本号。
设置环境变量:
打开系统中“高级系统设置”选项
配置“环境变量”
新建系统变量“JAVA_HOME”,变量值为JDK路径
编辑系统变量“Path”,把“%JAVA_HOME%\bin”加入到“Path”后面。
5、Java 语言特点
- 简单
去掉指针、内存管理、运算符重载和多继承等C++容易出错的地方 - 面向对象
封装、继承和多态 - 分布式
Java语言就是为分布式系统而设计的 - 结构中立
只要可以运行Java虚拟机的环境,都可以运行Java编译器编译生成的字节码文件 - 可移植
体系结构的中立使Java程序具有可移植性 - 解释执行
为实现跨平台,Java源代码文件先被编译成字节码文件,在运行时,Java解释器负责将字节码文件解释成为特定的机器码进行运行 - 健壮
强类型语言,语法错误在编译时会被发现,内存管理方面采用自动内存垃圾回收机制 - 安全
Java解释器把该字节码解释成为机器码进行执行,可以防止木马病毒,Java虚拟机采用的是“沙箱”运行模式,不允许程序访问该内存空间外的内存 - 高性能
Java在解释运行时采用一种即时编译技术,可使Java程序的执行速度提升很大 - 多线程
多线程机制可以实现并发处理多个任务,互不干涉 - 动态
Java应用程序再运行过程中,可以动态加载各种类库,即更新类库也不用重新编译应用程序
6、Java平台
- Java SE
JRE、JDK和Java类型库 - Java EE
为了简化企业级系统的开发、部署和管理 是以Java SE 为基础的,并提供一套服务、API接口和协议,能够开发企业级分布式系统、Web应用程序和业务组件等 - Java ME
主要面向消费类电子产品,使得Java程序能够在手机、机顶盒、PDA等产品上运行,基本已弃用。
7、Java虚拟机
Java 应用能够跨平台 主要是通过Java虚拟机实现的。
二、Java基础知识
1、标识符
- 解释:所有程序员指定的名字,就是标识符
- 命名规则:
(1)、区分大小写:Myname 与myname 是两个不同的标识符
(2)、首字符,可以是下划线()或美元符或字母,但不能是数字
(3)、除首字符外其他字符,可以是下划线()、美元符、字母和数字。
(4)、关键字不能作为标识符
2、关键字
保留字符序列,java中有50个, 如: void 、main、if、 for等,java中的关键字全是小写字母。
3、保留字
既不是关键字也不是标识符,只有俩:goto,const
4、分隔符
- 分号(;) 语句结束
- {} 把语句块包起来
- 空白:包括空格、制表符(tab)和换行,增加可读性
5、变量
- 变量名:标识符起名规则相同,同一作用域内,不能重名
- 作用域
成员变量:类体中,方法外,作用于整个类;
局部变量:方法体内,作用于方法内
6、常量
- 静态常量:static 修饰,例:public static final double CON = 5.3;
- 成员常量:final int y=10;
- 局部常量:方法体内常量
给出例子更直观
package com;
public class Test {
// 成员变量
public static double i;
// 静态常量
public static final double CON = 5.3;
// 成员常量
final int y=10;
/**
* 主方法
* @param arg
*/
public static void main(String[] arg) {
// 局部变量
int z;
// 局部常量
final double x = 6.6;
// 给变量赋值
z = 11;
i = x;
System.out.println("成员变量的值:"+ i );
System.out.println("局部变量的值:"+ z );
System.out.println("静态常量的值:"+ CON );
// System.out.println("成员常量的值:"+ y ); 因为常量y 没有静态化,不能在main方法里用
System.out.println("局部常量的值:"+ x);
}
}
执行结果贴图:
7、数据类型
数据类型 | 关键字 | 宽度 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1个字节(8位) | -128~127 |
short | 2 个字节(16 位) | -215~215-1 | |
int | 4 个字节(32 位) | -231~231-1 | |
long | 8 个字节(64 位) | -263~263-1 | |
浮点类型 | float | 4个字节(32位) | - |
double | 8 个字节(64 位) | - | |
字符类型 | char | 1 个字节(8 位) | - |
布尔类型 | boolean | - | - |
8、运算符
- 算术运算符
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
- | 取反符号 | 取反运算 | 5=-(-5) |
++ | 自加一 | i++,先取值在加一;++i,先加一再取值 | z++或++z |
– | 自减一 | i–,先取值在减一;–i,先减一再取值 | z–或--z |
+ | 加 | 数字求和,或字符串连接 | a+b |
- | 减 | 两数的差 | a-b |
* | 乘 | 两数的积 | a*b |
/ | 除 | 商 | a/b |
% | 取余 | 余数 | a%b |
+= | 加等于 | 数字求和,或字符串连接 | 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 |
贴附自增自减测试代码,结果很直观。
System.out.println("取反:"+ -(-5));
int w=z++;
System.out.println("先取值在加一:"+ w);
System.out.println("先取值在加一:"+ z);
w=++z;
System.out.println("先加一再取值:"+ w);
System.out.println("先加一再取值:"+ z);
w=z--;
System.out.println("先取值在减一:"+ w);
System.out.println("先取值在减一:"+ z);
w=--z;
System.out.println("先减一再取值:"+ w);
System.out.println("先减一再取值:"+ z);
运行结果
- 关系运算符
表达式结果为true 或false
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
== | 等于 | 相等返回true,不相等返回false | a==b |
!= | 不等于 | 不相等返回true,相等返回false | a!=b |
> | 大于 | 大于返回true,小于返回false | a>b |
< | 小于 | 小于返回true,大于返回false | a<b |
>= | 大于等于 | 大于等于返回true,小于等于返回false | a>=b |
<= | 小于等于 | 小于等于返回true,大于等于返回false | a<=b |
- 逻辑运算符
表达式结果为true 或false
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
! | 逻辑非 | !a ,a 为true,结果为false | !a |
& | 逻辑与 | 全为true时结果才为true | a&b |
| | 逻辑或 | 有一个为true,结果就为true | a|b |
&& | 短语与 | 有一个为true,结果就为true | a&&b |
| | 短路或 | 有一个为true,结果就为true | a||b |
逻辑与(&) 和短语与(&&)的区别:& 左右两边表达式都计算,全为true时结果才为true;&&:a&&b,a为false时,不再计算b。
逻辑或(|) 和短语或(||)的区别:| 左右两边表达式都计算;||:a||b,a为true时,不再计算b。
为提高代码效率,推荐使用短语与(&&)和短语或(||)。
- 位运算符
位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据。
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
~ | 位反 | 按位取反 | ~a |
& | 位与 | x 与 y 位进行位与运算 | x&y |
| | 位或 | x 与 y 位进行位或运算 | x|y |
^ | 异或 | x 与 y 位进行位异或运算 | x^y |
>> | 有符号右移 | x 右移a 位,高位采用符号位补位 | x>>a |
<< | 左移 | x 左移a 位,低位用0 补位 | x<<a |
>>> | 无符号右移 | x 右移a 位,高位用0 补位 | x >>> a |
&= | 位与等于 | 等价于a = a&b | a &= b |
|= | 位或等于 | 等价于a = a | b |
^= | 异或等于 | 等价于a = a^b | a ^= b |
<<= | 左移等于 | 等价于a = a<<b | a <<= b |
>>= | 右移等于 | 等价于a = a>>b | a >>= b |
>>>= | 右移等于 | 等价于a = a>>>b | a >>>= b |
无符号右移>>>运算符仅被允许用在int和long整数类型, 如果用于short或byte数据,
则数据在位移之前,转换为int类型后再进行位移计算
- 运算符优先级
运算符优先级、顺序,从高到低是:算术运算符→位运算符→关系运算符→逻辑运
算符→赋值运算符
优先级 | 运算符 |
---|---|
1 | . (引用号) 小括号 中括号 |
2 | ++ – -(数值取反) ~(位反) !(逻辑非) 类型转换小括号 |
3 | * / % |
4 | + - |
5 | << >> >>> |
6 | < > <= >= instanceof |
7 | == != |
8 | &(逻辑与、位与) |
9 | ^(位异或) |
10 | (逻辑或、位或) |
11 | && |
12 | (短路或) |
13 | ?: |
14 | -> |
15 | = *= /= %= += -= <<= >>= >>>= &= ^= |
9、控制语句
(1)分支语句:if 和switch
- if结构
if (条件表达式) {
语句
}
- if-else结构
if (条件表达式) {
语句1
} else {
语句2
}
- else if 结构
if (条件表达式) {
语句1
} else if (条件表达式){
语句2
} else if (条件表达式) {
语句3
} else {
语句4
}
- switch
switch (条件表达式) {
case 值1:
语句1
case 值2:
语句2
....
default:
语句n
}
switch 语句中“表达式”计算结果只能是 int、byte、short 和 char 类型,不能是long
更不能其他的类型。每个 case 后面只能跟一个 int、byte、short 和char 类型的常量,default
语句可以省略。
(2)循环跳转语句: for、while、do-while
- for
一般格式
for (初始化; 循环条件; 迭代) {
语句
}
for-each 语句
for (object item : numbers) {
System.out.println("Count is:" + item);
}
- while
while 语句是一种先判断的循环结构、只要循环条件满足,循环就会一
直进行下去
while (循环条件) {
语句
}
- do-while
do-while 语句的使用与 while 语句相似,不过 do-while 语句是事后判断循环条件结
构,语句格式如下:
do {
语句组
} while (循环条件)
(3)跳转语句:break 、continue、return和throw
- break
跳出循环体,不再循环,继续执行循环体后面的代码。 - continue
跳出本次循环,执行下次循环。 - return
跳出方法体,不再向下执行 - throw
抛出异常情况下用,执行throw语句块。
未完待续。。。
先总结了基本语法,之后会持续更新未完基础知识。