计算机的执行机制
编译执行:
将源文件编译成机器码,一次编译,多次执行
执行效率高,不可跨平台。
解释执行:
将源文件被一行一行解释,一行一行执行。不同的操作系统具备不同的解释器
执行效率低,可以跨平台。
Java的执行机制
JVM
先编译、在解释:
将源文件编译成字节码文件(平台中立文件.class),再将字节码文件进行解释执行。
*java—>编译—> *class—> 执行
java设计理念:Write Once Run Anywhere
JVM
使用软件在不同操作系统中,模拟相同环境。
JRE
运行环境(包含JVM和解释器)
JDK
开发环境(包括JRE + 类库 + 开发工具包)
WINDOW命令(×)
d: 更换盘符
dir:查看当前目录下的文件及文件夹
cd 文件夹名
cd +Tab 切换查找
cd…返回上级目录
cls 清屏
del 文件名
rd 文件夹名称
退出 exit
class
代码的容器
class HelloWord{
public static void main(String[] args){
System.out.print("Hello world");
}
}
同一个源文件可以定义多个类
编译后,每个类都会生成独立的.class
定义一个public类必须与源文件名相同
包
作用:类似于文件夹,用于管理字节码文件(.class)文件。
语法:package 包名;
位置 : 必须写在源文件的第一行
带包编译 javac -d . 源文件名称.java(自动生成目录结构)
带包运行:java 包名.类名(包名+类名又称全限定名)
采用域名倒置的规则
注释
javadoc -d . test.java
/** */文档注释
变量
1.内存?
内存是瞬时状态下的存储空间,造价高、工业上存在设计瓶颈。
2.变量:计算机内存的一块存储空间,是存储数据的最小单元。
3.java虚拟机(java程序)默认分配到的物理内存是1/8
4.bit(位)->Byte(字节)->KB->MB->GB->TB->PB->EB->ZB->YB->BB->NB->DB->CB->XB
数据类型
1.基本数据类型
整数(byte 1字节8位(bit)
short 2字节16位
int 4字节
long 8字节
)
小数 ,布尔 ,字符
整形数据中默认数据类型为int
程序运行过程中,顺时空间(局部变量表 - slot槽)
浮点型默认为double
float 4个字节 单精度
double 8个字节 双精度
近似值 :
float 将小数存入float中时+f
32bit 1bit符号位 8bit指数位 23尾数位
double
64bit 1bit符号位 11bit指数位 52尾数位
boolean
1字节
取值范围 true/false
其内部仅用一位,其余位补齐,适应java垃圾回收机制。
字符类型(char)
两个字节
英文对应的ASCII编码,中文或其他国家语言对应Unicode编码
Unicode字符集(万国码)
转义字符\
2.引用数据类型
3.类型转换
自动类型转换:
1.两种类型相互兼容
2.目标类型大于源类型
强制类型转换:
1.两种类型相互兼容
2.目标类型小于源类型
(目标类型)值
强制类型转换规则 :
整数长度足够,数据完整。
整数长度不够,数据截断。
小数强转整数,数据截断。
字符整数互转,数据完整。
boolean取值为true/false,不可与其他类型转换。
表达式
使用运算符连接的变量或字面值,并可以得到一个最终结果。
例如: 3+3,
int a = 2 ,
int b = 3;
c = a*b;
自动类型提升
进行算数运算时
1.两个操作数一个类型为double一个类型为float自动提升为double类型。
2.两个操作数中没有double,有一个为float,计算结果提升为float类型。
3.如果操作数中没有float,有一个为long,计算结果提升为long类型。
4.如果操作数中没有long,有一个为int,计算结果提升为int类型。
5.如果操作数中没有int,均为short或 byte,计算结果仍旧提升为int类型。
*任何类型与String相加时,实为拼接,其结果自动提升为String。
运算符
1.算术运算符:加减乘除模(两个操作数)
2.算术运算符:++,–一元运算符(一个操作数)
在一元运算符中,独立一行进行书写时++a,a++;都表示自增一。
不是自己独立一行时,a++,先赋值,在++;++a;先++在赋值。
3.赋值运算符
=:直接赋值
+=:求和后赋值
-=:求差后赋值
%=:求余后赋值
/=:求商后赋值
*=:求积后赋值
4.关系运算符
<,>,!=,==
5.逻辑运算符
&& ,||, !
6.三元运算符
布尔表达式?结果1:结果2
当表达式结果为真,获得结果1
当表达式结果为假,获得结果0
选择结构
基本if
对布尔表达式进行判断
if…else
if …else if …else if … else
一个选择结构中,可嵌套另一个选择结构。
嵌套格式正确的情况下,支持任意组合。
switch语句与break语句和while语句配合使用
局部变量
概念:声明在函数内部得变量,必须先赋值再使用。
作用范围:定义行开始到所在得代码块结束。
注意:多个变量,在重合得作用范围内,不可出现重名(命名冲突)。
标记:所有的对象归于垃圾回收器回收,变量不需要。
循环
while,do…while ,for
循环四部分
1.初始部分。
2.循环条件。
3.循环操作。
4.迭代部分。
while的特点:首次判断不满足,则一次都不会执行。(执行次数:0-n次)适应于循环次数明确
do…while的特点:首次没有入口条件,先执行再判断。(执行次数:1-n次)适应于循环次数不明确。
do{
}while();
for的特点:
for(int i = 0 ; i <=100; i++){
System.out.println(i);
}
死循环
for(; ; )
while(true)
流程控制
break:终止、跳出switch、循环结构
continue:跳入此次循环,跳入下一次循环
Math.random
大于零小于一的小数
函数
定义语法:
public static void 函数名称(){
//函数主体,功能代码。
}
定义位置:
函数定义在类的内部,与main函数并列。
注意:调用函数时,会优先执行函数内部代码,结束后,返回到函数调用处,继续向下执行。
形参与实参
public static void 函数名称(形参){
//函数主体。
}
实际参数为形式参数赋值
函数名称(实际参数)