一、JAVA开发环境
- Java编程语言之父是James Gosling
- Java中:
.class
是编译后的文件,.java
是编译前的源文件,Java程序需编译后方可运行 - Java是从
C++
语言改进重新设计 - 在控制台运行一个Java程序
TestDemo.class
,使用命令为java TestDemo
(java + 类名) - Java语言特征:
- Java语言支持跨平台(Windows、Linux、Unix)
- 没有指针的概念
- 拥有GC(自动垃圾回收),提高了代码安全性
Java Card、Java Me、Java Se、Java EE
都属于Java技术体系- Java语言叙述:
在JDK目录结构中,lib目录下存放的都是库文件,而bin目录下有编译器、解释器和许多工具(如服务器工具、IDL、package工具和jdb等)- Java虚拟机解释执行字节码
- Java的类是对具有相同行为对象的一种抽象
- Java中垃圾回收机制是一个系统级的线程
- JDK的库文件是bin (×)
- 为AB类的一个无形式参数无返回值的方法
method
书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为()
A.static void method()
B.public void method()
C.final void method()
D.abstract void method()
【正确答案】A
【答案解析】1、public
修饰的方法可被其它类访问或引用。 2、abstract
修饰的方法是抽象方法,抽象方法没有方法体,要使用抽象方法,必须先实现此抽象方法。 3、final
修饰的方法不能被继承。 4、static
修饰的方法为静态方法,静态方法不需要类的实例化就可以被类直接调用。 故要使得类名AB可以直接调用method()
方法,则必须在method()
前用static
来修饰
二、变量
- 在Java语言中,被称为内存分配的运算符是
new
char c=74;
(√)String str=new String("bb");
(√)long j=8888;
(√)float f=1.1f;
(√)- 变量命名规则:
- Java大小写敏感
- 命名变量时需要注意
- 可以由字母、数字、下划线、
"$"
组成 - 首字母不能以数字开头
- 标识符符合Java命名约定:
- 包的名字由小写字母组成
- 类名第一个字母大写
- 变量的第一个字母小写
- 与属性相对应的
get、set
方法为:set(get)+属性名
(属性名第一个字母为大写)
三、JAVA的基本类型
byte
(8位)类型的取值范围:-128~127
char
(无符号16位)类型的取值范围是:0~65535
short
(16位)类型;int
(32位)类型;long
(64位)类型- Java中的8种基本数据类型:
byte,short,int,long,char,boolean(Boolean ×),float,double
- 24*24点阵的汉字(每个点1
bit
)的结果是二进制位,而八个二进制位等于 一个字节,再除以八是所得的字节数,所求结果为72
四、基本类型间转换
- 隐式类型转换规则是:
byte → short(char) → int → long → float → double
- 阅读下列代码:
下列代码片段中,存在编辑错误的语句是()byte b1 = 1, b2 = 2, b3, b6, b8; final byte b4 = 4, b5 = 6, b7; b3 = (b1 + b2); /* 语句1 */ b6 = b4 + b5; /* 语句2 */ b8 = (b1 + b4); /* 语句3 */ b7 = (b2 + b5); /* 语句4 */ System.out.println(b3 + b6);
A.语句2
B.语句1
C.语句3
D.语句4
【正确答案】B,C,D
【答案解析】
① 语句1错误:b3 = (b1 + b2);
自动转为int
,所以正确写法为b3= (byte) (b1 + b2);
或者将b3
定义为int
② 语句2正确:b6 = b4 + b5;
b4
、b5
为final
类型,不会自动提升,所以和的类型视左边变量类型而定,即b6
可以是任意数值类型
③ 语句3错误:b8 = (b1 + b4);
虽然b4
不会自动提升,但b1
仍会自动提升,所以结果需要强转,b8 = (byte) (b1 + b4);
④ 语句4错误:b7 = (b2 + b5);
同上。同时注意b7
是final
修饰,即只可赋值一次,便不可再改变 - 在Java程序中,不同的基本数据类型的数据之间经常需要进行相互转换, 目标类型大于源类型,如
double
类型长度为8字节,int
类型为4字节,因此double
类型的变量里直接可以存放int
类型的数据,但反过来就不可以了
五、运算符和表达式
^
异或- 三目运算符语法:
条件表达式 ? 表达式1 : 表达式2;
整个表达式的运算结果由类型最高的决定,例:int x = 4; (x > 4) ? 99.9 : 9 => 9.0
- 阅读下列代码:
结果为:int a = 5; int b = ++a; System.out.println("a=" + a); System.out.println("b=" + b);
a=5,b=6
- Java对
"+"
进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。 若"+"
的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型 - JAVA中使用
"\"
符号进行转移 a = 12
,求a * = 2 + 3
的值:a = (2 + 3) * 12
,即a = 60
/=
运算符名字叫做除等于,two /= one
等价于two = two / one
- 下列有关逻辑运算符的描述错误的是()
A.使用“||”运算, 两者只要有其一为真,逻辑表达式结果就为真
B.使用"!"运算,对关系表达式进行取反
C.短路与:若第一个表达式的值为假,后面的表达式不再计算
D.短路或:若第一个表达式的值为假,后面的表达式不再计算
【正确答案】D
【答案解析】此题目考查的是辑运算符的概念性知识,ABC均正确, 短路或:若第一个表达式的值为假,还需要看后面的表达式是真还是假
六、分支结构
if
后小括号里必须是一个条件表达式,结果为布尔值,如果为true
,则执行后面大括号中的代码,如果为false
七、循环结构
for(int x = 0, y = 0; (y != 0) && (x < 4); x++);
执行次数为一次也不执行do...while
循环结束的条件是 while 后的条件不成立- 下列代码哪行会出错:
变量k没有被初始化1) public void modify() { 2) int i, j, k; 3) i = 100; 4) while ( i > 0 ) { 5) j = i * 2; 6) System.out.println("The value of j is " + j); 7) k = k + 1; 8) i--; 9) } 10) }
- 选择下面代码的运行结果:
编译错误(i变量的作用范围是整个for循环中)public class Test { public void method() { for (int i = 0; i < 3; i++) { System.out.print(i); } System.out.print(i); } }
八、数组
- 对记录序列
{314,298,508,123,486,145}
按从小到大的顺序进行插入排序,经过两趟排序后的结果为{298,314,508,123,486,145}
代码实现如下:public static void injectionSort(int[] number) { // 第一个元素作为一部分,对后面的部分进行循环 for (int j = 1; j < number.length; j++) { int tmp = number[j]; int i = j - 1; while (tmp < number[i]) { number[i + 1] = number[i]; i--; if (i == -1) break; } number[i + 1] = tmp; } }
int[] x = new int[25];
x[24]
为0
(x属于引用类型,该引用类型的每一个成员是int
类型,默认值为:0
)
解析:用new动态初始化时,数组元素的默认值:boolean
型:false
;char
型'\u0000'
;整型:0
;浮点型:0.0
;String型:null
int m [] = {0, 1, 2, 3, 4, 5, 6};
下面哪个表达式的值与数组下标量总数相等m.length
- 访问数组下标越界为运行错误
- 数组是一种对象,不是原生类,数组的大小不可以任意改变
- 任何类的父类都是
Object
,数组属于引用类型,Object oa = new float[20];
(√)这种写法相当于父类的引用指向子类的实例
九、方法
- 阅读下列代码:
其运行结果是编译错误(public class Test { String s="One World One Dream"; public static void main(String args[]) { System.out.println(s); } }
main
方法是程序执行的入口,在本程序中main
方法中的语句"System.out.println(s);
"无法调用在main
方法外声明的变量) - 方法重载原则:必须在同一个类中,必须相同的方法名,方法参数的个数、顺序或类型不同,与方法的修饰符或返回值没有关系
- 形参和实参:形参是指在定义方法时参数列表中的参数,实参是指在调用方法时所传入的实际数据。 形参是局部变量,作用域在方法体内,出了方法后不可见。 实参可以是字面量常量值也可以是变量,只要是可以在调用方法时传入的数据就是实参。 形参是可以用
final
来修饰的,被final
修饰的形参被赋初值后值不可以再改变 - 关于 Java 类中带参数的方法:
- 使用带参数的方法分为两步:定义带参数的方法,调用带参数的方法
- 带参数方法的返回值可以为
void
- 带参数方法的参数个数可以为一个或多个
- 带参数方法的参数可以是任意的基本类型数据或引用类型数据