第一部分 语法基础篇
第一章 概述
1.1计算机的的组成部分
1.计算机的组成主要分为两大类:
(1)硬件:是可以看到的物理部分,基本都是一些电子元器件
常见的硬件:
CPU :全称为 Center Processing Unit 中午翻译为 中央处理器 主要的功能是控制和数值计算功能。
GPU : 全称为Graphic Processing Unit 中文名称为显卡 图形图像处理单元 主要的功能是计算图形数据
存储设备: 永久性存储设备ROM任何数据都是以二进制的形式存储的 一般有以下几个类型
机械硬盘
固态硬盘
U盘
光盘
移动硬盘
输入输出设备:
键盘:输入字符数据
鼠标:输入定位数据
显示器:输出图形图像数据
扬声器:输出声音数据
麦克风:输入声音数据
打印机:输出图形图像文本数据
扫描仪:输入图形图像文本数据
网络设备:
输入:从互联网上下载数据
输出:从本地上传数据到互联网
(2)软件:是看不见的部分,是一系列的指令,主要用于控制硬件去完成一些特定的工作。
同时软件是指一系列按照特定顺序组织的计算机数据与指令的集合
软件一般只有两种分类
1. 系统软件:同时也被称之为操作系统主要是用来控制和管理底层硬件的一套指令,操作系统为用
户提供最基本的计算机功能。
2. 应用软件:基于系统软件之上的,为用户带了特定领域服务的软件
1.2人机交互方式
一般来说我们和计算机有以下两种交互方式
1. 图形化界面操作方式:操作简单,表现直观,容易上手操作,步骤繁琐,占用空间大
2. 命令行操作方式 CMD(Command win+R 输入cmd回车)窗口:操作复杂,命令较多,不容易
上手,步骤简单,占用空间小,适合远程操作
- 在使用命令行的操作方式时我们经常会使用以下几个dos命令
命令 作用
c: 进入C盘根目录
d: 进入D盘根目录
cd xxx 进入xxx目录
dir 查看当前目录下有什么文件和目录
cd / 进入到当前所在盘符的根目录
cd .. 返回上一级目录
cls 清屏
exit 退出cmd窗口
1.3 计算机语言
计算机本身就是有一系列物理硬件组成的,它们之间的沟通方式就是电信号,高低电压-二进制数据.所以在与计算机交互时,我们就得通过二进制来进行,早起的汇编语言都是以二进制命令
1.4 软件开发
软件开发流程
1.5 Java语言介绍
1.6Java开发环境搭建
1.7运行Java程序
public class Sample01 { }
注:public class Sample01 中的 Sample01 是类名,而且在Java源代码中,可以存在多个类,但是
public class Sample01 {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
1.8常见的错误
3.逻辑错误
第2章 基本数据与运算
2.1 关键字
2.2 标识符
2.3 注释
注:注释除了有解释说明程序的功能之外,还可以用来调试程序。 多行注释中,不能再出现多行注释
2.4 常量与进制
常量就是指在程序中直接出现的一些数据,也叫字面量 ,而常量通常有以下几种
2.5 变量
2.6 数据类型
2.7 运算符
2.8 常见错误
第3章 流程控制语句
![](https://i-blog.csdnimg.cn/blog_migrate/7854633fbf746782b43c4abe81d2df87.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2e753d5e7202ba1ab11c1dd59b4ff333.png)
![](https://i-blog.csdnimg.cn/blog_migrate/41b4f38ac19d32f5ca577e6ab9598932.png)
练习题
![](https://i-blog.csdnimg.cn/blog_migrate/fd3e6cdcfad1889f01240393926981cf.png)
Applet 是一种在 Web 环境下,运行于客户端的Java程序组件。Applet 必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持 Applet 的移动设备在内的其他各种程序来运行。与一般的Java应用程序不同,Applet 不是通过 main 方法来运行的。Applet运行之前,先调用 Init() 方法,然后调用 start() 方法,最后调用 paint() 方法。
BC项可以跳出一个返回值为boolean类型的函数里面的forEach。JS不可以使用break,原因是js中的forEach()无法在所有元素都传递给调用的函数之前终止遍历。也就是说,没有像for循环中使用的相应的break语句。如果要提前终止,必须把forEach()方法放在一个try块中,并能抛出一个异常。如果forEach()调用的函数抛出foreach.break异常,循环会提前终止
取余运算,结果的符号和被除数符号一致
&运算符:两个数都转为二进制,然后从两个数的最高位进行与运算,两个都为真(1),结果才为真(1),否则为假(0)
13:01101
17:10001
结果:00001,既为1
选择语句不进行循环
没有final修饰的变量相加后会被自动提升为int型,与目标类型byte不相容,需要强制转换(向下转型)
ResultSet跟普通的数组不同,索引从1开始而不是从0开始
1、加载JDBC驱动程序:
2、提供JDBC连接的URL
3、创建数据库的连接
4、创建一个Statement
5、执行SQL语句
6、处理结果
7关闭JDBC对象
A,java是强类型语言,所有的方法必须放在类里面,包括main
B ,java中可以有多个重载的main方法,只有public static void main(String[] args){}是函数入口
C,内部类的类名一般与文件名不同
D,函数都必须用{}括起来,不管是一条语句还是多条语句
被sataic声明的为静态方法,可以直接通过类名调用而不需要通过对象调用。
数组下标从0开始计算,所以是0-9,不能取到array.length
A,一个类只能有一个直接父类,但是继承是有传递性的。一个类可以实现多的接口。一个接口可以继承多个类。
B,接口中没有普通变量(普通成员变量),接口中都是常量,默认修饰符:public static final
C,JDK8之前,接口中的方法都是默认public abstract的,JDK8之后,接口中可以有static、default的修饰的方法,一旦被修饰,方法必须有方法体(抽象方法可是没有方法体的),接口中的方法都不能被private和protected修饰,同时外部接口、类只能被public修饰或者不写,但是内部接口、类可以被四个访问修饰符修饰。
D, 实现接口,其实就是需要重写接口中的abstract方法,一旦实现的类没有重写完,那么这个类必须是个抽象类(抽象类中可以没有抽象方法,但是有抽象方法的类必须是抽象类)。
构造方法的作用是对象初始化
char[] ch = new char[3];//默认空字符
int [] Int = new int[2];//默认0
String[] strings = new String[2];//默认null
既然是实现接口,就要实现接口的所以方法,相当于重写方法,方法的重写需要满足:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)
substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串
A Class类在java.lang包
B 动态代理技术可以动态创建一个代理对象,反射不行
C 反射访问私有成员时,Field调用setAccessible可解除访问符限制
D CGLIB实现了字节码修改,反射不行
E 反射会动态创建额外的对象,比如每个成员方法只有一个Method对象作为root,他不胡直接暴露给用户。调用时会返回一个Method的包装类
F 反射带来的效率问题主要是动态解析类,JVM没法对反射代码优化。
含有abstract关键字的方法是抽象方法,抽象方法没有方法体以分号结束,抽象类可不包含抽象方法但声明了抽象方法的类必须定义为抽象类,并且抽象类、接口都不可以实例化。子类可继承抽象父类或实现抽象父类当中的所有抽象方法(两种方法皆可)
A 基本数据类型包括byte,short,int,long,float,double,char,boolean,所以A错。
B,C语言当中是这样,java不是, String内部是用char[]数组实现的,不过结尾不用\0。
C 对,字符串内容比较用equals方法。
D char存储的unicode码,不进可以存储ascII码,汉字也可以
D public可以被当前类,子类,包,其他包,访问,
protected 可以被当前类,子类,包访问
default可以被可以被当前类,包内访问;
private只能被当前类访问
B 是从 double 到 int ,也就是从大范围到小范围,不会丢失精度。
A: 垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收
4、可重入锁
5、读写锁
6、互斥锁
7、悲观锁
8、乐观锁
9、公平锁
10、非公平锁
11、偏向锁
12、对象锁
13、线程锁
14、锁粗化
15、轻量级锁
16、锁消除
17、锁膨胀
18、信号量
判断推理题
将①和②重合得到③,重点在于判断将正方形四分的两条线段是否连接正方形的四个顶点
两个关键:神经中枢病损 丧失
A 不是病损
B 听力受损导致发音缺陷,不是神经中枢的病损
C 只是有困难,不是丧失
由本题可推知,对作家没有真止的共鸣,对一个作家的了解就无从深入,A是本题的“逆否命题”,所以为正确答案。B、C、D是本题的“否命题”,由题目无法推山。
分子为从小到大排列的奇数,分母为从小到大排列的质数
智力题
设有n个老鼠,每个老鼠选择其中的n个瓶子喝药,
其中有1个瓶子n个老鼠都喝
其中有C(n,n-1)个瓶子有n-1个老鼠喝过
其中有C(n,n-2)个瓶子有n-2个老鼠喝过
。。。
其中有C(n,2)个瓶子只有2个老鼠喝过
有C(n,1)个瓶子只有1个老鼠喝过
假如最后有k个老鼠死掉了,那么根据这k个老鼠共同喝过那个瓶子的药,就知道那个瓶子有毒药了
所以n个老鼠,最大可以辨别C(N,N)+C(N,N-1)+C(N,N-2)+...C(N,1)=2^N-1
所以答案选B,10
数量关系
首先建立一个HashMap来映射符号和值,然后对字符串从左到右来,如果当前字符代表的值不小于其右边,就加上该值;否则就减去该值。以此类推到最左边的数,最终得到的结果即是答案
所求的最长公共前缀子串一定是每个字符串的前缀子串。所以随便选择一个字符串作为标准,把它的前缀串,与其他所有字符串进行判断,看是否是它们所有人的前缀子串。这里的时间性能是O(m*n*m)。
首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。
回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是不完整的)。该字符串初始为空。每次取电话号码的一位数字,从哈希表中获得该数字对应的所有可能的字母,并将其中的一个字母插入到已有的字母排列后面,然后继续处理电话号码的后一位数字,直到处理完电话号码中的所有数字,即得到一个完整的字母排列。然后进行回退操作,遍历其余的字母排列。
回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。