Java基础
1.“java HelloWorld”的执行过程以及原理
<执行路径>java HelloWorld
敲完回车,都发生了什么?????
第一步:会先启动JVM(java虚拟机)
第二步:JVM启动之后,JVM会去启动“类加载器classloader”
类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。
假设是“java HelloWorld”,那么类加载器会去硬盘上搜索:HelloWorld.class文件。
假设是“java Test”,那么类加载器会去硬盘上搜索:Test.class文件。
.......
第三步:
类加载器如果在硬盘上找不到对应的字节码文件,会报错,报什么错?
错误: 找不到或无法加载主类
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码
文件装载到JVM当中,JVM启动“解释器”将字节码解释为“101010000...”这种
二进制码,操作系统执行二进制码和硬件交互。
2.注释
-
单行注释
//注释内容
-
多行注释
/*
注释内容
*/
-
javadoc注释:这里的注释信息可以自动被javadoc.exe命令解析提取并生成到帮助文档当中。
/**
*注释内容
*/
举例:
//public表示公开的 //class表示定义的一个类 //HeloWorld表示一个类名 public class HeloWorld{//表示定义一个公开的类,起名HelloWorld //类体 /* public表示公开的 static表示静态的 void表示空 main表示方法名是main (String[] args)是一个main方法的形式参数列表 重点: 以下的方法是一个程序的“主方法”,是程序的执行入口 是SUN公司规定的,固定的一个编写方式。 */ public static void mian(String[] args){//表示定义一个公开的静态的主方法 System.out.println("Hello World!"); //java语句【java语句以","终止,分号必须是半角分号】 //记住:以下代码的作用是向控制台输出一段消息 //以下的双引号必须是半角的双引号【是java语法的一部分】 //java中所有的"字符串"都使用双引号括起来 System.out.println("Hello World!"); System.out.println("Hello Tom!"); //输出中文 System.out.println("你好,我是李华!"); //输出中文 System.out.println("我是一个java软件工程师!"); } }
3.标识符
3.1、标识符可以标识什么,什么是标识符,怎么理解这个概念!
3.2、标识符的命名规则
3.3、标识符的命名规范
4. 关键字
4.1、什么是关键字?
在SUN公司开发Java语言的时候,提前定义好了一些具有特殊含义的单词,
这些单词全部小写,具有特殊含义,不能用作标识符。
4.2、凡是在EditPlus中以蓝色字体形式存在的都是关键字,具有特殊含义。
4.3、切记:
java语言中的所有关键字都是全部小写。
注意:java语言中是严格区分大小写的。public和Public不一样。
Class和class不一样。static和Static也不一样。
4.4、那么关键字有哪些呢,我们需要背会吗?需要单独去记忆吗?
关键字:
public
static
void
class
byte
short
int
long
float
double
boolean
char
true
false
if
while
for
private
protected
........
对于这些关键字来说大家不需要单独花费时间去记忆,
随着后面程序的积累,你会接触到所有的关键字。
5.变量
5.1字面量
字面量就是数据
数据就是字面量
是一个东西。
10 100 123 :整型
1.34 3.14 2.0:浮点型
true false :布尔型
'a' '国':字符型
"a" "abc" "国" "中国":字符串型
10:整数,是一个数字
"10":它不是数字,是一个字符串,或者说,它属于“文字类”的。
性质完全不同,在计算机中的对应的二进制码也是完全不同的。
分为局部变量和成员变量
//在不同的作用域中可以定义相同的变量名
public class Var{
public static void main(String[] args){
int i=40;//局部变量
System.out.println(i);
}
int i=80;//成员变量
}//输出的话按照就近原则!
5.2、变量
变量的理解
什么是变量?
变量就是一个存数据盒子。(盒子大小谁来决定啊?数据类型)
在内存中的最基本的存储单元。
存数据用的,而且这个数据是可变的,所以叫做变量。
变量的使用
变量的三要素?
数据类型、变量名、值 (值就是数据,就是字面量。)
int i = 100;
java中的变量必须先声明,再赋值才能访问(必须手动赋值。)
int k; System.out.println(k); 这样是不行的。
可以在一行上声明多个变量:
int a, b, c = 100;
c变量赋值100,a,b变量只声明了没有赋值。
int a = 10, b = 20, c = 100;
可以这样每个都赋值。
声明和赋值可以分开,也可以一起做!!!
int i;
i = 100; // 先声明再赋值
int k = 200; // 声明的同时赋值
在“同一个域”当中,变量名不能重名!!!!!!
但可以重新赋值!!!!!!
{
int i = 100;
//double i = 2.0; // 重名了编译器会报错,不允许。
i = 300; // 可以重新赋值。
}
到底什么叫做同一个域?????
这个目前不太好解释,大家记住吧:一个大括号代表一个域。
{A域
{B域
{C域
}
}
}
A域包括B域,B域包括C域。
变量的分类
根据位置进行分类:记住就行
在方法体当中声明的变量叫做局部变量。
public static void m1(){
//局部变量,方法执行结束之后内存释放。
int k = 100;
int i = 200;
}
在方法体外以及类体内声明的变量叫做成员变量。
public class T{
public static void x(){
}
// 成员变量
int i = 200;
}
变量的作用域
出了大括号就不认识了。别的先别管。
{
int i = 100;
{
在这里可以访问i
}
}
{
在这里是无法访问i变量。
}
6.public class和class的区别?
- 一个java源文件当中可以定义多个class
- 一个java源文件当中public的class不是必须的
- 一个class会定义生成一个XXX.class字节码文件
- 一个java源文件当中定义公开的累的话,只能有一个,并且该类名称必须和java源文件保持一致。
- 每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B,想执行x.class当中的main方法:java X