Java期末根据提纲复习(一)

十天跟着提纲赶进度,希望java不要挂掉!
1)JAVA语言的开发工具包JDK的全称:Java Development Kit
java.exe javac.exe(我猜这里是要分析区别和用法)
(参考:https://blog.csdn.net/weixin_43894928/article/details/101146134
javac.exe:也就是java编译器,作用是将.java文件编译成.class文件,即将源码文件编译成字节码文件,字节码文件还不是机器能直接运行的文件。
java.exe:java解释执行器,启动jvm(java虚拟机)将.class文件一行一行地解释成机器指令执行。
这就是为什么java程序能跨平台运行的原因。无论在Windows、Linux、MAC等系统上,只要装有相应版本的jvm,该jvm就能把.class文件解释执行。实现“一次编译,随处运行”。

javaw.exe没有时间看了

2)JAVA语言标识符命名大小写规则
a. 标识符应该由字母,数字,下划线“-”,$、¥组成。首字母不能使用数字
b. 不能把关键字和保留字作为标识符
c. 标识符没有长度限制
d. 对大小写敏感
(考的可能性太小了吧!)
3)JAVA语言关键字(果然是老师,提纲都是一句话巨大的含水量)
这个地方我还挺薄弱的,对于static final this等都是说不上来不会用啊
对于复习提纲后面的点来说,这里应该是需要知道所有的关键字就行了
(参考:https://blog.csdn.net/qq_40086702/article/details/90316182
(这个也不会这么考吧,还真有这样的题)
eg:
下面哪个是Java语言的关键字:
A.string
B.Float
C.unsigned
D.this
(其实难到我了,哈哈哈,虽然String是不是关键字就难到我了,不过我知道小写的s肯定不是。。。)
(这里要分清关键字和标识符的区别:
参考:https://blog.csdn.net/sulaymanyf/article/details/81145364
结论就是:
String 是Java基础库中的一个常用类的类名,属于标识符(identifier),显然不是关键字。
不过怎么看,A.B都犯了大小写的错误吧。选D!

三个考点一过,感觉不是直来直去的呀!

4)JAVA语言数据类型(特殊的运算符)
a. 基本数据类型:
a) 整型:byte short int long
b) 浮点:float double
c) 字符型:char
d) 布尔:boolean
b. 引用数据类型:
数组、类、接口
c. 运算符:
a) 赋值运算符:=
b) 算术运算符:++ --(一元) + - * / % (二元)
c) 关系运算符:> < >= <= == !=
d) 逻辑运算符:&& || ! ?:(三级运算符)
e) 位运算:~(一元) >> << >>> & | ^(二元)
f) 其他(强制转换。。。。)

这里考点还挺多的,存储范围、强制转换、短路
应该不会考位运算吧,略过!
引用数据类型还没到那个程度,先略过!
之前有一题应该是关于数组越界,问的是数组越界和类型格式转换错误能否同时抛出:

public class TestExcep {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[]=new int[8];
        int b;
        try{
            for(int i=0;i<10;i++){
                System.out.println(a[i]);
            
        }
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("数组越界");
        }
        try{
            b=Integer.parseInt("233333333333gf");
        }
        catch(NumberFormatException e){
            System.out.println("类型格式转换错误");
        }
    }
}

在这里插入图片描述
尝试结果是不能同时抛出。
( 参考:http://lukuijun.iteye.com/blog/340508
对于try…catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。
eg:下列描述正确的有哪些
byte b1=1,b2=2,b3,b6;
final btye b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
A: 输出结果:13
B: 语句:b6=b4+b5编译出错
C: 语句:b3=b1+b2编译出错
D: 运行期抛出异常
答案:C
解析: 被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了; 而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。

强制类型转换:
byte b1=(byte)150;
b1=-106
byte b2=(byte)128;
b2= -128
原因:
整型(int)在内存中占32位,字节类型(byte)在内存中占8位,
所以,经过强制类型转换,把int类型转化为byte类型,byte只保存了int类型的低8位,其它位都舍弃,然后求这个8位数的补码。
150的二进制码为10010110(第一位为符号位,为负数) 取反得到01101001,再加一为01101010,第一位为符号位,所以b1=-106
128的二进制码为10000000(第一位为符号位,为负数),取反得到01111111,再加一为10000000,第一位为符号位,所以b2=-128
(我喜欢记256一轮回,从0顺序127再从-128顺序到-1循环)

短路的问题应该仔细就行了(变态都喜欢考if中赋值!)

5)关系运算符和逻辑运算符的应用
这个我大概知道考点就在恶心的++i和i++
count = count ++的原理是:
temp = count;(左count)
count =count +1;(右count)
count = temp; 一直为0(左count)
count = ++count 的原理:
temp= count +1 (右count)
count = temp (左count)
而且我记得的一个坑就是无论是++i还是i++,都必须有有关i的运算才能触发
比如:

public class Test3 {
	public static void main(String[] args) {
			int j=0;
			for(int i=0;i<10;i++) {
				j=(j++);
				}
			System.out.println(j);
			}
		}	

这题的输出为0
因为j=(j++)语句看成:
int temp=j+1;
j=j;

6)条件、分支、循环、转移语句
a. 条件:if else
b. 分支:switch case break default
c. 循环:while do while for
d. 转移:break continue return
这里比较容易考的应该是break?
(我记忆里break只能跳出一个循环)
(盲猜不考)

eg:下列代码的结果是()
public static void bar(){
String str = “null”;
if (str == null){
System.out.println(“null”);
}
else(str.length() == 0){ System.out.println(“zero”);
}
else {
System.out.println(“some”);
}
}
结果是:compilation fails
if 只能对应一个else

7)面向对象的意义a. 封装性b. 继承性c. 多态性
(参考:https://blog.csdn.net/qq_31126879/article/details/51991923
封装性:

  1. 类中并不是所有的信息都能让用户可见的,因此隐藏这些信息就很有必要。这就是面向对象对封装的要求。
  2. 封装性的目的:保护当前类的某些属性和方法不被外部所见。
  3. 封装性的实现:Java的封装是通过private修饰符来声明属性和方法实现的。

说到private想到get、set 类中使用
不过似乎匿名对象好像也挺重要
比如new person() 只能用一次
(老师讲过这个点,我没有记得很清楚)

继承性:
父类:public class 类名称()
子类:public class 类名称 extends 父类名称()
(继承性的代码我都没有自己敲过,完完全全搬运工,但是这里大概率会考吧)
(参考:https://blog.csdn.net/qq_45797116/article/details/104222858
我还没写出来一个很好的运用继承、封装等等的代码。。。

多态性:
感觉会考在一题里问题不大;
在这里插入图片描述

形参不同体现多态,感觉比C++好理解多了!

8)JAVA中的类定义,每个字段的含义
(参考:https://blog.csdn.net/IRON__MAN__/article/details/105603539?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
这个地方我觉得我理解的还是不够的,尤其是静态成员和非静态成员以及成员方法调用之类的,希望能沾手写代码的光,编译全错,手写一个都看不出来!!!
(留一个flag,在下几篇文里把这个地方弄一弄)

9)什么是抽象,什么是接口
(参考:https://blog.csdn.net/gongxiao1993/article/details/82055007
抽象和接口除了接口我能写写,对于抽象到底是啥我都没有一个明确的理解,这里先贴一个感觉写的很详细的文,之后慢慢看,抽象感觉是必考啊!

猜你喜欢

转载自blog.csdn.net/qq_44229840/article/details/106444877
今日推荐