时间段:2022/2/17-2022-2/20
(忽略格式,后期上手了整理)
为什么选择java?
过去半年,无论是什么原因或者是谁的原因,我已经很明显能感觉到自己已经偏离了一种正常的状态了。无论hhl给我的影响有多大,对我自己来说,都不应该继续这样下去。很明显,我不甘于做那样的一个人;幸运的是,我对了解新事物始终有很大的兴趣。
为什么要写这个?
监督、记录并改变。
更新内容以及更新规律?
一周一更吧!记录一下过去的一周的收获,如果有有趣的事发生,在首尾某个地方可能会体现。
还有什么要说的吗?
随便记记,就当复习笔记使用了,或者说,给未来一个谈资?
对了,还有一句话:
你是什么样的人,取决于你选择成为什么样的人。
以下是这段时间的学习记录:初入编程世界!(当然本科的计算机相关课程不算)
第一天:
1、从今天开始成为一名JAVA软件工程师!!!
2、什么是软件工程师?
3、什么是软件?
应用软件的开发
4、最基本的windows的相关DOS命令
exit 退出当前窗口命令
cls 清屏
dir 列出当前目录下所有的子文件/子目录
cd 完成目录的切换
cd..回到上级目录
cd 直接回到根路径
切换盘符;C:+回车
del A.class 删除A.class文件
del *.class 删除所有class文件
ipconfig 查看本机ip地址(ip地址的配置信息)
ipconfig /all 查看更详细的网络信息:包含网卡物理地址(这个地址具有全球唯一性,又叫MAC地址)
ping ip地址(或域名) 测试两台电脑/服务器 是否可以正常建立通信
ping ip地址(或域名)-t 测试网络是否稳定
Ctrl+C 强行终止一直执行的DOS命令
5、Windows操作系统的设置
设置文件扩展名可见.java
6、Java的加载与执行
*Java程序的运行包含两个重要阶段:编译期、运行期
*.Java源程序---.class字节码文件
*编译阶段
编译阶段的主要任务是检查Java源程序是否符合Java语法,
符合则能够生成正常的字节码文件,不符合则无法生成
编译阶段的过程:
程序员需要在硬盘中的某个位置(随意)新建一个.Java扩展名的文件
该文件被称为源文件,源文件中编写的是Java源代码/源程序
这个源程序是不能随意编写,必须符合Java语法规则(java语法规则是需要记忆的)
java编译器:javac.exe
java程序员需要使用JDK中自带的javac.exe命令进行java程序的编译
javac怎么用?在哪儿用?
-使用规则
javac java源文件的路径
在DOS命令窗口中使用
javac是一个java编译工具/命令
一个java源文件可以编译生成多个class文件。
编译完成之后,可以将class文件copy到其它操作系统当中运行(跨平台)
*运行阶段
JDK安装之后,除了自带javac.exe,还有一个java.exe命令/工具,主要负责运行阶段
A.class 类 A:类名
java.exe使用规则:
-在DOS窗口中使用
-java A
比如:有一个A.class文件,则:java A
有一个B.class文件,则:java B
有一个B.class文件,则:java C
千万不要写成java A.class(错误用法)
运行阶段的过程:
*打开DOS命令窗口
*输入java A
*java.exe命令会启动java虚拟机(JVM),JVM会启动类加载器classloader
*classloader回去硬盘上搜索A.class文件,找到该文件并将该字节码文件装载到JVM中
*JVM将A.class文件解释成二进制010111000这样的数据
*然后操作系统执行二进制和底层硬件平台进行交互
7、JDK、JRE、JVM
JDK:java开发工具箱
JRE:java运行环境
JVM:java虚拟机
JDK包含JRE包含JVM
8、常用的文本编辑快捷键
回到行首 home
回到行尾 end
光标行尾:shift+home 选中整行
光标行首:shift+end 选中整行
回到文件头部:Ctrl+home
回到文件头部:Ctrl+end
选中一个单词:鼠标双击
选中一行:鼠标三击
不用鼠标选中单词:Ctrl+shift+左/右
9、编写helloworld
安装JDK
10、编写
括号(){}[]成对写
11、第一个Java程序:HelloWWorld
11.1、Java源代码只要修改,必须重新编译生成新的class字节码文件
11.2、编译阶段Javac
怎么编译?使用什么命令?这个命令怎么使用?
需要使用的命令是Javac.exe
这个命令需要先测试:在DOS窗口里检查Javac命令是否可用
配置path环境变量:计算机属性-高级系统设置-环境变量-双击或其它
环境变量当中都是路径,用半角分号隔开
环境变量包括:系统变量跟用户变量
系统变量:范围大,对计算机所有用户都起作用
用户变量:只作用于当前用户
path=A;B;C;D...path是环境变量的名字,A为环境变量的值
-----------------------------------------------------------------------------------------------
Javac命令怎么用?
Javac Java源文件的路径
路径分为:绝对路径和相对路径:带盘符为绝对路径
神操作???怎么在dos中快速定位到文件路径??
把Java源文件直接拖进dos命令就可直接生成路径
直接在对应文件地址栏的路径后面回车cmd
11.3、运行阶段
运行的前提是生成了class文件
怎么运行?使用什么命令?
使用JDK的bin目录下的:Java.exe命令来运行
测试Java.exe是否可用
DOS下:Java -version
语法格式
Java 类名
比如:java HelloWorld
运行Java程序需要哪些步骤?
第一步:先使用cd命令切换到xxx.class文件所在的路径
第二步:执行java xxx
12、其它环境变量
JAVA_HOME:JDK所属的环境变量,目前不用配置
后期学习到javaWEB时需要安装Tomcat服务器,才需要必须配置
13、研究"java HelloWorld"执行过程以及原理
DOS F:JAVAcourse 3-javaprojects 2-javaSEchapter01>java HelloWorld后发生了什么?
第一步:先启动JVM虚拟机
第二步:JVM启动后,JVM会去启动类加载器"classloader"
类加载器的作用:加载类,本质上,类加载器复杂去硬盘上找"类"对应的class字节码文件
第三步:类加载器如果在硬盘上找不到对应的字节码文件,会报错:
错误: 找不到或无法加载主类
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM中,JVM启动"解释器"将字节码解释为"1010111001"这种二进制码,操作系统执行二进制码和硬件交互
神操作!!!用过的DOS命令可以通过上下箭头翻出来!!
问题1???
默认情况下,类加载器去硬盘上找“字节码”文件的时候,默认从哪里找?
当前路径下
问题2???
能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件?
答案:可以,但是我们需要设置一个环境变量:classpath
classpath是一个环境变量,是给类加载器指路的,classpath环境变量隶属于Java,属于Java特有
classpath=A路径;B路径;....A路径为变量值
classpath环境变量在Windows中没有,需要新建!!!
新建方法:计算机属性-高级系统设置-环境变量-新建
配置了classpath变量以后,类加载器会且只会去已经配置好的路径下找class文件
结论:到目前为止,classpath环境变量不需要配置
但必须理解classpath环境变量是干什么的!!!
在没有配置classpath时,默认从当前路径下加载,配置了以后只能去指定路径加载!!
.:代表当前路径
14、(了解即可,不需要掌握)高版本JDK新特性
高版本JDK中,有了这样一个新特性,可以这样一步到位:
java x/y/z/xxx.java
java后面直接加java源文件的路径
这个特性是为了简化开发而提出的,但实际上底层的实现原理还是和以前一样的
以上命令在执行过程中,还是会先进行编译,然后再运行,并且以上的运行方式编译生成的class文件在硬盘上看不到,不存在
15、关于第一个程序代码的解释说明(见HelloWorld.java文件)
注释:对代码的解释说明
三类注释:
1)// 这种注释属于单行注释,只注释两个//后面的
2)
3)
javadoc注释,这类注释可以都bin目录下的javadoc.exe文件解析提取并生成到帮助文档里
以下是编写的相关程序:
// 这种注释属于单行注释,只注释两个//后面的
public class HelloWorld{//这是一个类,类名叫做
public static void main(String[] args){
System.out.println("Hello World");
System.out.println("动力火车");
}
}
public class Test{//声明/定义一个公开的类,起个名字叫Test
//类体
//整个这一块的代码被称为:main方法(程序的入口,sun公司java语言规定的)
//也就是说,JVM在执行程序的时候,会主动寻找这样一个方法,没有这个规格的方法,程序是无法执行的
//main方法也可以叫做主方法
//注意:方法必须得放到"类体"中,不能放在类体外面
//任何程序都要有一个入口,没有入口进不来,无法执行
public static void main(String[] args){//这是一个入口方法
//注意:args可以改名字,随意,对于主方法来说,只有这个位置可以改,其它位置不能动
//方法体
//注意:方法体由一行一行的"java语句"构成
//并且非常重要的是,任何一条java语句必须以";"结尾
//分号代表一条语句的结束
//非常重要的是,方法体中的代码遵循自上而下的顺序一次逐行执行
System.out.println("Test 1");
//System.out.println();这行代码的作用是向控制台输出一句话,就是这个作用,没有别的作用
//注意,如果println后面的小括号里的内容是一个"字符串"的话,必须使用英文双引号括起来
//双引号也要成对写(规定)
System.out.println("Test 2");
}
//能再定义一个入口吗?不能,有语法错误,会编译错误
//方法二
//方法三
}
public class Test2{
//主方法,入口
//类体中应该是方法,而不是java语句,编译会报错
//必须有入口,不一定非要方法,即:不能直接输出语句
public static void main(String[] sasa){
System.out.println("Test 2");
}
}
public class Test3{
public static void main(String[] args){
//这个不加双引号行吗?可以,因为它是数字
//是数字,加双引号行吗?行,但它就变成了一个字符串,但输出到控制台上一个样子没什么区别
//但本质不一样,一个是数字,一个是字符串
//对于数字来说,可以进行+-*/运算
System.out.println(100+20);//120
System.out.println(100-20);//80
System.out.println(100*20);//2000
System.out.println(100/20);//5
}
}
class A{
public static void main(String[] args){//一般一个软件的执行入口只有一个,不会出现多个,有这一个就够了
}
}
class B{
public static void main(String[] args){//一般一个软件的执行入口只有一个,不会出现多个
}
class C{
public static void main(String[] args){//一般一个软件的执行入口只有一个,不会出现多个
public class work2{
public static void main(String[] args) {
System.out.println("---------------------------------------------------------------------");
System.out.println("|手机商品列表 |");
System.out.println("---------------------------------------------------------------------");
System.out.println("|商品编号 |商品编号 |单价(元) |");
System.out.println("---------------------------------------------------------------------");
System.out.println("|1399203919 |A型号 |1299.20 |");
System.out.println("---------------------------------------------------------------------");
System.out.println("|1399203920 |B型号 |1299.20 |");
System.out.println("---------------------------------------------------------------------");
System.out.println("|1399203921 |C型号 |1299.20 |");
System.out.println("---------------------------------------------------------------------");
System.out.println("|1399203922 |D型号 |1299.20 |");
}
}
第二天:
1、标识符
1.1、到底什么是标识符?
凡是程序员自己有权利命名的单词都叫标示符
1.2、标识符可以标识什么?
可以标识
类名
方法名
变量名
接口名
常量名
1.3、问题???
main是一个方法的名称,属于标识符,但是不可更改,SUN公司固定死的
1.4、标识符的命名规则
什么是命名规则?
命名规则属于语法机制,必须遵守,不遵守则不符合语法,这样的话编译器会报错
规则1:标识符只能由数字、字母(包括中文)、下划线_、美元符号$组成,不能含有其它符号(包括空格)
规则2:标识符不能由数字开头
规则3:关键字和保留字不能做标识符。例如:public、class、static、void、int等这些蓝色的主体都是关键字,不能做标识符。
规则4:标识符严格区分大小写
规则5:标识符没有长度限制
1.5、文件名可以由数字开头命名
但是注意:定义公共的类public 不能由数字开头,因为public定义的类的名字必须与文件名相同,文件名可以123,但是对于public来说,123这个类名(标识符)是不合法的。
1.6、标识符命名规范
标识符除了命名规则以外,还有命名规范
1)他俩的区别是:规则是语法,不规则会报错;规范是大家约定俗成的,一般大家都统一按照规范来。增强可读性、易理解
2)具体有:
规范一:见名知意(一看就知道啥意思)
规范二:遵循驼峰命名方式(比如:BiaoShiFuTest,一眼就能看出多少个单词)
规范三:类名、接口名有特殊要求:首字母大写,后面每个单词首字母大写(比如:BiaoShiFuTest、UserTest)
规范四:变量名、方法名有特殊要求:首字母小写,后面每个单词首字母大写(比如:nianLing、xingMing)
规范五:所有常量名大写,单词间用_隔开(比如:USER_AGE)
2、关键字
3.1、什么是关键字
在sun公司开发java语言的时候,提前定义了一些具有特殊含义的单词,这些单词全部小写,具有特殊含义,不能用作标识符
3.2、凡是在EditPlus中以蓝色字体存在的都是关键字,具有特殊含义,全部小写
注意:java语言中是严格区分大小写的,比如public跟Public不一样,后者就不是关键字了
3.3、关键字有哪些?需要背吗?
关键字有:
public
static
void
class
byte
short
int
long
float
double
boolean
char
true
false
if
while
for
private
protected
....
对于这些关键字来说,不需要专门去记忆,学到后面会一直重复
4、变量
4.1、关于程序中的数据?
开发软件解决现实中的问题-现实中的问题大多使用数据描述
所以软件执行过程中最主要的就是对数据的处理。
软件在处理数据之前需要能够表示数据,在java代码中,怎么去表示数据呢?
在java中有这样一个概念:字面量
10
1.23
true
false
"abc"
'a'
以上这些都是数据,在程序中都被叫做“字面量”
字面量可以分为很多种类:
整数型字面量:1 2 3 100 -20 ...
浮点型字面量:3.14 1.2 1.5 ...
布尔型字面量:true、false就这两个
字符型字面量:'a' 'b' '中' ...
字符串字面量:"abc" "a" "中国" ...
需要注意的是:字符型和字符串型都是描述了现实世界中的文字,所有的字符型都需要''括起来,所有的字符串型都需要""括起来。
字符型只能是单个字符,字符串无所谓
在语法级别上,怎么区分字符型跟字符串型?(通过单双引号)
//4.2、什么是变量?
//分析:如果只有字面量,没有变量机制会有什么问题?
//内存说明:10是一个数据,在内存中占用一定的 空间
//10+20=30:在内存中找出一块空间存储10,再找一块存储20,CPU负责“+”,得出的结果30再找一块空间存储
//思考:以下的10占用一块还是三块空间?答案:虽然都是10,但占用三块
System.out.println(10);
System.out.println(10);
System.out.println(10);//只有字面量机制会重复占用内存空间
//定义/声明一个变量,起名i
int i=1000;
//以下这5次访问都是访问的同一块内存空间(使用变量后,内存得到了重复利用)
System.out.println(i);
System.out.println(i);
System.out.println(i);
System.out.println(i);
System.out.println(i);
//以下程序表示访问的是字符i及字符串i,和变量没有关系!
System.out.println('i');
System.out.println("i");
4.3、javadoc的使用
了解即可
相关代码:
public class IdentifierTest{
public static void main(String[] arg){
}
//dosome是一个方法名,可以改成其它名字
public static void dosome(){
//k是一个变量名
int k=100;
}
}
class helloworld
{
}
//虽然java中的标识符严格区分大小写,但是对于类名来说,无论大小写,谁在前生成谁.class,故最好让类名是不同的。
class Helloworld1
{
}
class helloworld1
{
}



