java复习资料.docx
《java复习资料.docx》由会员分享,可在线阅读,更多相关《java复习资料.docx(13页珍藏版)》请在冰豆网上搜索。
java复习资料
1、JAVA版本:
javaSE(标准版)javaME(微型版)javaEE(企业版)/
2、java环境部署
安装jdk软件
JVM:
虚拟机(环境)
JRE:
java开发环境=JVM+解释器
JDK:
java开发工具包=JRE+工具包(调试工具+编译器)+类库
3、java运行机制
源文件.java(文本)==>编译.class文件(字节码,平台中立)==>解释成计算机语言执行
4、环境变量配置
JAVA_HOME:
jdk安装目录
Path:
jdk安装目录\bin引入%JAVA_HOME%\bin(已配置好环境)
CALSSPATH:
.CLASS(文件所在目录)
注意:
1、关键字class
2、publicstaticvoidmain(String[]args){}固定大小写区分
3、System.out.println();每句结束时用;标识打印并且换行
System.out.print();打印不换行
4字符串加""数字直接写
编译javac文件名称(test.java)=====>生成.class文件,文件名称同类名一致
执行java类名(HelloWorld)
5、dos命令
切换盘符E:
回车
同盘符下转换路径cd路径
查看当前文件夹下所有文件dir
清屏cls
第一章
====================================================================================================================
1、编译时生成包结构:
javac–d放置目标目录test.java
javac–d.test2.java(常用方式)
2、标准使用流程
Packagecom,test;
编译javac–d.java
运行.test.Test全限定名
3、编程规范
1.良好的注释习惯
2.良好的缩进习惯,遇见{}缩进制表符Tab
3.良好的标识符(程序组件名称)命名习惯
硬性规定:
1由字母、数字、下划线、$组成,数字不能开头
2区分大小写StringSystem
3不能与关键字重名
软性习惯:
1望文生义StudentsAnimaChengfa(契合实际)
2类名可以由一个或多个单词组成,每个单词首字母大写TestNumber
3包名,全小写com;com.test;com.
4函数和变量首单词小写,其他单词首字母大写
atestNumcountnum
5.常量全大写NUMTEST_NUM
4.特殊语法
一个源文件.java中,可以定义多个类,每个类都会编译一个独立.class文件,public添加在class前面,约束这个类和文件的名称一致,且只能有一个公共的类.
注释:
描述代码(给人看,不会参与编译)
1单行注释//注释位置到行尾
2多行注释/**/多行都算在内可以换行
3文档注释/***/生成网页行的帮助文档
javadoc只能应用于public的类,生成帮助文档
javadoc-d文件夹源文件
javadoc-ddocTest1.java包(windows系统中目录/文件夹)
基本语法package自定义包名;
书写在整个源文件最顶部,该源文件中只能有一个package语句
如果有包,运行时需要全限定名javacom.Test2
注意:
包已经建立,要求class必须放置在包中(必须有目录结构)
编译时生成包结构:
javac-d放置位置目标目录Test.java
javac-d.Test2.java[常用方式,当前路径下生成目录结构]
java-dD:
\Test2.java[不常用,在D:
\生成目录结构]
第二章
======================================================================================================================
1、变量:
存储数据(内存中)
基本语法
1》声明变量数据类型自定义变量名称;
inta;分配空间,没有存储数据
赋值a=10;
inta=10;声明同时赋值
变量使用通过名称使用
注意:
使用变量时,实际访问变量中数据
定义相同数据类型的一组变量
intx,y,z;x=10;y=20;z=30;
2》局部变量:
定义在函数内部
1先赋值后使用
2有一定作用范围,定义行起,到所在代码块结束
3作用范围内不能命名冲突
2、数据类型(java属于强数据类型的语言)
基本类型8种
对象类型其他
1基本类型
2整数类型
byte1字节8位二进制数-128~127
short2字节16二进制数-32768~32767
int4字节32-2^31~2^31-1
long8字节64-2^63~2^63-1
3常用类型int默认整数类型System.out.println(10);==>int类型
字面值:
符合该数据类型的数值叫做字面值inta=10;
byte,short,int共有同一套字面值
byteb=10;
shorts=10;
inti=10;
4长整形long的字面值:
longl=10000;先分配int类型默认空间,然后分配long类型的变量的空间(有浪费)
longl=10000L;直接定义long类型的空间保存数据(无浪费)
5浮点型(小数)
float4字节单精度
double8字节双精度(默认的小数类型)
floatf=1.5F;字面值,必须加F,不加编译报错
doubled=1.5;可以在后面加或者不加D
6科学技术法1.5e5F1.5e51.5e-5
7布尔类型booleantrue/false
8字符类型char2字节
charc='A';char类型变量的默认打印方式
转义字符\去掉字符特殊含义'\'''\"''\\'
特殊含义组合字符\t水平挑个制表符\n换行
补充两种字面值
charc=65;int赋值
charc='\u0041';十六进制进行赋值
9对象类型字符串
Stringstr="HelloWorld";
/***************************************************************************//补充以下次要点
十进制逢十进一01234
二进制逢二进一011010+1=1111+1=100
10==>二进制1010
10/2余数0
5/2余数1
2/2余数0
1/2余数1
1010
12==>二进制1100
12/20
6/20
3/21
1/21
1100
****************************************************************************/
运算+-*/
inta=1+2+3+4+5;
1+2=3+3=6+4=10+5=15a=15
inta=1+2+3+(4+5)
1+2=3+3=64+5=96+9=15a=15;
自动类型提升
1运算中出现double类型,运算结果一定是double类型
2如果没有double类型,如果有float类型,结果是float
3没有double和float,如果有long类型,结果一定是long
4如果没有double,float,long,运算结果一定是int类型
1+2+1.5F+10000L====>float
1.5+10000L====>double
1+2+3+4=====>int
String类型可以参与加法运算,看成字符串拼接
inta=10;
Strings="a="+a;
===>a=10
1+2+3+"abc"+1+2+3====>"6abc"+1="6abc1"+2+3==>6abc123
1+2+3+"abc"+(1+2+3)===>6abc6
强制类型转换(只应用于大数据类型向小数据类型中转换)
inta=10;
byteb=(byte)a;
1)整数类型发生转换,并且数据值在新数据类型的范围内
inta=10;
byteb=(byte)a;
编译正确,运行无数据丢失
2)整数类型发生转换,数据的值不在新数据类型的范围内
inta=1000;
byteb=(byte)a;
编译正确,运行有数据丢失
3)小数类型强制类型转换成整数类型小数位截断
doubled=6.5;
inti=(int)d;==>6没有四舍五入
1.4==>11.4+0.5==>1
1.5==>21.5+0.5==>2
4)不可转换的类型boolean
编译报错inti=(int)true;
5)int类型和char类型可以自动转换
charc=65;
inti='A';
System.out.println((int)'a');打印字符对应的数值编码
======================================================================================================================
表达式:
把字面值与变量用运算符连接起来得到一个结果,这样的式子
运算符
常用运算符
算术运算符+-*/%(求余
a%3====>012数)
5%3===>5除以3余数2
a%b====>0~b-1
5.5%3====>2.5
赋值运算符
=(取等号右侧的结果给等号左边变量赋值)a=b;
=+-=*=/=
a+=1;===>a=a+1;
a-=1;===>a=a-1;
++--运算符
inta=5;
a++;==>a=6;
inta=5;
a--;==>a=4;
inta=5;
intb=a++;===>a==6b==5先取值后++a不等于b
inta=5;
intb=++a;===>a==b==6先++后取值a等于b
inta=5;
intb=(a++)+(++a);==>12
a++取表达式值5a=6
++aa=表达式值7
比较运算符>>=<<===(比较)!
=(不等于)结果boolean
逻辑运算符&&(逻辑与,并且)||(逻辑或,或者)!
非取反结果boolean
inta=5;
intb=6;
intc=7;
a
A&&BA==trueB==true结果才为true
A||BAB中只要有一个为true,结果是true
!
AA==true结果falseA==false结果是true
面试题:
&&和&区别?
&&短路运算如果第一个表达式已经得知整个表达式结果,后面的表达式将不会执行
&非短路无论结果是否已经得知,所有表达式都会执行
不常用(面试题)
位运算符&|^~
inta=10;intb=12;
a&b1010&11001000对应位上都是1时结果为1
a|b1010|11001110对应位上有一个是1结果1
a^b1010^11000110对应位上值不同时结果为1
~a1010111101011变00变1
位移运算符
>>1010>>1101相当于十进制数除2
<<1010<<110100乘2
>>>逻辑右移符号补0
面试题:
以下选项中那个式子效率最高?
inta=2;答案C
Aa+2Ba*2Ca<<1
面试题:
>>和>>>区别?
>>符号位不变
>>>符号位补0正数符号不变,负数会变正数
三元运算符/三目运算
result=A?
B:
C;
Aboolean类型表达式
A==true取B的结果作为整个表达式结果
A==false取C的结果作为表达式结果
intc=a>b?
a:
b;取a,b中较大的数据赋值给c
java默认导入java.lang.*包中所有类型
使用其他软件包中的类型,需要全限定名或者import语法
从控制台进行数据录入
1引入java.util.Scanner;
2Scanners=newScanner(System.in);s自定义变量名
3从控制台读入数据
inti=s.nextInt();
doubled=s.nextDouble();
Stringstr=s.next();
流程控制语句
判断(条件)
实例
起床
穿衣服
洗漱
收拾东西
如果时间8点之前{在家吃早饭}
下楼
开车
上班
基本语法
if(boolean表达式){
code;true执行
}
组合代码块ifelse
if(条件){
code1;
}else{
code2;
}
组合代码块ifelseifelse
if(){
}elseif(){
}elseif(){
}else{
}
注意:
ifelseif语句自上而下判断
组合代码块中不同条件中只有一个代码块会执行
判断语句可以嵌套使用
分支(面试题:
执行流程)
switch(表达式){//结果byte,short,int,char、jdk7.0字符串
case1:
code1;
case2:
code2;
case3:
code3;
default:
code4;
}
执行流程:
从匹配到case开始执行,一直向后执行后面所有的case语句,直到遇到break;语句,退出switch语句块
循环