「java题目汇总」java题目大全
本篇文章给大家谈谈java题目汇总,以及java题目大全对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
百度java面试题有哪些 集锦汇总java面试
1、Servlet 3中的异步处理指的是什么?
答:在Servlet
3中引入了一项新的技术可以让Servlet异步处理请求。有人可能会质疑,既然都有多线程了,还需要异步处理请求吗?答案是肯定的,因为如果一个任务处理时间相当长,那么Servlet或Filter会一直占用着请求处理线程直到任务结束,随着并发用户的增加,容器将会遭遇线程超出的风险,这这种情况下很多的请求将会被堆积起来而后续的请求可能会遭遇拒绝服务,直到有资源可以处理请求为止。异步特性可以帮助应用节省容器中的线程,特别适合执行时间长而且用户需要得到结果的任务,如果用户不需要得到结果则直接将一个Runnable对象交给Executor并立即返回即可。
补充:多线程在Java诞生初期无疑是一个亮点,而Servlet单实例多线程的工作方式也曾为其赢得美名,然而技术的发展往往会颠覆我们很多的认知,就如同当年爱因斯坦的相对论颠覆了牛顿的经典力学一般。事实上,异步处理绝不是Serlvet
3首创,如果你了解Node.js的话,对Servlet 3的这个重要改进就不以为奇了。
下面是一个支持异步处理请求的Servlet的例子。
importjava.io.IOException; importjavax.servlet.AsyncContext;
importjavax.servlet.ServletException; importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {
"/async"}, asyncSupported = true)
publicclassAsyncServletextendsHttpServlet{privatestaticfinallongserialVersionUID
= 1L; @OverridepublicvoiddoGet(HttpServletRequest req, HttpServletResponse resp)
throwsServletException, IOException { // 开启Tomcat异步Servlet支持req.setAttribute(
"org.apache.catalina.ASYNC_SUPPORTED", true); finalAsyncContext ctx =
req.startAsync(); // 启动异步处理的上下文// ctx.setTimeout(30000);ctx.start( newRunnable()
{ @Overridepublicvoidrun() { // 在此处添加异步处理的代码ctx.complete(); } }); } }
2、如何在基于Java的Web项目中实现文件上传和下载?
答:在Sevlet 3 以前,Servlet
API中没有支持上传功能的API,因此要实现上传功能需要引入第三方工具从POST请求中获得上传的附件或者通过自行处理输入流来获得上传的文件,我们推荐使用Apache的commons-fileupload。
从Servlet 3开始,文件上传变得无比简单,相信看看下面的例子一切都清楚了。
上传页面index.jsp:
Select your photo and upload
${hint}
Photo file:
支持上传的Servlet:
packagecom.jackfrued.servlet; importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.MultipartConfig;
importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse; importjavax.servlet.http.Part;
@WebServlet( "/UploadServlet")
@MultipartConfigpublicclassUploadServletextendsHttpServlet{privatestaticfinallongserialVersionUID
= 1L; protectedvoiddoPost(HttpServletRequest request, HttpServletResponse
response) throwsServletException, IOException { //
可以用request.getPart()方法获得名为photo的上传附件// 也可以用request.getParts()获得所有上传附件(多文件上传)//
然后通过循环分别处理每一个上传的文件Part part = request.getPart( "photo"); if(part !=
null part.getSubmittedFileName().length() 0) { //
用ServletContext对象的getRealPath()方法获得上传文件夹的绝对路径String savePath =
request.getServletContext().getRealPath( "/upload"); // Servlet
3.1规范中可以用Part对象的getSubmittedFileName()方法获得上传的文件名//
更好的做法是为上传的文件进行重命名(避免同名文件的相互覆盖)part.write(savePath + "/"+
part.getSubmittedFileName()); request.setAttribute( "hint", "Upload
Successfully!"); } else{ request.setAttribute( "hint", "Upload failed!"); } //
跳转回到上传页面request.getRequestDispatcher( "index.jsp").forward(request, response); }
}
3、服务器收到用户提交的表单数据,到底是调用Servlet的doGet()还是doPost()方法?
答:HTML的
%--静态包含 --% %--动态包含 --% jsp:includepage= "..."
jsp:param name= "..."value= "..."/ /jsp:include
4、Servlet中如何获取用户提交的查询参数或表单数据?
答:可以通过请求对象(HttpServletRequest)的getParameter()方法通过参数名获得参数值。如果有包含多个值的参数(例如复选框),可以通过请求对象的getParameterValues()方法获得。当然也可以通过请求对象的getParameterMap()获得一个参数名和参数值的映射(Map)。
5、Servlet中如何获取用户配置的初始化参数以及服务器上下文参数?
答:可以通过重写Servlet接口的init(ServletConfig)方法并通过ServletConfig对象的getInitParameter()方法来获取Servlet的初始化参数。可以通过ServletConfig对象的getServletContext()方法获取ServletContext对象,并通过该对象的getInitParameter()方法来获取服务器上下文参数。当然,ServletContext对象也在处理用户请求的方法(如doGet()方法)中通过请求对象的getServletContext()方法来获得。
关于JAVA的题目
1.
Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。
Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程
Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。比如:EJB、servlet、JSP、XML、事务控制
Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。比如:呼机、智能卡、手机、PDA、机顶盒
简单讲就是:
j2se java 2 simple edition 小型程序用
j2ee java 2 enterprise edition 大型程序用
j2me java 2 micro edition 手机上用
2.
GC是java内存垃圾回收,具体实现过程我不是很清楚,一般没有必要知道这个,你只需要知道当你的类和对象没有引用了或者长时间没有调用的话,GC会考虑将其回收掉,释放资源。C++需要程序员自己释放对象资源,而java有了GC就不用了。
3。
byte是一种基本数据类型,跟你常用的int那些事一样的。Byte是一个类,Byte 类将基本类型 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。 此外,该类还为 byte 和 String 的相互转换提供了几种方法,并提供了处理 byte 时非常有用的其他一些常量和方法。
4.
很简单,wait()是Object类中的一个方法,导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。也就是说当一个对象调用了wait()方法后他对应的线程会进入等待状态,要让他重新唤醒,必须又其他线程来调用这个对象的notify()方法。
sleep(long millis)方法是Thread类中的一个方法,在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)。他等待的时间是又后面的参数来决定的。
5.
这个要说的话就多了,简单的说。String是常量。是不可改变的。他的地址是常量池,STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法 使用 StringBuffer 主要就是在性能上的考虑。 String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行String 的相关操作的时候会产生许多临时的 String 对象。而StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些。
6.
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类
服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
完成的。
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
7.
没明白你说的啥意思。如果是同步的实现方式的话。一个是继承thread类 一个是实现runnable接口
8.
单例模式,就是你写个程序,强制要求某一个类只能有一个实例。
public class Singleton{
public static Singleton sin;
private Singleton(){}
public static Singleton getSingleton(){
if(sin==null)
sin=new Singleton();
return sin;
}
}
这样的话就只能有一个实例了。
9.
一般的基本数据类型放在数组里就好了,对象才放到集合中。
public class ErFenFa {
public static void main(String[] args) {
int[] iArray = { 4, 12, 23, 33, 45, 53, 65, 78, 88, 90 };
int seek = 33;
int index = 0;
// 查找起始下标
int start = 0;
// 查找结束下标
int end = iArray.length - 1;
int count = 0;
while (true) {
count++;
index = start + ((end - start) / 2);
if (iArray[index] seek) {
start = index;
} else if (iArray[index] seek) {
end = index;
} else {
break;
}
}
System.out.println(count);
}
}
10.请google或者baidu吧,没必要粘贴。说是说不清楚的,买些书看。
JAVA 练习题
public class JavaExos {
public static void charInt(String chaine){ //1044
String[] charInt = new String[2];
int count = -1;
char maxChar = 'A';
int[] letterCount = new int[26];
String word = chaine.toLowerCase();
for (int i=0;iword.length();i++) {
int indexOfChar = (byte)word.charAt(i)-97;
letterCount[indexOfChar]++;
if (letterCount[indexOfChar]count || (letterCount[indexOfChar]==count word.charAt(i)maxChar)){
count = letterCount[indexOfChar];
maxChar = word.charAt(i);
}
}
charInt[0] = String.valueOf(maxChar);
charInt[1] = ""+count;
System.out.println(charInt[0]+" "+charInt[1]);
}
public static void getDate(int n){ //1047 这题如果给1,其实是指2000年1月2号.
n++;
int[] getYear = getYear(n);
int year = getYear[0];
int[] getMonth = getMonth(year,getYear[1]);
int month = getMonth[0];
String monthString ;
if(month10) monthString = "0"+String.valueOf(month);
else monthString = String.valueOf(month);
int day = getMonth[1];
System.out.println(year+"-"+monthString+"-"+day+" "+getDayOfWeek(n));
}
private static boolean isBissextile(int n){
if (n%4==0 !(n%100==0n%400!=0))
return true;
else
return false;
}
private static int[] getYear(int n){
int[] getYear = new int[2];
int year = 2000;
while(n0){
if(isBissextile(year)) n -= 366;
else n -= 365;
if (n0) year++;
}
if(isBissextile(year)) n+=366;
else n += 365;
getYear[0] = year;
getYear[1] = n;
return getYear;
}
private static int[] getMonth(int year, int n){
int[] getMonth = new int[2];
int month = 1;
while(n0){
if(month=7 month%2 != 0) n -= 31;
else if (month==2 isBissextile(year) ) n -= 29;
else if (month==2 !isBissextile(year)) n -= 28;
else if(month=7 month%2==0) n -= 30;
else if(month%2==0) n-=31;
else n -= 30;
if (n0) month++;
}
if(month=7 month%2 != 0) n += 31;
else if (isBissextile(year) month==2) n += 29;
else if (!isBissextile(year) month==2) n += 28;
else if(month=7 month%2==0) n += 30;
else if(month%2==0) n+=31;
else n += 30;
getMonth[0] = month;
getMonth[1] = n;
return getMonth;
}
private static String getDayOfWeek(int n){
int quotient = n/7;
int remainder = n -= quotient*7;
switch(remainder){
case 0 : return "Sunday";
case 1 : return "Monday";
case 2 : return "Tuesday";
case 3 : return "Wednesday";
case 4 : return "Thursday";
case 5 : return "Friday";
case 6 : return "Saturday";
default : return "Never arrive";
}
}
public static void getCode(String chaine){ //1048
chaine = chaine.toUpperCase();
System.out.println("START");
System.out.println(chaine);
System.out.println("END");
System.out.println();
for(int i=0;ichaine.length();i++){
System.out.print((changChar(chaine.charAt(i))));
}
System.out.println();
}
private static char changChar(char c){
if(c=65 c=90 c-565) return (char)(c+26-5);
else if(c=65 c=90) return (char)(c-5);
else return c;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaExos.charInt("adfadffasdfda");
JavaExos.getDate(1751);
JavaExos.getCode("NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX");
跪求:是几道关于Java的题目
第一题(这题比较简单,这是我之前写的,你可以参考)
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
float score =0;
int fail=0,pass=0,middle=0,good=0,excellent=0;
System.out.println("请输入学生成绩[按Enter键后继续,若想结束,请输入-1]:");
while(score!=-1){
score = in.nextFloat();
if(score!=-1){
if(score60){
fail++;
}else if(60=scorescore70){
pass++;
}else if(70=scorescore80){
middle++;
}else if(80=scorescore90){
good++;
}else if(90=scorescore=100){
excellent++;
}
}
}
System.out.println("不及格人数:"+fail);
System.out.println("及格人数:"+pass);
System.out.println("中等人数:"+middle);
System.out.println("良好人数:"+good);
System.out.println("优秀人数:"+excellent);
}
第二题:
public static void main(String[] args) {
System.out.print("请输入学生的成绩:");
Scanner in=new Scanner(System.in);
float score=in.nextFloat();
if(score=59){
System.out.println("不及格!");
}else if(score=60score=79){
System.out.println("合格!");
}else if(score=80score=89){
System.out.println("良!");
}else{
System.out.println("优!");
}
}
第三题:
public static void main(String[] args) {
System.out.print("请输入计算的自然数的右区间,如100:");
Scanner in=new Scanner(System.in);
int num=in.nextInt();
int sum=0;
for(int i=1;i=num;i++){
sum=sum+i;
}
System.out.println("1~"+num+"之间的自然数之和为:"+sum);
}
有关java编程题目?
按照题目要求编写的圆,圆锥和测试类的Java程序如下
Test.java文件内容如下
class Circle{
private double r;
private String color;
public Circle(double r){
this.r=r;
}
public double area(){
return Math.PI*r*r;
}
public double perimeter(){
return Math.PI*2*r;
}
public double getR(){
return this.r;
}
public void setR(double r){
this.r=r;
}
public String getColor(){
return this.color;
}
public void setColor(String color){
this.color=color;
}
public String toString(){
return "圆的半径为"+r+",颜色为"+color;
}
}
class Cone{
private Circle c;
private double h;
private String color;
public Cone(Circle c,double h){
this.c=c;
this.h=h;
}
public double volume(){
return 1.0/3*c.area()*h;
}
public Circle getCircle(){
return this.c;
}
public void setCircle(Circle c){
this.c=c;
}
public double getH(){
return this.h;
}
public void setH(double h){
this.h=h;
}
public String getColor(){
return this.color;
}
public void setColor(String color){
this.color=color;
}
public String toString(){
return "圆锥的底面积为"+c.area()+",高为"+h+",颜色为"+color;
}
}
public class Test{
public static void main(String[] args){
Circle circle1=new Circle(2.5);
circle1.setColor("红色");
System.out.println(circle1.toString());
System.out.println("圆的面积为"+circle1.area());
System.out.println("圆的周长为"+circle1.perimeter());
Cone circlar1=new Cone(circle1,2.7);
circlar1.setColor("蓝色");
System.out.println(circlar1.toString());
System.out.println("圆锥的体积为"+circlar1.volume());
}
}
java题目汇总的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java题目大全、java题目汇总的信息别忘了在本站进行查找喔。