day02-课堂笔记
1、打开DOS命令窗口,执行java HelloWorld,执行原理?
* java.exe命令会启动JVM
* JVM启动之后会启动类加载器ClassLoader
* ClassLoader会在硬盘上的某个位置搜索HelloWorld.class字节码文件
* 找到该文件则执行
* 找不到该文件则报错
疑问:ClassLoader是在哪个位置上搜索HelloWorld.class字节码文件的?
* 默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件
* 当然,也可以让ClassLoader去某个指定的路径下加载字节码文件,这时需要配置环境变量classpath
* classpath环境变量属于java语言中的环境变量,不属于windows操作系统【PATH环境变量属于操作系统】
* classpath是给ClassLoader类加载器指路的。
* 设置这样的环境变量:classpath=D:\course\JavaProjects\02-JavaSE\day02
- 打开dos命令窗口在任意位置,都可以执行:java HelloWorld
* classpath环境变量没有配置的话,类加载器默认从当前路径下找字节码文件,
当classpath环境变量配置为某个指定的路径之后,类加载器只去指定的路径当中加载字节码文件。
* 综上所述,环境变量classpath不再配置,这样类加载器会自动从当前路径下加载class字节码文件。
所以,每一次执行.class程序的时候,需要在DOS命令窗口中先切换到.class字节码文件所在的路径下。
然后运行。
* 当然,classpath也可以这样配置:classpath=.
注意:
路径中“..”表示上级目录
路径中“.”表示当前目录
2、关于java源程序当中的注释:
* 什么是注释?注释的作用是什么?
- 出现在java的源程序当中,对java源代码的解释说明
- 注释不会被编译到.class字节码文件当中
- 一个好的开发习惯应该是多编写注释,这样程序的可读性比较强。
* java中的注释怎么写呢?
- 单行注释
//单行注释,只注释当前行
- 多行注释
/*
多行注释
多行注释
多行注释
多行注释
多行注释
.....
*/
- javadoc注释
/**
* javadoc注释
* javadoc注释
* javadoc注释
* javadoc注释
* javadoc注释
* javadoc注释
*/
注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。
3、对HelloWorld程序进行解释:
需要记忆:
* public
* class
* static
* void
* System.out.println(""); 向控制台输出消息
* 类体
* 方法体
* 类体中不能直接编写java语句【除声明变量之外】
* 一个java语句必须以“;”结束
* 方法体中可以编写多条java语句
* 主方法是程序的入口,固定写法,SUN规定的。
4、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
* 注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行
阶段的错误:
D:\course\JavaProjects\02-JavaSE\day02>java Hello
错误: 在类 B 中找不到主方法, 请将主方法定义为:
public static void main(String[] args)
5、总结第一章需要掌握的内容:
* 理解java的加载与执行
* 能够自己搭建java的开发环境
* 能够独立编写HelloWorld程序,编译并运行
* 掌握环境变量path的原理以及如何配置
* 掌握环境变量classpath的原理以及如何配置
* java中的注释
* public class 和 class 的区别
第二章:java语言基础
1、标识符
1、在java程序当中,使用EditPlus工具进行代码编写的时候,
有一些单词是蓝色,有的是红色,有的绿色,有的是黑色,有
的是紫色,有的是粉色....
2、注意:在java源代码当中,在EditPlus工具中显示的高亮颜色为黑色时,
这个单词属于标识符。
3、标识符可以标识什么?
可以标识:
类名
方法名
变量名
接口名
常量名
......
4、到底什么是标识符呢?
一句话搞定:凡是程序员自己有权利命名的单词都是标识符。
5、标识符可以随意编写吗,有命名规则吗?有
什么是命名规则?
命名规则属于语法机制,必须遵守,不遵守命名规则标识不符合语法,
这样,编译器会报错。
规则1:标识符只能由数字、字母(包括中文)、下划线_、美元符号$组成,不能含有其它符号。
规则2:标识符不能以数字开头
规则3:关键字不能做标识符。**例如:public class static void 这些蓝色的字体都是关键字,关键字是不能做标识符的。**
规则4:**标识符是严格区分大小写的。大写A和小写a不一样。**
规则5:**标识符理论上是没有长度限制的。**
6、命名规范:
* 最好见名知意
* 遵守驼峰命名方式
* 类名、接口名:首字母大写,后面每个单词首字母大写
* 变量名、方法名:首字母小写,后面每个单词首字母大写
* 常量名: 全部大写
题目:
创建一个java文件,起名 123.java可以吗?
可以,完全可以,在windows操作系统中文件名叫做:123.java没毛病。
123其实并不是标识符。只是一个文件名。
只不过在123.java文件中无法定义public的类。
标识符除了命名规则之外,还有命名规范:
1、命名规则和命名规范有什么区别?
命名规则是语法,不遵守就会编译报错。
命名规范只是说,大家尽量按照统一的规范来进行命名,不符合规范也行,
代码是可以编译通过的,但是你的代码风格和大家不一样,这个通常也是
不允许的。
规则类似于:现实世界中的法律。
规范类似于:现实世界中的道德。
统一按照规范进行的话,代码的可读性很好。
代码很容易让其它开发人员理解。
2、具体的命名规范是哪些?
规范1:见名知意(这个标识符在起名的时候,最好一看这个单词就知道啥意思。)
规范2:遵循驼峰命名方式,什么是驼峰(一高一低,一高一低...)
驼峰有利于单词与单词之间很好的进行分隔
BiaoShiFuTest,这个很好,一眼就能看出来是4个单词。
规范3:类名、接口名有特殊要求
类名和接口名首字母大写,后面每个单词首字母大写。
StudentTest、UserTest ,这是类名、接口名。
规范4:变量名、方法名有特殊要求
变量名和方法名首字母小写,后面每个单词首字母大写。
nianLing(NianLing这样就不符合了。)
mingZi(MingZi这样也不符合了。)
**规范5:所有“常量”名:全部大写,并且单词和单词之间采用下划线衔接。**
USER_AGE :用户年龄
MATH_PI:固定不变的常量3.1415926.....
public class IdentifierTest{
public static void main(String[] args){
// 以下代码看不懂没关系,别着急。
// 主要看两个汉语拼音,可读性很强。
// nianLing和mingZi都是黑色字体的标识符。
int nianLing = 20;
String mingZi = "zhangsan";
public class BiaoShiFuTest{
// main是一个方法的名称,属于标识符
// 但是这个标识符不能修改,因为这个main是SUN固定死的。
public static void main(String[] args){
}
//doSome是一个方法名,可以改成其他的名字
public static void doSome(){
// k是一个变量名
int k = 100;
// nianLing 是一个变量名
int nianLing = 20;
}
}
编译报错,错误信息是:
错误: 需要<标识符>
错误原因:编译器检测到class这个单词,那么编译器会从class这个
单词后面找类名,而类名是标识符,编译器找了半天没有找到标识符,
因为123ABC不是标识符,所以编译器提示的错误信息是:需要<标识符>
解决办法:
将123ABC修改为合法的标识符。
class Y123ABC{
}
// 类名是标识符,标识符“中”不能有空格
/*
编译器错误信息是:
错误: 需要'{'
编译器检测到class,然后找class后面的标识符,编译器找到了一个合法的标识符
叫做“Hello”,然后编译器继续往后找“{”,结果没有找到“{”,所以报错了。
解决办法:
办法1:是把World删除
办法2:把空格删除
*/
/*
class Hello World{
}
*/
class Hello{
}
class HelloWorld {
}
class _A{
}
class _$1Aa你{
}
// 错误: 需要<标识符>
// 关键字不能做标识符
/*
class public {
}
*/
// 这个可以,因为 public1 不是关键字,可以用。
class public1 {
}
class b {
}
class B {
}
// 虽然java中的标识符严格区分大小写
// 但是对于类名来说,如果一个java源文件中同时出现了:A类和a类
// 那么谁在前就生成谁。大家以后最好不要让类名“相同”。
// 最好类名是不同的。
class HelloWorld2{
}
class helloWorld2{
}
2、关键字
3、字面值
1、关于程序当中的数据?
开发软件是为了解决现实世界中的问题。
而现实世界当中,有很多问题都是使用数据进行描述的。
所以软件执行过程中最主要就是对数据的处理。
软件在处理数据之前需要能够表示数据,在java代码中
怎么去表示数据呢?在java中有这样的一个概念:字面量。
注意:在java语言中“数据”被称为“字面量”。
10
1.23
true
false
‘a’
“abc”
以上这些都是数据,在程序中都被叫做“字面量”。
字面量可以分为很多种类:
整数型字面量:1 2 3 100 -100 -20 ....
浮点型字面量:1.3 1.2 3.14.....
布尔型字面量:true、false没有其它值了,表示真和假,true表示真,false表示假
字符型字面量:'a'、'b'、'中'
字符串型字面量:"abc"、"a"、"b"、"中国"
其中字符型和字符串型都是描述了现实世界中的文字:
需要注意的是:
所有的字符型只能使用单引号括起来。
所有的字符串型只能使用双引号括起来。
**字符型一定是单个字符才能称为“字符型”**
在语法级别上怎么区分字符型和字符串型?
主要看是双引号还是单引号。
单引号的一定是字符型。
双引号的一定是字符串型。
4、变量
什么是变量? 变量其实就是内存当中存储数据的最基本的单元。 变量就是一个存储数据的盒子。
在java语言当中任何数据都是有数据类型的,其中整数型是:int 没有为什么,java中规定的,整数型就是:int
当然,在java中除了数据类型int之外,还有其它的类型,例如带小数的:double等。。。
数据类型有什么用呢?
**记住:不同的数据类型,在内存中分配的空间大小不同。**
也就是说,Java虚拟机到底给这个数据分配多大的空间,主要还是看这个变量的数据类型。
根据不同的类型,分配不同大小的空间。
对于int这种整数类型,JVM会自动给int分配4个字节大小的空间。
1个字节=8个比特位
1个比特位就是一个1或0. 注意:比特位是二进制位。
int是占用多少个二进制位?1个int占有32个二进制位(bit位)
int i = 1; 实际上在内存中是这样表示的:
00000000 00000000 00000000 00000001
int i = 2;
00000000 00000000 00000000 00000010
二进制位就是:满2进1位(0 1 10 11 100 101....)
十进制位就是:满10进1位(1 2 3 4 5 6 7 8 9 10)
对于一个变量来说,包括三要素: 变量的数据类型 变量的名字 变量中保存的值
类型+名字+值
类型决定空间的大小。
起个名字是为了以后方便访问。(以后在程序中访问这个数据是通过名称来访问的。)
值是变量保存的数据。
变量名属于标识符吗?
变量名命名规范中是怎么说的?
首字母小写,后面每个单词首字母大写,遵循驼峰命名方式,见名知意。
变量怎么声明/定义,语法格式是什么?
数据类型 变量名;
例如:
int nianLing;
在java语言中有一个规定,变量必须先声明,再赋值才能访问。(没有值相当于这个空间没有开辟。)
在java语言中怎么给一个变量赋值呢,语法格式是什么?
记住:使用一个运算符,叫做“=”,这个运算符被称为赋值运算符。
赋值运算符“=”的运算特点是:等号右边先执行,执行完之后赋值给左边的变量。
6 变量可以声明的时候赋值吗?可以的。
7 变量赋值之后可以重新赋值。
8 一行中可以声明多个变量
9 变量必须先声明再访问
变量的作用域?
1、什么是作用域?
变量的有效范围。
2、关于变量的作用域,大家可以记住一句话:
出了大括号就不认识了。(死记这句话。)
3、java中有一个很重要的原则:
就近原则。(不仅java中是这样,其它编程语言都有这个原则。)
哪个离我近,就访问哪个。
5、数据类型
- 实际使用过程中,使用utf-8最多。
转义字符:
- '\n’换行符
- '\t’制表符tab
p41
p42_浮点型
- java源码文件:D:\Program Files\Java\jdk-15\lib\src.zip
- java字节码文件:
p43_布尔型
p44_数据类型转换
总结第二章
- 标识符
- 关键字
- 数据类型
- 进制换算
——————————————————————————————————————————————————## 运算符
关系运算符
逻辑运算符
注意短路与和逻辑与。短路与更加智能。实际开发中一般多用短路与。
2020.12.10晚21.52复习第一遍
2021.5.19下午17.20复习第二遍【大致浏览一遍】