- java中存在数字使 i + 1 < i 吗,什么情况存在?
答案: java中int是32,范围是-2147483648--2147483647,所以是存在i+1<i的。
代码如下:
class A
{
private int i=2147483647;
public void test()
{
if(i+1<i)
{
System.out.println("执行此句代码说明存在这样的数");
}
//else
}
}
class Test
{
public static void main(String[] args)
{
A a=new A();
a.test();
}
}
打印结果:
“执行此句代码说明存在这样的数”
这个数就是2147483647。
当然既然存在i+1<i的情况,那么也一定存在i-1>i的情况,这个数就是-2147483648
看下面代码:
class A
{
private int j=-2147483648;
public void test()
{
int n=j-1;
if(i-1>i)
System.out.println("<span style="font-family: arial;">执行此句代码说明存在这样的数</span>");
}
}
class Test
{
public static void main(String[] args)
{
<span style="white-space:pre"> </span>A a=new A();
<span style="white-space:pre"> </span>a.test();
}
}
打印结果为:
“执行此句代码说明存在这样的数”
- java创建对象的几种方式。
答案 : ① 使用new关键字
②使用Class类的newInstance方法
③使用Constructor类的newInstance方法
④使用clone方法
⑤使用反序列化 - 网站如果有大量的人登陆访问。那么会产生很多的session,如果你是程序员你该怎么办?
答案: session默认保存在内存中,内存资源宝贵,session数据量大导致内存利用率高,以下方案解决session内存存储问题:
①可以设置session超时时间,达到超时时间session自动清空
<session-config>
<session-timeout>20</session-timeout>
</session-config>
②将session中的数据序列化到硬盘中
- JSP有哪些内置对象,作用是什么?
答案:
Page,pageContext,request,response,session,application,out,config,exception
Page指的是JSP被翻译成Servlet的对象的引用.
pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围》
request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。
Session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效
Application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。
Response是响应对象,代表的是从服务器向浏览器响应数据.
Out:JSPWriter是用于向页面输出内容的对象
Config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.
Exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息。
- SpringMVC的工作流程
答案:
①用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。
②前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样的方式来存储。
③HandlerMapping有了映射关系,并且找到url对应的处理器,HandlerMapping就会将其处理器(Handler)返回,在返回前,会加上很多拦截器。
④DispatcherServlet拿到Handler后,找到HandlerAdapter(处理器适配器),通过它来访问处理器,并执行处理器。
⑤执行处理器
⑥处理器会返回一个ModelAndView对象给HandlerAdapter
⑦通过HandlerAdapter将ModelAndView对象返回给前端控制器(DispatcherServlet)
⑧前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(jsp),其实就是将ModelAndView对象中存放视图的名称进行查找,找到对应的页面形成视图对象
⑨返回视图对象到前端控制器。
⑩视图渲染,就是将ModelAndView对象中的数据放到request域中,用来让页面加载数据的。
最后一步: 通过第8步,通过名称找到了对应的页面,通过第10步,request域中有了所需要的数据,那么就能够进行视图渲染了。最后将其返回即可。
- 利用递归方法求5.
public class Test0309 {
public static void main(String[] args){
System.out.println(new Test0309().getNum(5));
}
public int getNum(int n){
int result = n;
if(n > 1){
result = n*getNum(n-1);
}else{
result = 1;
}
return result;
}
}
- 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
答案:
import java.util.Scanner;
/**
* @author ForeverLover
*/
public class Rabbit {
public static void main(String[] args) {
long s1 = 1;
long s2 = 1;
int count;
long temp;
Scanner in = new Scanner(System.in);
count = in.nextInt();
for (int i = 1; i <= count; i++) {
if (i == 1) {
System.out.println("第" + i + "个月的兔子对数:" + s1);
continue;
} else if (i == 2) {
System.out.println("第" + i + "个月的兔子对数:" + s2);
continue;
} else {
temp = s2;
s2 = s1 + s2;
s1 = temp;
System.out.println("第" + i + "个月的兔子对数:" + s2);
}
}
}
}
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
答案:
public class FirstRepeat {
public static void main(String[] args) {
System.out.println(findFirstRepeat("pmedmitjtckhxwhvpwemznhmhzhpueainchqrftkmbjlradhmjekcqzansyzkvqhwnrdgzdbzewdmxkzrscikdaugbvygntrifnolehdtrqjlasofuvzeijbmzehkxknmjekcxswqldknysfsxrqaqzp",152));
}
//返回:y
public static char findFirstRepeat(String A, int n) {
String[] str=A.split("");
for(int x=0;x<n;x++){
int index=0;
int num=0;
//对于每一个值,都需要从前开始遍历
while(index<=x){
if(str[index].equals(str[x])){
num++;
}
index++;
}
//该值出现了两次,说明重复了
if(num>1){
char flag='x';
flag=str[x].toCharArray()[0];
return flag;
}
}
//返回该值说明已经没有重复的
return 'p';
}
}
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中。a.txt文件中的单词用回车符分隔,b.txt中用回车或空格进行分隔。
答案:
public class test {
public void connectWords(File file1, File file2, File file3)throws IOException
{
String[] str1 = split(file1, "\n");
String[] str2 = split(file2, "\n"+"|"+" ");
try(FileWriter fw = new FileWriter(file3))
{
int index = 0;
while(index != str1.length||index != str2.length)
{
if(index < str1.length)
fw.write(str1[index]);
if(index < str2.length)
fw.write(str2[index]);
index ++;
}
}
}
public String[] split(File f, String regex)throws IOException
{
try(FileReader fr = new FileReader(f))
{
char[] cbuf = new char[(int)f.length()];
int hasRead = fr.read(cbuf);
String str = new String(cbuf, 0, hasRead);
String[] strArr = str.split(regex);
return strArr;
}
}
public static void main(String[] args) throws IOException
{
File f1 = new File("./a.txt");
File f2 = new File("./b.txt");
File f3 = new File("./c.txt");
test t = new test();
t.connectWords(f1, f2, f3);
}
}