Java的加载与执行
Java源代码文件
<font color="#e65100">经过编译阶段</font>
Java字节码文件
<font color="#f57f17">经过运行阶段</font>
JVM<br>java虚拟机
Windows
Linux
Mac
Java虚拟机
JVM(Java Virtual Machine)称为Java虚拟机<br>Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。<br>Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。<br><font color="#d32f2f">不同的操作系统有不同的虚拟机。</font><br>java.exe命令会启动JVM,JVM则启动类装载器,类装载器则会寻找.class文件并装载到JVM当中,<br>JVM对.class文件进行解释成二进制后,操作系统执行二进制和底层硬件平台进行交互。<br>
Java关键字
关键字的定义和特点
定义:被Java语言赋予了特殊含义的单词<br>特点:关键字中所有字母都为小写
用于定义数据类型的关键字
class, interface, byte, short , int<br>long, float, double, char, boolean, void<br>
用于定义数据类型值的关键字
true false null
用于定义流程控制的关键字
if, else, switch, case, default, while, do, for, break, continue, return
用于定义访问权限修饰符的关键字
private, protected, public
用于定义类,函数,变量修饰符的关键字
abstract, final, static, synchronized
用于定义类与类之间关系的关键字<br>
extends, implements
用于定义建立实例及引用实例,判断实例的关键字
new, this, super, instanceof
用于异常处理的关键字
try, catch, finally, throw, throws
其他修饰符关键字
native, strictfp, transient, volatile, assert
扩展—标识符的命名规则
在程序中自定义的一些名称。<br>由26个英文字母大小写,数字:0-9 符号:_ $ 组成。<br>定义合法标识符规则:<br> 数字不可以开头<br> 不可以使用关键字<br>Java中严格区分大小写。<br>注意:在起名字的时,为了提高阅读性,要尽量有意义<br>
包名:多单词组成时所有字母都小写。<br>
类名接口名:多单词组成时,所有单词的首字母大写。
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(驼峰命名法)。
常量名:所有字母都大写。多单词时每个单词用下划线连接。
public class 和 class
<font color="#b71c1c">public class</font> Text<font color="#b71c1c">{</font><br><br> <font color="#b71c1c">public static void main(String[ ]</font>args<font color="#b71c1c">){<br></font> <br> System.out.println("Hello Java") <br><font color="#b71c1c"> }<br>}</font>
注意class关键字不能变
Text类名,首字母大写
main方法——程序的入口
main方法是Java类运行的入口;也就是说,一个Java类要想运行,就必须有符合规范的主方法,即 public static void main(String[] args)方法。
如果用了<font color="#b71c1c">public</font> class进行声明,则类名称必须与文件名称完全一致<br>如用class声明,则不用完全一致,但不建议
在一个.java文件中可以有多个Java类;<br>最多只能有一个public类;也可以没有public类;<br>
扩展名为.java为源代码文件<br>编译过后生成的扩展名为.class的字节码文件<br>
计算机语言发展
机器语言
汇编语言
高级语言
从1946年2月14日第一台计算机ENAC诞生<br>到:C , C++ , C# , Java等
Java语言的特点
简单
与平台无关性<br>(一次编写,随处运行)
Java程序
win版JVM
lin版JVM
mac版JVM
面向对象(Object Oriented)<br>简称OO
封装
继承
多态
交互式特性,多线程机制
由于它支持TCP/IP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象。<br>并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式<br>操作更为容易<br>
健壮性
健壮性又称鲁棒性(robustness);<br>Java的强类型机制保证任何数据必须有明确的数据类型;<br>Java提供异常处理机制,能够统一处理异常事件;<br>
分布式
提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等;<br>Java的RMI(远程方法调用)机制是开发分布式应用的重要手段;<br>
动态内存管理机制
java语言采用了自动垃圾回收机制进行内存的管理。<br>在c++语言中,需要程序员自己对内存进行及时的释放,不然就存在内存泄露等不可预知的问题。<br>但是在java有一个垃圾回收器,可以对程序中产生的对象进行跟踪,知道哪些对象已经是无用的了,<br>对无用的内存进行释放,为程序员大大减少了内存管理方面的问题<br>
安全性
Java语言在安全性方面引入了实时内存分配及布局来防止程序员直接修改物理内存布局;<br>通过字节代码验证器对字节代码的检验,以防止网络病毒及其它非法代码侵入。<br>
Java常量<br>常量表示不能改变的数值<br>
整数常量:所有整数
小数常量:所有小数
布尔型常量:只有两个数值:true false
字符常量:将一个数字,字母或者符号用单引号( ' ' )标识
字符串常量:将一个或者多个字符用双引号(“ ”)标识<br>
null常量:只有一个数值就是:null<br>
Java变量<br>变量表示可能改变的数值<br>
Java中变量的概念
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
变量的声明形式
声明 数据类型 变量名 ;<br>赋值 变量名 = 值; <br>声明并赋值<br> 数据类型 变量名 = 【值】;<br> 数据类型 变量名 = 【值】; 变量名 = 值;<br>
例如:int i = 100;
float f ;
f=12.3f;
double d1=0.12,d2,d3 = 0.123;
变量的分类
临时变量(局部变量):方法内部声明的变量(包括参数)
成员变量(全局变量):在方法外,类体内声明的变量
变量使用的注意事项
变量的作用范围(一对{}之间有效)
Java中的每一个变量使用前必须要先申请(声明),然后必须进行赋值,才能够使用,否则报错。
该区域的数据可以在同一类型范围内不断变化
在一个方法中变量名不能重复声明
注意:用来存放同一类型的常量
运算符
运算符既可以对变量进行运算,<br>也可以对常量进行运算,被运算的数据称作操作数<br>
算数运算符
+ - * / % ++ --
赋值运算符
= += -= *= /= %=
运算后赋值
比较运算符
== != < > <= >=
结果为true或false
逻辑运算符
& | ^ ! && ||
&&—双与(短路)——false&&true—false <br> || — 双或(短路)——false||true—true<br>^—异或—false^true—true<br>^—异或—true^true—false<br>
位运算符
&——位与(二进制位进行&运算,只有1&1时结果是1,否则是0;)<br>
15&6=6
|——位或(二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;)<br>
15|6=15
^——异或(相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0<br>不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1)<br>
15^6=9
~——按位非,将操作数的每个位(包括符号位)全部取反。<br>
~6=-7
<<——左移位(空位补0,被移除的高位丢弃,空缺位补0。)<br>
8<<2=32
>>——右位移(被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1)
8>>2=2
>>>——无符号右移位(被移位二进制最高位无论是0或者是1,空缺位都用0补。)<br>
8>>2=2
三元运算符
表达式1?表达式2:表达式3<br>
如果条件为true,运算后的结果是表达式1;<br>如果条件为false,运算后的结果是表达式2;<br>