cls 清屏
exit 退出
ipconfig 查看IP地址
ping 查看两台计算机之间是否可以正常通信
d: 回车 切换盘符
cd 命令切换目录:相对路径和绝对路径
C:\Windows>cd System32 相对路径(相对于当前位置而言)
C:\>cd c:\windows\system32 绝对路径(路径以盘符开始)
cd .. 回到上级
cd \ 回到根
mkdir 创建目录
del 删除文件
dir 查看当前目录下有哪些子目录或者子文件
注意:
在DOS命令窗口中,可以使用tab键自动补全。
在DOS命令窗口中,使用上下箭头可以翻出历史命令。
第一章——2、文本编辑快捷键
补充两个windows系统的组合键:
win + r 打开运行窗口
win + d 显示桌面
win + l 锁屏(离开电脑的时候要锁屏)
alt + tab 切换应用
第一代:机器语言
第二代:低级语言
第三代:高级语言
JDK:java开发工具包
JavaSE JavaEE JavaME
SUN公司开发的,带头人:james gosling java之父
简单性
多线程
面向对象
可移植,跨平台:因为JVM的存在。(Java虚拟机屏蔽了操作系统之间的差异)
windows上安装的JDK和Linux上安装的JDK的版本不同。
JDK版本不同,最终JVM的版本也是不同的,每一个操作系统都有自己的JVM。
健壮性:自动GC垃圾回收机制。
要求:自己能够从头描述到最后。(不参考任何资料的前提下)从编写到最终的运行,把过程描述出来。
编译期:(可以在windows上)
第一步:在硬盘的某个位置(随意),新建一个xxx.java文件
第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件
第三步:在xxx.java文件中编写“符合java语法规则的”源代码。
第四步:保存(一定要将xxx.java文件保存一下)
第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。
第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,
如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,
编译器报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。
并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)
运行期(JRE在起作用):(可以在windows上,也可以在其他的OS上。)
第七步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去
不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,有用)
第八步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码
第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。
JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101010..等的二进制)
第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和硬件进行交互。
以上是一个复杂的过程,那么缩减一下,程序员到底要干啥?
新建java文件
打开java文件
写java源代码
保存
javac命令编译
java命令运行
编写---->编译---->运行
Java体系的技术被划分为三大块:
术语 | 解释 |
---|---|
JavaSE | 标准版 |
JavaEE | 企业版 |
JavaME | 微型版 |
安装JDK之后:
术语 | 解释 |
---|---|
JDK | java开发工具包 |
JRE | java运行时环境 |
JVM | java虚拟机 |
第一:要会下载对应版本的JDK(http://www.oracle.com)
第二:要会安装JDK(双击,下一步)
第三:配置环境变量path
path=C:\Program Files\Java\jdk-13.0.2\bin
这样javac和java命令就可以使用了。
第四:编写HelloWorld.java程序。
第五:javac进行编译:
javac命令在使用的时候
javac + java源文件的路径(注意:路径包括绝对和相对。)
第六:java命令进行运行
java 类名 (一定要注意:这里不是路径。是类名)
这里涉及到另一个环境变量叫做:classpath
classpath没有配置的情况下:从当前路径下找xxx.class文件
classpath设置了具体路径之后,不再从当前路径下找了。
重点掌握path和classpath两个环境变量。
// 单行注释
/*
多行注释
*/
/**
* javadoc注释:这里的注释信息可以自动被javadoc.exe命令解析提取并生成到帮助文档当中。
*/
一个java文件中可以定义多个class
一个class编译之后会生成1个class字节码文件,2个class编译之后会生成2个class文件
任何一个class中都可以编写main方法,每一个main方法都是一个入口
public的类可以没有
public的类如果有的话,只能有1个,并且public的类名要求和文件名一致。
class A{
main(){}
}
java A
class B{
main(){}
}
java B
....
标识符可以标识什么?
类名、接口名
变量名、方法名
常量名
标识符——命名规则 :
1、标识符只能由数字、字母、下划线“_”、美元符号“$”组成,不能含有其它符号。
2、标识符不能以数字开始。
3、java 关键字和保留字不能作为标识符。例如:public class static void这些关键字
4、标识符严格区分大小写。
5、标识符理论上没有长度限制。
标识符——命名规范:
1、见名知意
2、驼峰命名方式,一高一低
3、类名、接口名:首字母大写,后面每个单词首字母大写。
4、变量名、方法名:首字母小写,后面每个单词首字母大写。
5、常量名:全部大写,每个单词之间使用下划线衔接。
标识符在editplus中是黑色字体。
关键字都是全部小写的,在editplus中以蓝色显示。
不需要特意记忆,一边学习一边记忆。
public
class
static
void
byte
short
int
long
float
double
boolean
char
true
false
if
else
switch
for
while
break
continue
........
什么是变量,怎么理解的?
一个存储数据的盒子,
一个存储数据的单元。
int i = 100;
System.out.println(i);
什么是字面量,怎么理解的?
1 2 3 4 -100 100 整数型字面量
3.14 浮点型的字面量。
true false 布尔型字面量
'a' '中' 字符型字面量
"abc" "a" 字符串型的字面量
字面量其实本质上就是“数据”。
变量怎么声明,怎么赋值?
声明:
数据类型 变量名;
int i;
赋值:用=赋值
变量名 = 字面量;
i = 100;
重新赋值:i = 200;
变量在同一个域当中不能重名。
{
int i = 2;
double i = 2.0;
//报错了,重名了。
}
变量的分类?
在方法体当中声明的就是局部变量。
在方法体外面声明的就是成员变量。
变量的作用域?
出了大括号就不认识了。
每一个变量都有自己的有效范围。出了范围就不认识了,就不能用了。
1. 什么是数据类型,有啥用?
数据类型决定了变量分配空间的大小,类型不同,空间大小不同。
(在内存中分配空间)
计算机的主要部件:CPU 内存 硬盘 主板。
2、数据类型分类?
基本数据类型:
byte short int long -float double - boolean - char
引用数据类型:
String..........
3、要求要理解二进制
4、要求理解二进制和十进制之间的互相转换
5、8种基本数据类型,每个占用空间大小
类型 字节
------------------
byte 1
short 2
int 4
long 8
float 4
double 8
boolean 1
char 2
6、记忆byte short int char的取值范围:
byte -128 ~ 127
short -32768 ~ 32767
int -2147483648 ~ 2147483647
char 0~65535
7、理解字符编码?
什么时候会有乱码?编码和解码采用的不是同一套字符编码方式。
怎么理解字符编码?字符编码是人为制定的,一个字典表,字典中描述了转换关系。
常见的字符编码?
ASCII:
'a' 97
'A' 65
'0' 48
...
ISO-8859-1(latin-1)
GBK
GB2312
GB18030
Big5
unicode : java中采用的统一了全球所有的文字。
8、数据类型详细介绍
char
可以存储1个汉字
用单引号括起来
转义字符:
\t
\n
\'
\"
\\
\u
....
char c = 97;
System.out.println(c); //输出'a'
byte short int long
int最常用
任何一个数字,例如:1232 3 5 9,默认都是当做int处理,想当做long,必须加L或者l
123L这就是long类型
自动类型转换:小-->大
强制类型转换:大-->小,需要加强制类型转换符。另外运行可能损失精度。
当一个整数没有超出byte short char的取值范围,
可以直接赋值给byte short char类型的变量。
在java中整数型字面量表示的时候有四种方式:
10 十进制
010 八进制
0x10 十六进制
0b10 二进制
float double
浮点型的数字默认被当做double来处理,
想以float形式存在,数字后面添加F/f
float f = 1.0; //错误的
float f = 1.0f;
float f = (float)1.0;
要知道浮点型数据在java语言中存储的都是近似值。
还有一点:float和double的空间永远比整数型空间大,比long大。
boolean
boolean类型只有两个值:true false,没有其他值。
布尔类型使用在逻辑运算,条件判断当中。
9、基本数据类型转换的6条规则:
1、八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
2、如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;
3、小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte < short(char) < int < long < float < double,
其中 short和 char 都占用两个字节,但是char 可以表示更大的正整数;
4、大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,
但运行时可能出现精度损失,谨慎使用;
5、byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
6、多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;
1、算术运算符
+ - * / % ++ --
重点:++
++无论出现在变量前还是后,只要++运算结束,一定会自加1.
int i = 10;
i++;
System.out.println(i); // 11
int k = 10;
++k;
System.out.println(k); // 11
++出现在变量前:
int i = 10;
int k = ++i;
System.out.println(k); // 11
System.out.println(i); // 11
++出现在变量后:
int i = 10;
int k = i++;
System.out.println(k); // 10
System.out.println(i); // 11
int i = 10;
System.out.println(i++); // 10
解开以上题目的窍门是什么?拆代码
int temp = i++;
System.out.println(temp); // 10
System.out.println(i); // 11
int i = 10;
System.out.println(++i);
会拆代码:
int temp = ++i;
System.out.println(temp); // 11
System.out.println(i); // 11
2、关系运算符
>
>=
<
<=
==
!=
结果都是布尔类型。true/false
3、逻辑运算符
&
|
!
&&
||
逻辑运算符要求两边都是布尔类型,并且最终结果还是布尔类型。
左边是布尔类型 & 右边还是布尔类型 -->最终结果还是布尔类型。
& 两边都是true,结果才是true
| 一边是true,结果就是true
! 取反
&&实际上和&运算结果完全相同,区别在于:&&有短路现象。
左边的为false的时候:&& 短路了。
左边为true的时候:|| 短路了。
4、赋值运算符
=
+=
-=
*=
/=
%=
重要规则:
扩展赋值运算符在使用的时候要注意,不管怎么运算,最终的
运算结果类型不会变。
byte x = 100; // byte最大值127
x += 1000; // 编译可以通过,x变量还是byte类型,只不过损失精度了。
x += 1000; 等同于: x = (byte)(x + 1000);
int i = 10;
i += 10; // 等同于:i = i + 10; 累加。
5、条件运算符
?:
三目
布尔表达式 ? 表达式1:表达式2
布尔表达式为true,选择表达式1作为结果。
反之选择表达式2作为结果。
6、字符串连接运算符
+
+ 两边都是数字,进行求和。
+ 有一边是字符串,进行字符串的拼接。
+ 有多个的话,遵循自左向右依次执行:1 + 2 + 3
如果想让其中某个加号先执行,可以添加小括号:1 + (2 + 3)
注意:字符串拼接完之后的结果还是一个字符串。
技巧:怎么把一个变量塞到一个字符串当中。
String name = "jackson";
System.out.println("登录成功,欢迎"+name+"回来");
选择语句
if
switch
循环语句
for
while
do..while
转向语句
break;
continue;
return;
1、选择语句/分支语句 if
四种写法。
语法机制:
if(布尔表达式){
}
if(布尔表达式){
}else{
}
if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}
if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else{
}
if语句嵌套:
if(布尔表达式){ //前提条件
if(布尔表达式){
if(布尔表达式){
}else{
}
}
}else{
}
执行原理:
对于一个if语句来说,只要有1个分支执行,整个if语句结束。
当布尔表达式的结果为true时,分支才会执行。
分支当中只有一条java语句,大括号可以省略。
带有else的可以保证肯定会有一个分支执行。
2、选择语句/分支语句 switch
完整语法结构:
switch(值){ //值允许是String、int,(byte,short,char可以自动转换int)
case 值1: case 值x:
java语句;
break;
case 值2:
java语句;
break;
case 值3:
java语句;
break;
default:
java语句;
}
3、for循环
for循环语法机制:
for(初始化表达式;条件表达式;更新表达式){
循环体;
}
for(int i = 0; i < 10; i++){
System.out.println(i);
}
for循环执行原理:
1、先执行初始化表达式,并且只执行1次。
2、然后判断条件表达式
3、如果为true,则执行循环体。
4、循环体结束之后,执行更新表达式。
5、继续判断条件,如果条件还是true,继续循环。
6、直到条件为false,循环结束。
4、while循环
while(布尔表达式){
循环体;
}
执行次数:0~N次。
5、do..while循环
do{
循环体;
}while(布尔表达式);
执行次数:1~N次。
6、break;
默认情况下,终止离它最近的循环。
当然,也可以通过标识符的方式,终止指定的循环。
for(int i = 0; i < 10; i++){
if(i == 5){
break;
}
code1;
code2;
code3;
code4;
....
}
7、continue;
终止当前“本次”循环,直接跳入下一次循环继续执行。
for(int i = 0; i < 10; i++){
if(i == 5){
continue;
}
code1;
code2;
code3;
code4;
....
}
上一章:JavaSE 基础 - 第六章 控制语句【习题练习】
下一章:JavaSE 基础 - 第七章 方法