自定义注解内的参数可以在方法中使用吗???
老师,我这里没有使用通配符,而是随便使用了一个泛型,也可以达到效果,那为什么要使用通配符呢?有什么区别,而且泛型T,K,是只是习惯性的规定吗?是不是自己定义也可以?
普通方法耗时:3999ms
普通反射方法耗时:65343ms
加速反射方法耗时:21950ms
普通方法耗时这么小,为什么还要使用反射呢?有些糊涂了!
老师,代码一样我的为什么会报错呢?百度找不到问题哇啊。。
老师。麻烦您看一下为什么会出现空指针异常
在封装了Response以后出现空指针异常 页面报找不到服务器
pro.rar
老师,那如果用ti来(t1.stop)这个来执行,主线程是会停止么
啥时候能有本章文档的下载?
为什么再Test03中根据百度服务器的ip地址获取设备的名称时获取不到,获取的结果为IP地址啊 代码如下:
Test2.zip
@Test public void test3(){ //创建一个线程的线程池 ExecutorService pool = Executors.newSingleThreadExecutor(); //创建固定线程(10)的线程池 //ExecutorService pool = Executors.newFixedThreadPool(10); //创建不固定线程的线程池 //ExecutorService pool = Executors.newCachedThreadPool(); for(int i=0;i<20;i++){ final int n = i; Runnable runnable = new Runnable() { @Override public void run() { System.out.println("开始执行"+n); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("执行结束"+n); } }; //任务结束 pool.execute(runnable); } //关闭线程池 pool.shutdown(); } }
老师我这哪里写错了吗,为什么我每次都只执行 开始执行+n然后就结束了。。。。。。。。。
我输入了2,为什么能直接调用查看全纪录的toString()方法,我是在哪里打印的.
@Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("序号").append(this.id).append("#").append("\t"); sb.append("姓名").append(this.name).append("\t\t"); sb.append("年龄").append(this.age).append("\t\t"); sb.append("性别").append(this.sex).append("\t\t"); sb.append("电话号码").append(this.telNum).append("\t\t"); sb.append("地址").append(this.address); return sb.toString(); }
/* * 查询全部记录 * */ public void showAll() if (this.list.size()==0){ System.out.println("没有任何记录"); return; } for (int i= 0;i<this.list.size();i++){ System.out.println(this.list.get(i)); } }
老师,为什么我的情况是返回一个文件
package com.bjsxt.server; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Server2 { public static void main(String[] args) { //(1)创建ServerSocket对象 String CRLF="\r\n";//换行 String BLANK=" "; ServerSocket server=null; //(2)监听是否有客户端发送请求 Socket client=null; InputStream is=null; BufferedReader br=null; try { server = new ServerSocket(9999); client = server.accept(); is=client.getInputStream(); byte [] buf=new byte[20480]; int len=is.read(buf); System.out.println(new String(buf,0,len)); //对web浏览器的请求作出响应 StringBuilder sb=new StringBuilder(); StringBuilder sbContent=new StringBuilder(); sbContent.append("<html><head><title>响应结果</title></head>"); sbContent.append("<body>登陆成功</body></html>"); sb.append("HTTP/1.1").append(BLANK).append(200).append(BLANK).append("OK"); sb.append(CRLF); sb.append("Content-Type: test/html;charset=utf-8"); sb.append(CRLF); sb.append("Content-Length:").append(sbContent.toString().getBytes().length).append(CRLF) ; sb.append(CRLF); sb.append(sbContent); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); bw.write(sb.toString()); bw.flush(); bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //(6)关闭流 IOClose.closeAll(br,client,server); } } }
如上图所示,返回了左下角的下载文件
package com.itbjsxt.TestThread; class A implements Runnable{ private Thread C; public A(Thread C){ this.C = C; } @Override public void run() { for (int i =0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"A"+i); if (i ==5){ try { C.join(); } catch (InterruptedException e) { throw new RuntimeException(e); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } class B implements Runnable{ @Override public void run() { for (int i =0;i<15;i++){ System.out.println(Thread.currentThread().getName()+"B"+i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class ThreadTest1 { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new B()); Thread t = new Thread(new A(t1)); t.start(); t1.start(); for (int i =0;i<15;i++) { System.out.println(Thread.currentThread().getName() + " " + i); if (i ==2){ t.join(); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } 请问一下老师,这里面用到的this.C和直接C.join()执行结果一样那两者有什么区别呢,我不是很理解this
老师,容器要放到类里的无参构造器里去实例化,是因为它是私有的吗,之前讲容器,我看都是直接实例化的
老师,视频里的查询修改删除代码都没有判断有没有记录,我增加了一个判断,这样return之后不会运行下面的语句返回到主菜单,
// 用户查询记录业务逻辑控制 public void searchLogic() { // 先判断是否有记录 if(this.list.size() == 0){ System.out.println("没有记录,请先添加记录!"); return; } Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while (true) { menu.searchMenu(); int item = telNoteRegex.menuItemValidate(1, 7); switch (item) { case 1: // 按姓名查询 this.searchByName(); break; case 2: // 按年龄查询 this.searchByAge(); break; case 3: // 按性别查询 this.searchBySex(); break; case 4: // 按号码查询 this.searchByTelNum(); break; case 5: // 按地址查询 this.searchByAdd(); break; case 6: // 查看全纪录 this.showAll(); break; case 7: return; // 返回上一级 } } }
// 修改记录业务逻辑控制 public void modifyLogic() { // 先判断是否有记录 listHave(); Menu menu = new Menu(); TelNoteRegex telNoteRegex = new TelNoteRegex(); while (true) { menu.modifyMenu(); int item = telNoteRegex.menuItemValidate(1, 3); switch (item) { case 1: // 查看全纪录 this.showAll(); break; case 2: // 修改指定记录 this.modifyOperation(); break; case 3: return; } } } // 判断list集合是否有记录 public void listHave(){ if(this.list.size() == 0){ System.out.println("没有记录,请先添加记录!"); return; } }
老师,视频里的查询修改删除代码都没有判断有没有记录,我增加了一个判断,这样return之后不会运行下面的语句返回到主菜单,但是如果我把这个判断的代码封装到一个方法里listHave(),那么输出没有记录请添加之后,下面的代码依旧会运行,这是什么?如果我封装成方法,应该怎么做?
两次代码运行结果如下:
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637