java学习笔记(一)
java 执行流程
java粗略执行流程- 源文件编译成
.class字节码文件->解释执行jre( 装载->字节码校验->jvm执行) jdk包含了javacjredebuggingtoolsjavap
- 源文件编译成
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 -versionjavac…
- 需要先使用
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*100134E-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=-17%-3=13.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-->longchar-->intint-->doubleint-->float(精度丢失)int-->doublelong-->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/