Java基础(第一周)
2021-12-05 23:02:23 0 举报
AI智能生成
Java基础
作者其他创作
大纲/内容
Java语言的创始人——詹姆斯·高斯林
Java的加载与执行
Java源代码文件
经过编译阶段
Java字节码文件
经过运行阶段
JVM
java虚拟机
java虚拟机
Windows
Linux
Mac
Java虚拟机
JVM(Java Virtual Machine)称为Java虚拟机
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
不同的操作系统有不同的虚拟机。
java.exe命令会启动JVM,JVM则启动类装载器,类装载器则会寻找.class文件并装载到JVM当中,
JVM对.class文件进行解释成二进制后,操作系统执行二进制和底层硬件平台进行交互。
Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。
Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
不同的操作系统有不同的虚拟机。
java.exe命令会启动JVM,JVM则启动类装载器,类装载器则会寻找.class文件并装载到JVM当中,
JVM对.class文件进行解释成二进制后,操作系统执行二进制和底层硬件平台进行交互。
Java关键字
关键字的定义和特点
定义:被Java语言赋予了特殊含义的单词
特点:关键字中所有字母都为小写
特点:关键字中所有字母都为小写
用于定义数据类型的关键字
class, interface, byte, short , int
long, float, double, char, boolean, void
long, float, double, char, boolean, void
用于定义数据类型值的关键字
true false null
用于定义流程控制的关键字
if, else, switch, case, default, while, do, for, break, continue, return
用于定义访问权限修饰符的关键字
private, protected, public
用于定义类,函数,变量修饰符的关键字
abstract, final, static, synchronized
用于定义类与类之间关系的关键字
extends, implements
用于定义建立实例及引用实例,判断实例的关键字
new, this, super, instanceof
用于异常处理的关键字
try, catch, finally, throw, throws
用于包的关键字
package, import
其他修饰符关键字
native, strictfp, transient, volatile, assert
扩展—标识符的命名规则
在程序中自定义的一些名称。
由26个英文字母大小写,数字:0-9 符号:_ $ 组成。
定义合法标识符规则:
数字不可以开头
不可以使用关键字
Java中严格区分大小写。
注意:在起名字的时,为了提高阅读性,要尽量有意义
由26个英文字母大小写,数字:0-9 符号:_ $ 组成。
定义合法标识符规则:
数字不可以开头
不可以使用关键字
Java中严格区分大小写。
注意:在起名字的时,为了提高阅读性,要尽量有意义
包名:多单词组成时所有字母都小写。
类名接口名:多单词组成时,所有单词的首字母大写。
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(驼峰命名法)。
常量名:所有字母都大写。多单词时每个单词用下划线连接。
public class 和 class
public class Text{
public static void main(String[ ]args){
System.out.println("Hello Java")
}
}
public static void main(String[ ]args){
System.out.println("Hello Java")
}
}
注意class关键字不能变
Text类名,首字母大写
main方法——程序的入口
main方法是Java类运行的入口;也就是说,一个Java类要想运行,就必须有符合规范的主方法,即 public static void main(String[] args)方法。
如果用了public class进行声明,则类名称必须与文件名称完全一致
如用class声明,则不用完全一致,但不建议
如用class声明,则不用完全一致,但不建议
在一个.java文件中可以有多个Java类;
最多只能有一个public类;也可以没有public类;
最多只能有一个public类;也可以没有public类;
扩展名为.java为源代码文件
编译过后生成的扩展名为.class的字节码文件
编译过后生成的扩展名为.class的字节码文件
进制间的转换
二转十
11101转成十进制
1*2的4次方+1*2的3次+1*2的2次+0*2的1次+1*2的0次
16+8+4+0+1=29
16+8+4+0+1=29
十转二
流量控制
Java代码语句的执行顺序
顺序语句
我们从代码与打印的结果来分析,发现代码是从上向下依次执行的,那么这也是Java代码默认的执行顺序,这种执行顺序称为顺序语句
分支语句
分支语句就是选择语句
循环语句
循环语的作用就是反复执一段代码,直到满足终止循环的条件为止
条件
if
if(判断语句) {
执行语句;
}
执行语句;
}
条件表达式可以是任何一种逻辑表达式
如果表达式值为true,则执行花括号的内容后,再执行后面的语句
如果表达的值为false,则直接执行后面的语句
如果,大括号只有一条语句,则可以省略大括号(推荐不省略)
如果表达式值为true,则执行花括号的内容后,再执行后面的语句
如果表达的值为false,则直接执行后面的语句
如果,大括号只有一条语句,则可以省略大括号(推荐不省略)
if-else
if(判断语句){
执行语句1;
}else{
执行语句2;
}
if-else if-else...
if(判断语句1){
执行语句1;
}else if(判断语句2){
执行语句2;
} ……
else if(判断语句n){
执行语句n;
}
else{
}
三元运算符
Java中有一个三元运算符,它和if-else语句类似,语法如下;
判断条件 ? 表达式1 : 表达式2
当判断条件值为true时,返回表达式1的值,否则返回表达式2的值
判断条件 ? 表达式1 : 表达式2
当判断条件值为true时,返回表达式1的值,否则返回表达式2的值
int a = 0;
int b = 1;
int max;
if (a > b) {
max = a;
} else {
max = b;
}
int b = 1;
int max;
if (a > b) {
max = a;
} else {
max = b;
}
int max=a>b?a:b;
if嵌套
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
switchi/case
switch(表达式) {
case 常量表达式1:
语句1;
case常量表达式2:
语句2;
......
case常量表达式n :
语句n;
default:
语句n+1;
}
案例:韩嫣参加计算机编程大赛
如果获得第一名,将参加麻省理工大学组织的1个月夏令营
如果获得第二名,将奖励惠普笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,不给任何奖励
循环语句
三种循环
for循环
int a;
for( a=0; a<5; a++ ){
System.out.println("a="+a);
}
for( a=0; a<5; a++ ){
System.out.println("a="+a);
}
执行步骤:
1、初始化a为0;
2、判断a<5的返回值为true,所以执行一次循环体;打印a=0;
3、运行控制语句a++,a变为1;
4、判断a<5的返回值为true,再执行一次循环体;打印a=1;
5、运行控制语句a++,a变为2;
循环4-5步骤,直到打印a=4后,a变为5
6、判断a<5返回false,则循环结束,跳出循环体。
while循环
int b=0;
while( b<5 ){
System.out.println("b="+b);
b++;
}
执行步骤:
1、判断b<5返回值为true,则执行一次循环体;打印b=0;
2、运行控制语句b++,b变为1;
3、判断b<5的返回值为true,再执行一次循环体;打印b=1;
4、运行控制语句b++,b变为2;
循环3-4步骤,直到打印b=4后,b变为5
5、判断b<5返回false,则循环结束,跳出循环体。
do-while循环
int c=0;
do{
System.out.println("c="+c);
c++;
}while(c<5);
执行步骤:
1、无条件执行一次循环体;打印c=0;
2、运行控制语句c++,c变为1;
3、判断c<5返回值为true,则执行一次循环体;打印c=1;
4、运行控制语句c++,c变为2;
5、判断c<5的返回值为true,再执行一次循环体;打印c=2;
循环4-5步骤,直到打印c=4后,c变为5
6、判断c<5返回false,则循环结束,跳出循环体。
嵌套循环
for(int i=0;i<3;i++)
{
for(int j=5;j>0;j--)
{
System.out.println("内层循环i="+i+" j="+j);
}
System.out.println("外层循环");
}
System.out.println("所有循环结束");
i=0 j=5
i=0 j=4
i=0 j=3
i=0 j=2
i=0 j=1
结束i的第0次循环
i=1 j=5
i=1 j=4
i=1 j=3
i=1 j=2
i=1 j=1
结束i的第1次循环
i=2 j=5
i=2 j=4
i=2 j=3
i=2 j=2
i=2 j=1
结束i的第2次循环
结束所有i循环
continue
for(int i=0;i<5;i++)
{
for(int j=0;j<6;j++)
{
//当i==j时,继续j循环
if(i==j)
{
continue;
}
System.out.println("i="+i+" j="+j);
}
System.out.println("结束i循环的第"+i+”次循环”);
}
System.out.println("循环结束");
i=0 j=1
i=0 j=2
i=0 j=3
i=0 j=4
i=0 j=5
结束i循环的第0次循环
i=1 j=0
i=1 j=2
i=1 j=3
i=1 j=4
i=1 j=5
结束i循环的第1次循环
i=2 j=0
i=2 j=1
i=2 j=3
i=2 j=4
i=2 j=5
结束i循环的第2次循环
i=3 j=0
i=3 j=1
i=3 j=2
i=3 j=4
i=3 j=5
结束i循环的第3次循环
i=4 j=0
i=4 j=1
i=4 j=2
i=4 j=3
i=4 j=5
结束i循环的第4次循环
结束循环
continue(继续):应用于循环结构,停止当前循环,如果循环条件满足,开始下一轮的循环; (换句话说:该循环的这次循环需要停止,但整个循环不停止。)
break
for(int i=0;i<5;i++)
{
//判断i是偶数
if(i%2!=0)
{
//如果i不是偶数,则终止循环
break;
}
//输出i的值
System.out.println("i="+i);
}
执行步骤:
1、判断0%2!=0为false,不运行break;继续运行循环体;打印i=0;
2、运行i++,i变为1,判断i<5为true,运行循环体;
3、判断0%2!=0为true,运行break,循环终止
break(跳出) : 立即跳出当前循环,执行循环之后的第一条语句;
计算机语言发展
机器语言
汇编语言
高级语言
从1946年2月14日第一台计算机ENAC诞生
到:C , C++ , C# , Java等
到:C , C++ , C# , Java等
Java语言的特点
简单
与平台无关性
(一次编写,随处运行)
(一次编写,随处运行)
Java程序
win版JVM
lin版JVM
mac版JVM
面向对象(Object Oriented)
简称OO
简称OO
封装
继承
多态
交互式特性,多线程机制
由于它支持TCP/IP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象。
并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式
操作更为容易
并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式
操作更为容易
健壮性
健壮性又称鲁棒性(robustness);
Java的强类型机制保证任何数据必须有明确的数据类型;
Java提供异常处理机制,能够统一处理异常事件;
Java的强类型机制保证任何数据必须有明确的数据类型;
Java提供异常处理机制,能够统一处理异常事件;
分布式
提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等;
Java的RMI(远程方法调用)机制是开发分布式应用的重要手段;
Java的RMI(远程方法调用)机制是开发分布式应用的重要手段;
动态内存管理机制
java语言采用了自动垃圾回收机制进行内存的管理。
在c++语言中,需要程序员自己对内存进行及时的释放,不然就存在内存泄露等不可预知的问题。
但是在java有一个垃圾回收器,可以对程序中产生的对象进行跟踪,知道哪些对象已经是无用的了,
对无用的内存进行释放,为程序员大大减少了内存管理方面的问题
在c++语言中,需要程序员自己对内存进行及时的释放,不然就存在内存泄露等不可预知的问题。
但是在java有一个垃圾回收器,可以对程序中产生的对象进行跟踪,知道哪些对象已经是无用的了,
对无用的内存进行释放,为程序员大大减少了内存管理方面的问题
安全性
Java语言在安全性方面引入了实时内存分配及布局来防止程序员直接修改物理内存布局;
通过字节代码验证器对字节代码的检验,以防止网络病毒及其它非法代码侵入。
通过字节代码验证器对字节代码的检验,以防止网络病毒及其它非法代码侵入。
Java常量
常量表示不能改变的数值
常量表示不能改变的数值
整数常量:所有整数
小数常量:所有小数
布尔型常量:只有两个数值:true false
字符常量:将一个数字,字母或者符号用单引号( ' ' )标识
字符串常量:将一个或者多个字符用双引号(“ ”)标识
null常量:只有一个数值就是:null
Java变量
变量表示可能改变的数值
变量表示可能改变的数值
Java中变量的概念
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
变量的声明形式
声明 数据类型 变量名 ;
赋值 变量名 = 值;
声明并赋值
数据类型 变量名 = 【值】;
数据类型 变量名 = 【值】; 变量名 = 值;
赋值 变量名 = 值;
声明并赋值
数据类型 变量名 = 【值】;
数据类型 变量名 = 【值】; 变量名 = 值;
例如:int i = 100;
float f ;
f=12.3f;
double d1=0.12,d2,d3 = 0.123;
变量的分类
临时变量(局部变量):方法内部声明的变量(包括参数)
成员变量(全局变量):在方法外,类体内声明的变量
变量使用的注意事项
变量的作用范围(一对{}之间有效)
Java中的每一个变量使用前必须要先申请(声明),然后必须进行赋值,才能够使用,否则报错。
该区域的数据可以在同一类型范围内不断变化
在一个方法中变量名不能重复声明
注意:用来存放同一类型的常量
Java的数据类型
基本数据类型
数值型
整数
byte
默认值:0
默认值:0
8位——1字节
-128~127(-27~27-1)
short
默认值:0
默认值:0
16位——2字节
-32768~32767(-215~215-1)
int
默认值:0
默认值:0
32位——4字节
-2147483648~2147483648(-231~231-1)
long
默认值:0
默认值:0
64位——8字节
-263~263-1(-263~263-1)
浮点
float
默认值:0.0
默认值:0.0
32位——4字节
-3.403E38~3.403E38
double
默认值:0.0
默认值:0.0
64位——8字节
-1.798E308~1.798E308
字符型
char
默认:空字符(\u0000)
默认:空字符(\u0000)
16位——2字节
表示一个字符,如(‘a’,‘A’,‘0’,‘中')
布尔型
boolean
默认值:false
默认值:false
8位——1字节
true
false
基本数据类型转换
从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换
byte b=1;
int i=-2;
// 表示范围小的可以直接转换为表示范围大的类型
i=b;
b=i; //报错
从表示范围大的类型转换为表示范围小的类型,需要强制转换,称为显式转换
byte b=1;
int i=-2;
int c;
// 表示范围大的不可以直接转换为转换范围小的类型,需要强制转换,称为显式转换
b=(byte)i;
c=(char)i;
数值类型和boolean类型之间就不能转换;强制也不可以
byte b=1;
boolean b2=false;
// "风马牛不相及"的boolean和数值类型,强制也不能转换;
b2=b; (编译错误)
b2=(boolean)b; (编译错误)
引用数据类型
类
接口
枚举
注解
数组
运算符
运算符既可以对变量进行运算,
也可以对常量进行运算,被运算的数据称作操作数
也可以对常量进行运算,被运算的数据称作操作数
算数运算符
+ - * / % ++ --
赋值运算符
= += -= *= /= %=
运算后赋值
比较运算符
== != < > <= >=
结果为true或false
逻辑运算符
& | ^ ! && ||
&&—双与(短路)——false&&true—false
|| — 双或(短路)——false||true—true
^—异或—false^true—true
^—异或—true^true—false
|| — 双或(短路)——false||true—true
^—异或—false^true—true
^—异或—true^true—false
位运算符
&——位与(二进制位进行&运算,只有1&1时结果是1,否则是0;)
15&6=6
|——位或(二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;)
15|6=15
^——异或(相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1)
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1)
15^6=9
~——按位非,将操作数的每个位(包括符号位)全部取反。
~6=-7
<<——左移位(空位补0,被移除的高位丢弃,空缺位补0。)
8<<2=32
>>——右位移(被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1)
8>>2=2
>>>——无符号右移位(被移位二进制最高位无论是0或者是1,空缺位都用0补。)
8>>2=2
三元运算符
表达式1?表达式2:表达式3
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
如果条件为false,运算后的结果是表达式2;
0 条评论
下一页