常用DOS命令
dir
:列出当前目录下的文件和文件夹md
:创建目录rd
:删除目录cd
:进入指定目录cd..
:退回到上一级cd\
:退回到根目录del
:删除文件exit
:退出dos
命令行
Java语言的主要特性
Java
语言是易学的。Java
语言的语法与C
语言和C++
语言很接近,使得大多数程序员很容易学习和使用Java
。Java
语言是强制面向对象的。Java
语 言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements
)。Java
语言是分布式的。Java
语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net
),它提供了用于网络应用编程的类库,包括URL
、URLConnection
、Socket
、ServerSacket
等。Java
的RMI
(远程方法激活)机制也是开发分布式应用的重要手段。Java
语言是健壮的。Java
的强类型机制、异常处理、垃圾的自动收集等是Java
程序健壮性的重要保证。对指针的丢弃是Java
的明智选择。Java
语言是安全的。Java
通 常被用在网络环境中,为此,Java
提供了一-个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader
),如分配不同的名字空间以防替代本地的同名类、字节代码检查。Java
语言是体系结构中立的。Java
程序(后缀为java的文件)在Java
平台上被编译为体系结构中立的字节码格式(后缀为class
的文件),然后可以在实现这个Java
平台的任何系统中运行。Java
语言是解释型的。如前所述,Java
程序在Java
平台上被编译为字节码格式,然后可以在实现这个Java
平台的任何系统的解释器中运行。Java
是性能略高的。与那些解释型的高级脚本语言相比,Java
的性能还是较优的。Java
语言是原生支持多线程的。在Java
语言中,线程是一种特殊的对象,它必须由Thread
类或其子(孙)类来创建。
Java技术体系
Java SE(Java Standard Edition)
标准版- 支持面向桌面级应用(如
Windows
下的应用程序)的Java
平台, 提供了完整的Java
核心API
,此版本以前称为J2SE
。
- 支持面向桌面级应用(如
Java EE(Java Enterprise Edition)
企业版- 是为开发企业环境下的应用程序提供的一套解决方案。 该技术体系中包含的技术如:
Servlet
、Jsp
等 ,主要针对于Web
应用程序开发。版本以前称为J2EE
- 是为开发企业环境下的应用程序提供的一套解决方案。 该技术体系中包含的技术如:
Java ME(Java Micro Edition)
小型版- 支持
Java
程序运行在移动终端(手机、PDA
)上的平台,对Java API
有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME
- 支持
Java Card
- 支持一些Java小程序(
Applets
) 运行在小内存设备(如智能卡)上的平台
- 支持一些Java小程序(
Java语言的特点
- 特点一:面向对象
- 两个基本概念:类,对象
- 三大特性:封装、继承、多态
- 特点二:健壮性、完整性
- 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制
- 特点三:跨平台性
jvm
- 跨平台性:一次编写,到处运行
- 原理:在需要运行
Java
程序的操作系统上,安装Java虚拟机(JVM,Java Virtual Machine
)。由JVM来负责Java程序在该系统中运行。
两种核心机制
- Java虚拟机
- 垃圾回收机制(Garbage Collection),GC
Java环境安装和配置
Java开发工具包=JDK
- 在网上下载需要的JDK后,安装到自己指定的目录,最好是直接下载一个压缩包(免安装版),解压到指定目录。
- 配置系统变量
- 新建变量
JAVA_HOME
,值为解压后JDK的目录 - 新建变量
CLASSPATH
,值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 修改
Path
,新增两行,一行为%JAVA_HOME%\bin\
,零一行为%JAVA_HOME%\jre\bin
- 新建变量
- 在
CMD
中,输入java -version
,若有输出版本号,则为配置成功
若需要修改JDK的版本,只用把系统变量的JAVA_HOME
更改为所需要的JDK目录即可。
JDK、JRE、JVM的关系
JDK(Java Development Kit)
Java
工具包。- 提供给
Java
开发人员使用,其中包含了Java
的开发工具,也包括了JRE
。所以安装了JDK
,就不用单独安装JRE
了。 - 其中的开发工具:编译工具(
javac.exe
),打包工具(jar.exe
)等。
JRE(Java Runtime Environment)
Java
运行环境- 包括
Java
虚拟机(JVM,Java Virtual Machine
)和Java程序所需的核心类库等,如果想要运行一个开发好的Java
程序,计算机中只需安装JRE
即可。
- 简而言之,
JDK
用来开发,JRE
用来运行,JVM
<JRE
<JDK
HelloWorld
//Test.java
public class Test{//类名必须和文件名相同
public static void main(String[] args){
System.out.print("Hello,world");
}
}
-
javac Test.java
-
编译完后,会在同目录下新增一个
Test.class
文件 -
java Test
注释
-
单行注释
//
-
多行注释
/**/
-
文档注释(
java
特有)/** * @author 作者 * @version 版本 * @since 最低支持的JDK版本 */ public class Doc { String name; /*** * @param name * @return 返回值 * @throws Exception */ public void sayName(String name) throws Exception{ return; } }
#在CMD中用javadoc生成html文档 javadoc -encoding UTF-8 -charset UTF-8 xxx.java
关键字和保留字
关键字
-
定义与特点
- 定义:被Java语言赋予了特殊意义,用做专门用途的字符串(单词)
- 特点:关键字所有字母均为小写
-
用于定义数据类型的关键字
class
、interface
、enum
、byte
、short
、int
、long
、float
、double
、char
、boolean
、void
-
用于定义数据类型值的关键字
true
、false
、null
-
用于定义流程控制的关键字
if
、else
、switch
、case
、default
、while
、do
、for
、break
、continue
、return
保留字
- 定义:现有
Java
版本尚未使用,但以后版本可能会做为关键字使用。自己命名标记符时要避免使用这些保留字。 byValue
、cast
、future
、generic
、inner
、operate
、outer
、rest
、var
、goto
、const
标识符
- 标识符
Java
对各种变量、方法、类等要素命名时使用的字符序列称为标识符- 凡是自己可以起名字的地方都叫做标识符
- 定义合法标识符规则
- 由26个英文字母大小写、
0-9
、_
或$
组成 - 数字不可开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
Java
中严格区分大小写,长度无限制- 标识符不能包含空格
- 由26个英文字母大小写、
- 注意:在起名字时,为了提高阅读性,要尽量有意义,见名知意
名称命名规范
- 包名:多单词组成时所有字母都小写:
xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:
XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始首字母大写:
xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词使用下划线连接:
XXX_YYY_ZZZ
变量
- 变量的概念
- 内存中的一个存储区域
- 该区域有自己的名称(变量名),和类型(类型名)
- Java中的每个变量先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
- 使用变量注意
- 变量的作用域:一对{}之间有效
- 初始化值
- 定义变量的格式
- 数据类型 变量名 = 初始化值
- 变量是通过变量名来访问这块区域的
数据类型
Java属于强类型语言,要求变量的使用严格符合规定,所有变量需要先定义才能使用。
按数据类型分类
- 数据类型
- 基本数据类型
- 数字型
- 整数类型(
byte short int long
) - 浮点类型(
float double
)
- 整数类型(
- 字符型(
char
) - 布尔型(
boolean
)
- 数字型
- 引用数据类型
- 类(
class
) 字符串(string
)也属于 - 接口(
interface
) - 数组(
[]
)
- 类(
- 基本数据类型
整数类型
类型 | 占用存储空间 | 表述范围 |
---|---|---|
byte | 1 字节 = 8 bit | -128 ~ 127 |
short | 2 字节 | -2^15^ ~ 2^15^-1 |
int | 4 字节 | -2^31^ ~ 2^31^-1 |
long | 8 字节 | -2^63^ ~ 2^63^-1 |
ps:声明long,需要在数值最后加一个l或L
浮点类型
类型 | 占用存储空间 | 表述范围 | 精度 |
---|---|---|---|
单精度float | 4字节 | -2^128^ ~ 2^128^ | 7位有效数字 |
双精度double | 八字节 | -2^1024^ ~ 2^1024^ | 8位有效数字 |
ps:Java浮点数默认为double型,声明float常量,必须后面加 f 或 F 。
浮点型常量有两种表示形式:
- 十进制:如
5.12 512.0f .512
- 科学记数法:如
5.12e2 512E2 100e-2
//八大基本数据类型
//整数
int num1 = 1;
byte num2 = 2;
short num3 = 3;
long num4 = 4L;//数字后加L
//小数(浮点数)
float num5 = 1.1F;//数字后加F
double num6 = 3.1415926535;
//字符
char name = '王';
//布尔值
boolean flag = true;
其他
boolean
类型不可以用1
或0
等数字或null
代替,只能用true
或者false
,这点和C语言不同char
类型也可以进行运算,有对应的unicode
编码- 若两个
string
类型赋予相同值,则是赋予同一个内存地址
拓展
//整数拓展 二进制前缀0b 八进制前缀0 十六进制前缀0x
int two = 0b1;
int eight = 07;
int ten = 9;
int sixteen = 0xf;
//浮点数拓展
//银行业务怎么表示钱?
//BigDecimal 数学工具类
//最好完全使用浮点数进行比较
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果false
float d1 = 555555555f;
float d2 = d1+1;
System.out.println(d1==d2);//结果true
//字符拓展
char a = 'a';
System.out.println((int)a);
char b = '中';
System.out.println((int)b);
//所以字符的本质还是数字,Unicode表中的对应数字
System.out.println('\u0061');
//布尔值拓展
boolean flag = true;
if(flag==true){}
if(flag){}
//二者等价
//JDK7新特性:数字之间可以用下划线分隔
int money = 10_0000_0000;
System.out.println(money);
基本数据类型转换
- 自动类型转换:容量小的类型自动转换为容量大的数据类型。
- 有多种类型的数据混合计算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
byte short char
之间不会互相转换,它们三者在计算时首先转换为int
类型。- 任何数据类型和
String
类型进行运算(+
),基本类型都会转化为字符串类型 Boolean
类型无法强制转换
强制类型转换
int a = 0;
byte b = (byte)a;
注意事项
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 转换的时候可能会出现内存溢出或精度问题
运算符
算术运算符
赋值运算符
=
- 当两边数据类型不同,会进行自动数据类型转换或者需要强制类型转换。
位运算符
三元运算符
逻辑表达式?true执行:false执行;
优先级
数组
一维数组
//动态初始化,没有赋值时均为0,字符串则为null
int[] a = new int[3];
//静态初始化
int[] b = {1,2,3};
二维数组
int[][] a = new int[3][2];
int[][] b = new int[3][];
int[][] c = new int[][]{{1,23,4},{4,5,6},{1,2}};//其中长度不等 是合法的
int[][] d = new int[][3];//不合法
int[] e,f[];//e为一维数组 f为二位数组
-
数组是相同数据类型(数据类型可以为任意类型)的有序集合数组也是对象。
-
数组元素相当于对象的成员变量。
-
数组长度的确定的,不可变的。如果越界,则报
ArrayIndexOutofBounds
。