前言:本系列主要复习Java的一些重要知识点,天马行空,不成体系,望见谅!
目录
常用命令行指令
- dir : 列出当前目录下的文件以及文件夹(directory)
- md : 创建目录(make directory)
- rd : 删除目录(remove,要求目录为空才能删除)
- cd : 进入指定目录
- cd.. : 退回到上一级目录
- cd\: 退回到根目录
- del : 删除文件(特指文件,若del目录,表示删除目录内容,目录保留)
- exit : 退出 dos 命令行
- echo表示创建文件,name:Tom为写入TXT中的内容
- *.doc表示所有doc文件
- del 1表示删除目录1中的所有文件,但不删除目录本身
Java概述
- Java三大特性:封装,继承,多态,核心机制为JVM和GC。
- Java类间单继承,接口间多继承
- JDK1.8即JDK8.0,J2EE即Java EE,J2SE即Java SE
- 对应不同的系统平台,JVM(Java虚拟机,虚拟计算机)不同(进一步地,JRE不同),JVM负责程序运行
- 源文件.java--->编译生成.class文件,即字节码文件
- 层次:硬件--》操作系统--》JVM(负责执行字节码文件)
环境变量的配置(在任何目录下均可运行命令)
- 配置path环境变量,path表示OS执行命令时的搜寻路径,配置如下图(第一张)
- classpath表示运行Java程序时寻找的class所在路径
- %~%表示动态获取地址,对应变量JAVA_HOME(名字随意),便于地址改变时不需要重新配置路径
Java程序运行准备与步骤
- JDK即Java开发工具包括JRE(运行环境,包括类库和JVM),配置JRE的PC即可运行Java程序
- javac.exe:编译工具
- jar.exe:打包工具
- java.exe:运行工具
- 运行时先cd到目录下,再javac hello.java(生成字节码文件)
- 然后java hello(解释执行,此时不需要.java后缀)
- 即运行程序的步骤为:先编译,然后生成多个字节码文件,然后运行
Java程序结构
1)
public static void main(String[] args){}
//主方法,程序入口
System.out.printIn("");//有In表示写完换行
2)
一个源文件(.java后缀)可以包含多个类,一个源文件编译生成多个字节码文件(字节码文件数量与类的数量一致,且以源文件中的各类名命名)
3)运行时只运行main方法所在类的字节码文件
源文件中多个类里只有一个public类(可没有public类),若存在,则该类名必定与源文件名相一致。
注释
关注多行不可嵌套
/* /* */(此处即结束) */
文档注释
格式
/**
@author liu
@version 1.1
*/
特点:
- 可被javadoc解析,生成一套以网页文件形式体现的文档说明
- 以 /** 开始,以 */结束
- 可参考javadoc命令详解
javadoc -d 文档存放目录名 -author -version 源文件名.java
src.zip为存储源码的压缩包
标识符
- Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。
- 命名标记符时要避免使用这些保留字
- byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
- Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
- 凡是自己可以起名字的地方都叫标识符。
- 关键词字母均小写
命名规则
- 标识符可选取0-9,_,$,即大小写字母(大小写区分)
- 标识符无空格,不可数字开头
- Static(Java区分大小写,对) static1(对)
命名规范(可不遵守)
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz(TestJava)
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz(myInt/getId)
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
Java变量概述
先声明(int a = 1;//要有初始化值,此处为显式初始化)后使用
整型变量
Java各整类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
java的整型常量默认为 int 型(如5为int类型),声明long型常量须后加‘l’或‘L’
附:remember整型所占字节
浮点型变量
Java 浮点类型(带小数点)也有固定的表数范围和字段长度,不受OS的影响。
Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
float f1=12.3f;//报错,没F损失精度,因为浮点型默认为double,8字节放入4字节
long i1=2134;//不损失精度,因为默认int,小可放入大(4->8),但大不可放入小中
字符型变量
char两字节
char = 'ab';//error
String = "ab";//right
char型数据用来表示通常意义上“字符”(2字节)
字符型常量
字符常量的三种形式:
1)字符常量是用单引号(‘ ’)括起来的单个字符,涵盖世界上所有书面语的字符(中文,英文等)。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
2)使用转义字符‘\’将其后的字符变为特殊字符型常量。
例如:char c3 = ‘\n’; // '\n'表示换行符
3)使用 Unicode 值来表示字符常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n
char型可以运算,根据其对应的Unicode码,'a'为97,'A'为65.
syso(" \"帅哥\" ");//灵活使用转义字符,表示""
布尔型变量
- boolean类型数据只允许取值true和false,无null
- 不可以0或非 0 的整数替代false和true,这点和C语言不同
- 一字节为8位
- ASCII(一字节,首位规定为0,128个字符)-->Unicode(三字节)-->UTF-8(可变长度)
自动类型转换
自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
多种类型数据混合运算时,自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
注:包装类不会自动类型转换
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
如short+byte--->int(赋值给short类型变量:error) char + byte --->int
当把任何基本数据类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
String a1 = "ab" + 123;//yes
String a1 = ab;//error
string st1 ="12"<=>string st1 = 12 +"";
float a=12L;//不损失精度,关注上表,因为存储方式不同,float的一些位数为小数位
//float用科学计数法表示
自动类型转换的逆过程
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(()),但可能造成精度降低(截取高位)或溢出,格外要注意
字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
如: String a = “43”; int i = Integer.parseInt(a);
boolean类型不可以转换为其它的数据类型。
三码(补码,原码,反码)
补码为底层存储形式,关注-128的补码,先看-127的补码,然后减一
负数反码——》补码:加1即可
正数三码合一
变量运算
除法/
int i=12;
int d = 12/5;//2
double d = double(i/5);//2.0,相当于int a = i/5 ; double d = double(a);
double d = i/5;//自动类型转换,5为int,所以为2.0,不要忘了0啊,相当于int a = i/5 ;double d = a
double d= (double)i/5;//2.4
double d1 = i/5.0;//自动类型转换,5.0为double,所以为2.4
取模%
int i1 = 12%5;//2
int i2 = -12%5;//-2
int i3 = 12%(-5);//2
int i4 = -12%(-5);//-2
符号取决于被模数
运算符++
int myInt1 = 10;
int myInt2 = myInt1 ++;//先运算后++
sop(myInt1);//11
sop(myInt2);//10
int myInt1 = 10;
int myInt2 = ++ myInt1;
sop(myInt1);//11
sop(myInt2);//11
带字符串的混合运算
sop("\t"+"\n"+1);//字符串
sop('\t'+'\n'+1);//char类型,作和运算
char c1 = 'a';
sop((int)c1);//强制类型转换{小变大},为了看c1的Unicode值
sop(c1+0);//与上行代码等效,本行代码自动转换为int类型
System.out.println((int)'\t');
System.out.println((int)'\n');
System.out.println('z'); //println(char)
System.out.println('\t'+'\n'); //先转化为int值后运算
System.out.println("\t"+"\n"+5); //实际意义
9
10
z
19
5