配置环境
变量名 | 值 |
---|---|
JAVA_HOME | 安装java的路径 |
PATH | "%JAVA_HOME%\bin" |
CLASS_PATH | ".;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar" |
开发工具与运行环境
-
JDK(java Developer Kit ) Java开发工具
bin文件夹---可执行文件
JRE(Java Runtiming Enviroment)
----java运行环境 , 运行JAVA程序所必须的环境的集合,包含JVM标
准实现及Java核心类库。
SRC:源文件 -
JDK包含的基本组件:
javac-编译器,将源码编译成字节码
jar--打包工具,将相关;类文件打包成大文件
javadoc--文档生产器,从源码注释中提取注释解析生成网页文件的说明文档
jdb-debugger,查错工具
java-运行编译后的java程序
appleviewer--小程序浏览器,执行HTML文件上的java小程序的java浏览器
javah--产生可以调用java过程的c过程,或建立被java程序调用的c过程的头文件
javap--java反汇编器,显示编译类文件中可访问功能和数据
jconsole--java进行系统调试和监控的工具 -
JRE(java runtime environment)java 运行环境包括jvm和核心库
-
JDK包含编译工具javac 打包工具jar 以及jre等等
-
jdk与jre关系:jdk包括jre jdk是开发工具和运行环境包 jre是运行环境 jdk(javac、jar、jre(JMV、、)、、)
如果是进行java开发则需要安装jdk 如果仅仅是运行编译完的java程序着则只需要安装jre - java的跨平台性:通过虚拟机jvm搭载在不同的平台上可以实现java 的夸平台性
- java的三个版本 j2ee j2me j2se java5.0以后更名为javaee javame javase
java注释
- 单行注释 //注释文字
- 多行注释/* 注释文字*/
- 文档注释/**注释文字 */
- 单行多行注释的部分不会被JVM解释执行
文档注释内容能被JDK的提供的工具javadoc解析提取,生成网页文件的说明文档
/**
我的第一个java程序Hello World
@author 小强
*/
class Demo
{
/*
这是主函数,是程序的入口
它的出现可以保证程序的独立运行,
*/
public static void main(String[] args)
{
//这是输出语句用于将括号内的数据打印到控制台。
System.out.println("Hello World");
}
}
dos 命令行常见命令:
- dir:列出当前目录下的文件及文件夹
- md:创建目录
- rd:删除目录(目录必须为空)
- cd:进入指定目录
- cd..:退回上级目录
- cd\:退回根目录
- del:删除文件
- exit:退出dos命令行
- echo:创建文件
- del 目录:删除目录及以下全部文件
- del *.txt 删除当前目录下所有txt文件
数据类型:
![](https://img-my.csdn.net/uploads/201301/07/1357568380_6749.png)
- 分为2种类型:引用类型(对象引用类型 , 接口引用类型、数组引用类型)、基本类型
- 内存为每种类型对应分配一固定的内存空间 ,类型确定了其在内存中分配的空间就确定
- 基本类型:byte、short、char、long、float、double、boolean、int
- 基本类型中分数值类型,字符型,布尔型,数值类型又分整型浮点型都是有符号的,即有正负数
bit:比特 0/1 8个比特为一个字节 - 整型:整型数默认是int的 故定义 byte 或 short 并赋值需要强转,而long加L声明
byte: 一个字节 -128~127 -2的7次方~(2的7次方-1) 默认值(byte)0
short:二个字节-32768~3276 7 -2的15次方~(2的15次方-1) 默认值(short)0
int: 4个字节 -2147483648~2147483647 -2的31次方~(2的31次方-1) 默认值0
long: 8个字节 -9233372036854477808~9233372036854477807 默认值0L 定义时需要加l - 整数运算时默认转成长度大的类然后运算
- 浮点型:浮点型默认是double的故定义float并赋值需加f
double 8个字节----默认变量 double i=10.2;默认值0.0d
float 4个字节 定义时需要加l float f=2.0f;默认值0.0f
- 布尔:
boolean:true false 默认为boolean - 字符:
char 两个字节 十六进制范围‘ \u0000 - \uffff ’ 默认为\u0000
数据类型转换
强制类型转换(也叫显式类型转换)
- 7种基本数据类型参与运算时 默认自动提升转换顺序:
字节数-------1---------2--------2-------4-----8-------4----------8
转换顺序--byte→ short→ char→ int→long→float→ double - short
- ↓
- byte→ int→long→float→ double
- ↑
- char
反向转换时需要强转
byte b = 3;
b = b + 4;//报错
b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。
- 可以直接赋值的关系 (反向赋值时必须强转)
(byte/short/char/ int/long/float/double)--->double
(byte/short/char/ int/long/float)--->float
(byte/short/char/int /long)--->long
(byte/short/char/int)--->int
(byte/short)--->short - 其以上类中除了char本身其他他类都不能直接赋值给char 要赋值都得强转
short 和 char 都是十六位二进制,short 范围-32768~32767 char类型则为0~65536
boolean 类型和 String 引用类型 都只能赋值给自己对应的类型
关键字
- Java语言的关键字有:
修饰符 private 、 protected , public 、 static 、final、abstract、native、transient、volatile
包类接口声明 package 、 interface 、class
数据类型声明方法返回类型声明 void、boolean、byte、char、short、int、long、float、double
流程控制continue、break、switch、case、return、if、else、for、do、while。
同步专用synchronized
异常专用try、throw、throws、catch、finally
固定值 true、false、null、default
引用super、this
代表操作import、new、implements、extends、instanceof
新加入的assert enum strictfp - 使用关键字注意事项:
1)所有关键字都是小写的
2)Java语言保留字有:const、goto。
保留字:现在没有被作为关键字使用,但以后升级版本可能作为关键字
3)区分Java关键字和其他语言的关键字(sizeof, friendly,NULL,String)
4)标识符不能用关键字命名
标识符的规则
- 1)首字母只能是a-z、A-Z、$或者_开头 其余只能是a-z、A-Z、$、_ 或者数字
- 2)不可以使用关键字
- 3)区分大小写
命名规则
- 类名接口名: 首字母都大写,类名由几个单词构成,那么每个单词首字母大写其余小写
- 包名:都是小写
- 方法名变量名:首字母小写,如果由几个单词组成,则除第一个单词外其余单词首字母大写其余小写
尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,
k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。 - 常量名:都用大写,如果由几个单词组成,则单词间用"_"分隔
运算符
-
1 算术运算符: + - * / %
Java的算术运算符分为一元运算符和二元运算符。
1) 一元运算符只有一个操作数;
一元运算符有:正(+)、负(-)、加1(++)和减1(--)4个。
加1、减1运算符只允许用于数值类型的变量,不允许用于表达式中
加1、减1运算符既可放在变量之前(如++i , --j),也可放在变量之后(如i++, j--),
两者的差别是:
如果放在变量之前(如++i),则变量值先加1或减1,然后进行其他相应的操作
如果放在变量之后(如i++),则先进行其他相应的操作,然后再进行变量值加1或减1。
+ 号除了做加法运算符之外 ,还可以作为字符串连接符,当表达式中+符的一侧为字符串时,
无论另一侧数据是什么类型都被自动转换成字符串
2) 二元运算符有两个操作数,运算符位于两个操作数之间。算术运算符的操作数必须是数值类型。
二元运算符有:加(+)、减(-)、乘(*)、除(/)、取余(%)。
其中+、-、*、/完成加、减、乘、除四则运算,%是求两个操作数相除后的余数。%结果的符号只看左边
取余运算符既可用于两个操作数都是整数的情况,也可用于两个操作数都是浮点数(或一个操作数是浮点数)
当两个操作数都是int类型数时,a%b的计算公式为:
a % b = a - (int)(a / b) * b
当两个操作数都是long类型(或其他整数类型)数时,a%b的计算公式可以类推。
- 2 逻辑运算符:
逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。
逻辑运算符有:逻辑与(&&)、逻辑或(||)、逻辑非(!)、逻辑异或(^)、逻辑与(&)、逻辑或(|)。
在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
- 3 关系运算符:
关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型的数值
关系运算符有六个:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)。
instanceof 检查是否是类的对象 如 "MyName" instanceof String //true
- 4 位运算符 << >> >>> & | ^ ~取反码
位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。
位运算符共有7个,分别是:位与(&)、位或(|)、位取反码(~)、位异或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位运算的位与(&)、位或(|)、位反码(~)、位异或(^)与逻辑运算的相应操作的真值表完全相同,
其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值。
负数的移位是对负数是对负数在内存的二进制表示形式即补码进行移位
- >>与>>>的区别 : >>二进制按位右移左边补符号位 ,即对正整数右移时左边补0,对负数进行右移时左边补1
, >>>运算符无论对负数还是正数左边都补0
- ^ 一个数异或同一个数 结果为原来的数 ----加密解密原理
- &和&&的区别 : & 需将两边的逻辑表达式都运算完再进行逻辑与运算;
- |和||的区别: | 需将两边的逻辑表达式都运算完再进行逻辑或运算,
- 5 赋值运算符
= , +=, -=, *=, /=, %=
- 6 三元运算符
(条件表达式)?表达式1 : 表达式2
如果条件为false,运算后的结果是表达式2;
控制结构
- 1 顺序结构
- 2 选择结构
1) if选择结构
单分支选择结构可以根据指定表达式的当前值,选择是否执行指定的操作。
单分支语句由简单的if语句组成,该语句的一般形式为:
if(表达式){...}
多分支语句:
双分支语句 if(表达式){...}else{...}
多分支语句 if(表达式){...}else if(表达式){...}else{...}
嵌套if语句 if(表达式)if(表达式){...}else{...}
语句说明:
(1). if是Java语言的关键字,表示if语句的开始。
(2). if后边表达式必须为合法的逻辑表达式,即表达式的值必须是一个布尔值,不能用数值代替。
(3). 在表达式为真时执行子句的操作。子句可由一条或多条语句组成,如果子句由一条以上的语
句组成,必须用花括号把这一组语句括起来。
if(表达式) {...}else{....} 与三元运算符的区别:
三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
if 与 else 的配对
If与else的匹配 在使用嵌套的if语句时,当没有花括号指定匹配关系时,
系统默认else与它前面最近的且没有与其它else配对的if配对。
2) switch(byte\ char \ short\ int\ enum)也是一种多分支选择结构
switch语句的一般形式如下:
switch(表达式)
{ case 值1:子句1;break;
case 值2:子句2;break;
……
case 值n:子句n;break;
default:子句m;
}
语句说明:
(1) switch是关键字,表示switch语句的开始。
(2) switch语句中的表达式的值只能是整型(short int byte)或字符型(char)或枚举(enum---JDK1.5之后)。
(3) case后面的值1、值2……值n必须是整型(short int byte)或字符型(char)常量或枚举常量,各个case后面的常量值不能相同。
(4) switch语句的功能是把表达式返回的值与每个case子句中的值比较,如果匹配成功,则执行该case后面的子句。
(5) case后面的子句和if后面的子句相似,可以是一条语句,也可以是多条语句。不同的是当子句为多条语句时,不用花括号。
(6) break语句的作用是执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。如果某个子句后不使用break语句,
则继续执行下一个case语句,直到遇到break语句,或遇到标志switch语句结束的花括号。
(7) 最后的default语句的作用是当表达式的值与任何一个case语句中的值都不匹配时执行default;如省略default,则直接退出switch语
( 8 ) 结束switch语句的两种情况:遇到break,执行到switch语句结束。
(9) 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
if语句与switch语句的选择
if语句与switch语句都可以用于处理选择结构的程序,但:
单分支结构选择结构一般使用if语句,双分支结构一般使用if-else语句,多分支结构一般使用嵌套的if语句和switch语句,
对于需要计算多个表达式值,并根据计算结果执行某个操作,一般用if-else if 语句;
对于只需要计算一个表达式值,并根据这个表达式的结果选择执行某个操作,一般用switch语句。
- while和if判断语句的区别 while判断完执行循环体再判断 , 而if只判断一次
- 3 循环结构
Java语句的循环结构共有三种:while语句、do……while语句和for语句
1) while语句的一般格式如下:
while(条件表达式)
循环体;
语句说明:
1. while是Java语言的关键字,表示while语句的开始。
2. while语句的执行:每次先判断条件表达式的值为真或为假,如为真则执行循环体,如为假退出循环。
3. 条件表达式指定循环的条件,所以表达式的值必需是布尔类型。
4. 循环体可以是一条语句,也可以是多条语句。当多条语句是需用花括号括起。
5. while语句是先判定条件,在执行循环体。
2)do-while 语句的一般格式如下:
do
循环体
while(条件表达式);
语句说明:
1. do-while语句的执行:先执行循环体,再判断循环条件,如为真则重复执行循环体,如为假退出循环。
2. do-while语句的循环体如果包含一条语句以上,必须用花括号括起来。do-while循环的循环体至少执行一次。
3) for语句的一般格式为:
for(表达式1;表达式2;表达式3)
循环体;
语句说明:
(1)表达式1:for循环的初始化部分,它用来设置循环变量的初值,在整个循环过程中只执行一次;
表达式2:其值类型必须为布尔类型,作为判断循环执行的条件;
表达式3:控制循环变量的变化。
(3) 表达式之间用分号分隔。
(4) 循环体可以是一条语句,也可以多条语句,当多条语句时用花括号括起来。
(5) 上述三个表达式中的每个允许并列多个表达式,之间用逗号隔开。也允许省略上述的三个表达式,但分号不能省略
执行过程:
①计算表达式1的值;
② 再判断表达式2的值是否为真,为真执行③,为假执行步骤⑤;
③ 执行循环体
④ 计算表达式3的值,并转去执行步骤②;
⑤ 结束循环。
while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
- 可以跳出循环的关键词有break,continue,return
1、return 语句的作用
(1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行
(2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的
返回值的类型一致,可以使用强制类型转换来是数据类型一致
(3) return 当方法说明中用void声明 返回类型为空时,应使用这种格式,不返回任何值。
2、break语句的作用
(1) 只能在循环体内和switch语句体内使用break语句。
(2) 当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。
(3) 当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。
(4) 在多层嵌套循环结构中,不带标号的break语句的作用是跳出最内层的循环语句,
而带标号的break语句的作用是从标签指定的语句块中跳出。
3、continue语句作用
(1) continue语句的一般形式为:contonue;continue语句必须用于循环结构中
(2) 其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。
不带标签的continue语句的作用是结束最内层所执行的当前循环,并开始执行最内层的下一次循环;
带标签的continue语句的作用是结束当前循环,并去执行标签所处的循环。
(3) 注意:执行continue语句并没有使整层循环终止。在while和do-while循环中,continue语句使得
流程直接跳到循环控制条件的测试部分 ,然后决定循环是否继续进行。
(4) 在for 循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,
然后进行“表达式2”的条件测试,
- while与do ..while循环的区别 后者至少执行一次循环体且后者的while语句后边必须加分号
for循环 - 最简单的无限循环 for(; ; ;){} while(ture){}
- 循环体内单独使用break或continue时 其后的语句不会被执行
权限修饰符
1、私有权限(private)
private可以修饰成员变量,构造方法,成员方法,不能修饰外部类(可以修饰内部类)。
被private修饰的成员,只能在定义它们的类中访问,在其他类中不能调用。
2、默认权限(default)
类,成员变量,构造方法,成员方法,都能够使用默认权限,即不写任何关键字。
默认权限 , 可以在同类中,同包不同类中访问
3、受保护权限(protected)
protected可以修饰成员变量,构造方法,成员方法,不能修饰外部类(可以内部类)。
被protected修饰的成员,能在同类中,同包的不同类 , 不同包的该类的子类中。
4、公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。
` 可以在任意范围内访问
可以修饰外部类的修饰符 public /abstract /final 而内部类还可以用private/protected修饰