欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Notebook

程序员文章站 2022-05-29 08:05:36
...

1.什么是计算机程序?
为了让计算机执行某些操作或解决某些问题而编写的一系列有序指令的集合。

2.jdk,jre,jvm的区别关系
jdk:java开发工具包
jre:java运行时环境
jvm:java虚拟机
(jvm属于jre;jre属于jdk)

3.Java定义的常用数据类型
基本数据类型:
整形:8位 byte 浮点型:单精度float 字符型:char 布尔型:boolean
16位 short 双精度double
32位 int
64位 long

(Java中负数是以二进制补码形式表示)

4.变量的定义
一个数据存储空间的表示

5.Java中整数的常量默认是int类型
(long s=3000000000; 会报错)
(long s=3000000000l; 正确)

6.Java中浮点型的常量默认是double类型
(float f=1.2; 会报错)
(float f=1.2f; 正确)

7.强制数据类型转换要注意精度的丢失,注意取值范围(思考:超出取值范围后会发生什么情况?怎么发生的?)

补码按位取反+1;
Java中补码运算是封闭的,4位运算结果也是4位的

算数运算符:
在java中,计算具有(类型)封闭性,int类型计算结果是int类型
同数据类型参与运算
Byte,short,char的计算都是表象,底层都是采用int类型进行运算的。

关系运算符:
两个数比较,结果为布尔类型
两个相同类型数据比较,或两个数据可相互转换,自动转换。

自增、自减运算符:a++,++a,a–,--a

逻辑运算符:
与或非用于两个(一个)布尔类型数据的运算
短路与,短路或:&& ||
b1&b2:整体结果为整个表达式的结果
b1&&b2:如果b1为false,b2将不再执行

位运算符:
针对二进制
按位与(或,异或,非):&,|,^,~
左移运算:<< (左移一位相当于*2)
右移运算:>> (右移一位相当于除以2,不保留余数)

负数移位:高位补1
无符号移位:高位补0

9、
switch(表达式){//int,short,byte,char,枚举,String类型
case 常量1:
break;
case 常量2:
break;
default:
break;
}

if与switch区别:
都是处理多分支结构;
switch处理等值条件判断:
if处理变量在某个区间的情况;

循环次数确定 使用for循环
循环次数不确定 使用while 、do while循环

11.程序调试
分析错误,设置断点;
启动调试;
单步运行;
观察变量;
发现问题;
修正代码,重新运行;
解决问题。

12、数组:
数组是一个变量,用来存储相同类型的数据

13
对象的特征—>属性、方法
对象:是描述客观事物的实体,由一组属性和方法组成。
类的概念:类是一个模板,定义对象将会拥有的特征(属性)与行为(方法)。
类与对象的关系
1)类是对象的类型。
2)对象是类的实例。

局部变量与成员变量的区别:
成员变量系统会赋默认值。
局部变量必须赋值后才能使用。

构造方法:
1)无返回值类型,
2)构造方法名与类名相同
3)若不定义构造方法,系统提供默认无参构造方法

方法重载:
1)方法名相同
2)参数数据类型或参数个数不同
3)与返回值、访问修饰符无关

this关键字是对一个对象的默认引用。用以区分同名成员变量。

static修饰的变量数据加载顺序,随着类的加载,加载到内存中,优先于实例存在。

实例方法可以直接调用静态成员(属性与方法)
静态方法不能直接调用实例成员(属性与方法)
实例方法内不能调用静态变量

封装的基本概念:
封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,
而是通过该类提供的方法来实现对隐藏信息的操作与访问。
封装的好处:
隐藏类的实现细节;
只能通过规定方法访问数据;
方便加入控制语句;
方便修改实现。

封装的步骤:
1)修改属性的可见性——>设为private
2)创建公有的getter/setter方法——>用于属性的读写
3)在getter/setter方法中加入属性控制语句——>对属性值的合法性进行判断

this关键字:
调用属性;
调用方法;
调用构造方法:this(),this(参数1,参数2,…)

15、继承
继承关键字:extends

子类访问父类成员:(super代表父类对象)
访问父类构造方法:super(); super(name);
访问父类属性:super.name;
访问父类方法:super.print();

父类不能被继承的成员:
1)private修饰的成员
2)子类和父类在不同包,默认访问修饰符
3)构造方法

访问修饰符可以修饰属性、类、方法
private——>本类
friendly(默认)——>本类,同包
protected——>本类,同包,子类
public ——>本类,同包,子类,其他

多重继承的初始化顺序:
父类属性——>父类构造——>子类属性——>子类构造

方法重写的规则:
1)方法名相同;
2)参数列表相同
3)返回值类型相同或是其子类
4)访问权限不能严于父类

构造方法由于不能被继承,所以不能被重写。
用static修饰的方法不能被重写

super关键字访问父类成员:
super只能出现在子类的方法和构造方法中;
super调用构造方法时,只能是第一句;
super不能访问父类的private成员;

final用法:
1)用final修饰的类不能被继承
2)用final修饰的方法不能被重写
3)用final修饰的属性不能被修改

16.接口
定义抽象类
public abstract class Pet{
}
抽象类不能实例化

abstract可以用于方法——>抽象方法
public abstract void print();
抽象方法没有方法体
抽象方法必须在抽象类中
子类必须实现父类中的抽象方法,除非子类是抽象类

接口:
用interface关键字修饰
定义接口
public interface Myinterface{
//都是公共的抽象方法
//静态常量
}

接口的特性:
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口
接口中的变量都是静态常量

接口中属性必定是公共的,静态的,常量
接口中方法必定是公共的,抽象的实例方法

面向接口编程:
关心实现类有何能力,不关心细节;
面向接口的约定而不考虑接口的具体实现;

java规定接口只能由其它接口实现继承
子接口继承的目的在于拥有父接口功能后添加新定义

17.多态
多态:同一引用类型,不同实例执行不同的操作

实现多态的三个要素:
1)编写具有继承关系的父类和子类
2)子类重写父类的方法
3)使用父类的引用指向子类的对象(实例)
Pet pet=new Dog();
Pet pet=new Cat();

编译时类型:声明的类型决定 Pet pet;
运行时类型:Dog

实现多态的两种方式:
1)将父类作为方法的形参
2)将父类作为方法的返回值

父类引用不能调用子类特有的方法;

子类——>父类 自动类型转换 向上转型
父类——>子类 强制类型转换 向下转型

instanceof运算符
(判断传入的实例)
对象 instanceof 类或接口

18.枚举
所谓的枚举就是规定好了指定的取值范围,所有的内容只能从指定的范围中取得。

定义枚举的语法:
public enum 枚举类型名称{
枚举对象1,枚举对象2,枚举对象3;(大写)
}

19.泛型
泛型类的定义格式:
访问修饰符 class 类名称<泛型类型1,泛型类型2>{
访问修饰符 泛型类型 变量名;
访问修饰符 泛型类型 方法名(){

 }
 访问修饰符 泛型类型 方法名(泛型类型 参数名){
   
 }

}

泛型上限
用extends关键字声明:表示参数化的类型可能是所指定的类型或此类型的子类
Info<? extends Number>

泛型下限
用super关键字声明:表示参数化的类型可能是所指定的类型或此类型的父类
Info<? super String>

定义泛型的方法:
访问修饰符 <泛型标识> 泛型标识 方法名(泛型标识 参数名){

}

20.集合
Java集合的内容
Collection Map
List set

List : ArrayList和LinkList
Set : HashSet TreeSet
Map : HashMap TreeMap

Collection : 提供集合相关算法的实现

接口:
Collection接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式。插入、删除元素时效率较高。
Map接口专门处理键值映射数据的存储,可根据键实现对值的操作。

Map接口的常用子类:
HashMap:无序存放,是新的操作类,key不允许重复。
HashTable:无序存放,是旧的操作类,key不允许重复。
TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复。

ArrayList与Vector的区别
HashMap与HashTable的区别

Stack类是Vector的子类

Set接口的定义:
public interface Set extends Collection{

}

Set接口主要方法与Collection一致
Set接口的实例无法像List接口那样双向输出
Set接口的常用子类:
散列存放:HashSet
有序存放:TreeSet

遍历Map:
(1)使用Iterator
Iterator iter=keys.iterator();
while(iter.hasNext()) {
String key=iter.next();
String value=country.get(key);
System.out.println(key+"----->"+value);
}

(2)增强for循环
for(String key:keys) {
String value=country.get(key);
System.out.println(key+"----->"+value);
}

异常:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

处理异常的5个关键字:try catch finally throws throw

存在return的try-catch-finally:
(return最后执行)

多重catch:
排列catch语句顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句

throws声明某个方法可能抛出的各种异常

throw手动抛出异常

log4j的使用步骤:
1)导入log4j的jar文件
2)创建log4j.properties配置文件
3)配置日志信息
4)使用log4j记录日志信息

内部类的定义与创建
内部类必须定义在某个类中,所在类为外部类
内部类可用public ,protected ,private 访问修饰符(abstract,final,static)
内部类没有单独的java源文件,只有class文件

内部类的类文件名称规范:外部类名¥内部类名.class

Computer.Cpu cpu = new Computer.new Cpu();

Computer.Cpu cpu = new Computer.Cpu();//静态内部类创建

23.File文件流
分类:
输入流(Input)——读取文件
输出流(Output)——写入文件

字节流(Byte)——读写二进制文件 …Stream
字符流(Char)——读写文本文件 …Writer/…Reader

节点流——针对文件建立
处理流——针对其他文件流建立

24.线程

任何一个Thread实例调用start方法将启动运行一个线程

Thread类中的run方法是线程启动后自动执行的业务方法

线程生命周期:
(1)新建状态(线程未运行)——New
(2)运行状态(线程开始运行并自动执行run方法)——调用start方法
(3)中断状态(多种原因使线程处于中止)
(4)死亡状态(释放线程对象,不能再恢复运行)

Thread常用方法

start()——启动线程 yield()——暂停当前线程,执行其他线程
run()——执行线程 getPriority()——获取线程优先级
sleep()——线程休眠
interrupt()——中断线程
join()——线程联合,当前线程独占CPU资源

Runnable接口提供一个唯一的run方法,主要作用是可以让多个Thread实例共享此接口的run方法

线程同步关键字:synchronized
1)同步代码块
2)对象同步锁
3)方法同步锁

面经

25.jdbc的连接过程

1.加载JDBC驱动程序
2.创建数据库的连接 Connection
3.创建执行SQL语句的(Statement):
(1)、执行静态SQL语句。通常通过Statement实例实现。
(2)、执行动态SQL语句。通常通过PreparedStatement实例实现。
(3)、执行数据库存储过程。通常通过CallableStatement实例实现。
4.执行SQL语句: Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
5.遍历结果集
6.处理异常,关闭JDBC对象资源

HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098
HTTPS服务器,默认端口号:443/tcp 443/udp
FTP(文件传输)协议代理服务器常用端口号:21
Telnet(远程登录)协议代理服务器常用端口号:23

常见 HTTP 状态码
1xx(临时响应)
2xx(成功)
3xx(重定向):表示要完成请求需要进一步操作
4xx(错误):表示请求可能出错,妨碍了服务器的处理
5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误

常见状态码:
200(成功)
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
401(未授权):请求要求身份验证
403(禁止):服务器拒绝请求
404(未找到):服务器找不到请求的网页

27.SDK与API的关系
SDK相当于开发集成工具环境,API就是数据接口。在SDK环境下调用API数据

API

前端调用后端数据的一个通道,就是我们俗说的接口,通过这个通道,可以访问到后端的数据,但是又无需调用源代码。

SDK

工程师为辅助开发某类软件的相关文档、范例和工具的集合,使用SDK可以提高开发效率,更简单的接入某个功能。

举例说明:一个产品想实现某个功能,可以找到相关的SDK,工程师直接接入SDK,就不用再重新开发了。

Spring下的注解:

注册:@Controller @Service @Component

注入:@Autowired @Resource

请求地址:@RequestMapping

返回具体数据类型而非跳转:@ResponseBody

29.ssm项目功能开发流程(实训)
(1)需求分析

(2)数据库设计

(3)初始化pojo与dao对象:
使用 mybatis 的****生成所需要的 pojo,mapper 接口以及 mapper.xml 文件

(4)编写web页面(${}提取数据库信息)

(5)编写dto层,
创建一个 dto 对象来传递数据(继承pojo中类)

(6)处理dao层
在 PorductMapper 接口中增加方法定义;
在 PorductMapper.xml 文件中增加sql语句

(7)编写service层
定义 service 接口;
编写 service 的实现类(实例化依赖注入dao层映射类,调用数据库sql方法);
在 spring-service.xml 文件中配置 dubbo 服务的发布,并配置新的需要暴露的接口

(8)编写controller层
编写controller 方法(依赖注入service接口,调用方法与数据库数据交互)(请求页面 地址)