java学习笔记(一)
java
执行流程
java
粗略执行流程- 源文件编译成
.class
字节码文件->
解释执行jre
( 装载->
字节码校验->
jvm
执行) jdk
包含了javac
jre
debugging
tools
javap
- 源文件编译成
javeSE
(java
标准版本)JAVAEE
(java
商业版) 与JAVAME
(设备专用) 一般分为这三块
第一个 java 程序
1 |
|
注意点
- 需要先使用
javac
编译出.class
文件 再执行java
- 源文件只能有一个跟文件名相同的
public
类名 main
方法为java
固定入口 有固定的书写格式public static void main(String[] args){}
JAVA
对大小写敏感windows
安装后 1.5以上只需要 设置JAVAHOME /path/to
与%JAVA_HOME%\bin
便于执行java -version
javac
…
- 需要先使用
eclipse
编辑器下载地址 确实下的很慢- 如何打开
package explorer
在windows
里面的show view
下的package explorer
- 如何打开
注释
- // 单行注释
- /* 多行注释 */
- /** 文档注释 */
- 注释是不会出现在字节码文件中的
标识符
- 可以用
_ $
字母 开头 建议使用小驼峰,不要使用$
与_
开头 - 大小写敏感,不能用关键字
- 类名 大驼峰 , 其它小驼峰
变量
变量名称
- 见标识符
变量类型
变量作用域
局部变量
- 方法或者语句块中定义的变量
- 使用时必须要先 ==初始化==
- 生命周期从声明位置开始到语句块 比如
{}
或者 方法执行完毕为止
成员变量
也叫实例对象(member variable)方法外部,类的内部定义的变量,从属于==对象==,
生命周期伴随对象始终
如果不赋值,它会自动初始化成该类型的默认初始化值
数据类型 实例化初始值 int 0 double 0.0 char '\u0000'
boolean false
静态变量
- 使用 static 定义,从属于==类==,生命周期伴随类始终,从类加载到卸载
变量声明 与 初始化
- int ss 声明
- int ss = 2 声明并赋值
常量(Constant)
- 声明后值不会改变的量叫常量
- 使用
final
关键字可以将变量转为符号常量
- 1,’2’,3,”hello” 属于
字面常量
也就是说直接写出来的常量
基本数据类型(primitive data type)
- 数值
- 整数类型(
byte 1字节8位,short 2,int 4,long 8
) - 浮点类型(
float 4,double 8
)字节 - 字符型(
char
)2字节 - 布尔型(
boolean
)1位
- 整数类型(
- 引用数据类型
4字节存储对象的地址
- 类
class
- 接口
interface
- 数组
array
- 类
数值型
类型 | 占用存储空间 | 表示范围 |
---|---|---|
byte | 1字节 8位 | -2^7 ~ 2^7-1(-128~127) |
short | 2字节 16位 | -2^15 ~ 2^15-1(-32768~32767) |
int | 4字节 32位 | -2^31 ~ 2^31-1 约21亿 |
log | 8字节 64位 | -2^63 ~ 2^63-1 |
- 进制
- 八进制 以 0 开头
- 十六进制 以
0x
或者0X
开头0x15
- 二进制 要求以
0b
或者0B
开头,0b01110011
- long 类型需要显示的加上 ==L== 不加
l
是避免混淆long e = 222222222L
;
浮点型
类型 | 占用存储空间 | 表示范围 |
---|---|---|
float | 4字节 32位 | -3.403E38 ~` 3.403E38` |
double | 8字节 64位 | -1.798E308 ~ 1.798E308 |
- 浮点数的表示形式
- 十进制 3.14 314.0 0.314
- 科学计数法
314e2 314*100
134E-2 314/100
float
可以表示==7==位有效数字float
类型 ==必须== 要 在后面加上 F
double
可以表示==15==位有效数字bouble
为默认小数的类型
如3.13 或 3.14D
也可以在后面加上D
- 浮点数
运算
与比较
都是不精确的,一般使用java.math
的BigInterge
,BigDecimal
类用于不容许舍入误差的金融计算领域
字符型
char
是表示Unicode
编码的一种实现2
字节65535
Boolean
true
|false
运算符
- | - | - |
---|---|---|
算术运算符 | 二元运算符 | +,-,*,/,% |
算术运算符 | 一元运算符 | ++,– |
- | - |
---|---|
扩展运算符 | +=,-=,*=,/= |
关系运算符 | >,<, >= ,<=,== ,!=, instanceof |
逻辑运算符 | && ,` |
位运算符 | & ,` |
条件运算符 | ? |
字符串连接运算符 | + |
算术运算符
- 算术运算符
- 整数运算
- 两个操作数,只要有一个为
long
结果为long
- 没有
long
时结果为int
,即使操作数全为short
或byte
结果也是int
- 两个操作数,只要有一个为
- 浮点运算
- 如果两个数有一个为
double
结果为double
- ==只有两个数都是==
float
结果才是float
- 如果两个数有一个为
- 取模运算
- 其操作数可以为浮点数,结果为还是按上面规则走
- 余数的符号跟==左边操作数的符号==相同
7%3=1
-7%3=-1
7%-3=1
3.14%3=0.14000000000000012
++
--
前++
与后++
的区别 先赋值还是后赋值的问题
- 整数运算
赋值运算符与扩展运算符
=
+=
…
关系运算符
<,>,<=,=>,!=
结果为boolean
逻辑运算符
^
相同为false
不同为true
& | !
用与bool
数之间是比较 用于int
数之间为位运算- 注意
&
与|
还有&&
与||
的 逻辑短路现象
位运算符
<< 1
乘2
>> 1
除以2
1 |
|
字符串连接符
+
前后 如果有一者为 字符串 那么就变成字符串连接操作
条件运算符
- 三目(元)运算符
a?x:y;
运算符优先级
优先级 | 运算符 | 类 | 结合性 |
---|---|---|---|
1 | {} |
括号运算符 | 由左至右 |
2 | ! ,+ (正号),- (负号) |
一元运算符 | 由左至右 |
2 | ~ |
位逻辑运算符 | 由右至左 |
2 | ++ ,-- |
递增递减运算符 | 由右至左 |
3 | * ,/ ,% |
算术运算符 | 由左至右 |
4 | + ,- |
算术运算符 | 由左至右 |
5 | << ,>> |
位运算符 | 由左至右 |
6 | < ,> ,>= ,<= |
关系运算符 | 由左至右 |
7 | == ,!= |
关系运算符 | 由左至右 |
8 | & |
位运算符,逻辑运算符 | 由左至右 |
9 | ^ |
位运算符,逻辑运算符 | 由左至右 |
10 | ` | ` | 位运算符,逻辑运算符 |
11 | && |
逻辑运算符 | 由左至右 |
12 | ` | ` | |
13 | ?: |
条件运算符 | 由右至左 |
14 | = ,+= ,-= ,*= ,/= ,%= |
赋值运算符,扩展运算符 | 由右至左 |
!
>&
>^
>|
>&&
>||
- a||b&&c 意思是 a||(b&&c)
- 简记为 ==算术>关系>逻辑== 也就是先运算再比较最后为赋值
自动类型转换
- 原则为 容量小转换为 容量大的 (不一定是字节数)
byte-->short-->int-->long
char-->int
int-->double
int-->float
(精度丢失)int-->double
long-->float
(精度丢失)long-->double
(精度丢失)float-->double
强制类型转换
- 强制类型转换进行运算的时候先要考虑溢出情况
- 只需要在变量前面加上
(type)
就能强制转换,可强制转换的 type 只包括数值与字符类型 double x = 3.14;
int nx = (int)x
流程控制
顺序结构
选择结构
- if 单选择结构
- if else 双选择结构
- if else if else 多选择结构
- else if 中间必须加空格
- switch 多选择结构
- 跟
php
没什么区别 - switch中
case
标签在jdk1.5
以前必须是整数(long类型除外)或者,枚举,不能是字符串 - 在
jdk1.7
以后允许使用字符串(String)
- 跟
循环结构
- while(布尔表达式){ 循环体 }
- do{ 循环体 }while(布尔表达式)
- for(赋值,赋值;比较条件,默认值){ 循环体 }
- 支持逗号隔开的多重初始化
- 赋值的作用域仅限于循环内部使用
- break / continue
- 带标签的break
1
2
3
4
5
6
7
8
9int i =1;
outime:while(i<=100) {
while(i<=100) {
if(i == 22) {
break outime;
}
i++;
}
} - 没有 goto 语法,标签仅限于一个循环(单/嵌套)体内部使用
- 带标签的break
java学习笔记(一)
https://blogxy.cn/posts/cd1a8393/