1.字符串如何转整型,以及会出现的异常
(1)如何转化
将字符串转换为整形值,主要使用Integer类的parseInt()方法和valueOf()方法
他们都可以接收一个String类型的参数,parseInt()方法返回一个int类型的值,valueOf()方法返回的是Integer对象。String类型的数据转为Int类型属于比较常见的场景,主要有两种转换方法:
1. 使用Integer.parseInt(String)方法
2. 使用Integer.valueOf(String)方法
下面是一个小案例:
public void convert() {
// 1.使用parseInt方法
String s1 = "22";
Integer n1 = Integer.parseInt(s1);
System.out.print("字符串22转换为数字:");
System.out.println(n1);
// 2.使用valueOf方法
String s2 = "23";
Integer n2 = Integer.valueOf(s2);
System.out.print("字符串23转换为数字:");
System.out.println(n2);
}
(2)可能会出现的异常
NumberFormatException异常
需要注意的是,使用这两种方法都有一个前提,那就是待转换字符串的内容必须为纯数字。如果待转字符串中出现了除数字以外的其他字符,则程序会抛出异常NumberFormatException,其原因都是被转换的字符串中存在英文字母,无法转换成整型。
NullPointerException空指针异常
空指针异常是由RuntimeException派生出来,是一个运行级别的异常。意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。空指针异常发生在对象为空,但是引用这个对象的方法。
例如: String s = “ ”; //对象s为空(null) int length = s.length();//发生空指针异常
一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以生命一个变量时最好给它分配好内存空间,给予赋值。
比如变量为空,而你没有去判断,就直接使用,就会出现NullPointException。写程序时严谨些,尽量避免了,例如在拿该变量与一个值比较时,要么先做好该异常的处理如:
if (s == null) { System.out.println("字符为空!");
}
2.Mysql索引失效的场景(展示失效场景案例后面找时间做)
- 不满足最左匹配原则
- 使用了select *
- 索引列上有计算
- 索引列用了函数
- 字段类型不同
- like左边有%
- 列对比
- 使用or关键字
- 使用not in和not exists
- order by
3.Vue的生命周期过程
vue生命周期可以分为八个阶段,分别是:
beforeCreate(创建前)、created(创建)、beforeMount(挂载前)、mounted(挂载)、beforeUpdate(更新前)、updated(更新)、beforeDestroy(销毁前)、destroyed(销毁)
4.Stirng、StringBuffer、StringBuilder的区别
String | StringBuffer | StringBuilder |
String的值是可变的,这就导致每次对 String的操作都会生成新的String对象, 不仅效率低下,而且浪费大量优先的 内存空间 | StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。 | 可变类, 速度更快 |
不可变 | 可变 | 可变 |
线程安全 | 线程不安全 | |
多线程操作字符串 | 单线程操作字符串 |
5.Error和Exception的区别
Error 和 Exception 都属于Throwable的子类, 在java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型。
- Exception 和 Error体现了java平台设计者对不同异常情况的分类, Exception是程序正常运行中,可以预料的意外情况,可以被捕获,进行相应的处理。
- Error 是指正常情况下,不大可能出现的情况,绝大部分的Error 都会导致程序处于非正常的,不可恢复的状态, 不需要捕获, 常见的OutOfMemoryError 是Error的子类。
- Exception 分为可检查异常(checked) 和 不可检查异常(unchecked).可检查异常在源代码里必须显式的进行捕获处理,这是编译期检查的一部分,不可检查异常是指运行时异常, 比如NullPointerException, ArrayIndexOutOfBoundsException之类, 通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。
6.@ResponseBody和@RequestBody注解
1.@ResponseBody作用:
将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写@ResponseBody,底层会将方法的返回值封装为ModelAndView对象。如果返回值是字符串,那么直接将字符串写到客户端;如果是一个Java对象,会将对象转化为json串,然后写到客户端。
@ResponseBody是作用在方法上的,@ResponseBody表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用(AJAX)。
注意编码:
注解中我们可以手动修改编码格式,例如:
@ResponseMapping(value="/register.do",produces="text/html;charset=utf-8"),前面是请求的路径,后面是编码格式。
2、适用场景
有时候我们需要用Controller实现网络服务接口,比如:商品查询、查询天气、新闻数据等。就不需要进行页面跳转而是直接返回数据。这时候我们可以在方法上,添加注解:@ResponseBody
在浏览器中直接显示hello文字,也就是说添加了@ResponseBody注解的方法,返回值会通过HTTP响应主体直接发送给浏览器。
@Controller
@RequestMapping("/test")
public class DemoController{
@RequestMapping("/hello.do")
@ResponseBody
public String hello(){
return "hello";
}
}
2.@RequestBody
@RequestBody 是作用于方法的参数中,将请求体以json形式写入某个对象。
作用
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
@RestController
public class testController {
@PostMapping("test")
public void test(@RequestBody User user) { //这里使用User类需要提前创建好User实体类
System.out.println(user.toString());
}
}