两个对象a,b 内容相同+hashcode 相同 a==b?
String urlstring = firstline.substring (indexfirstline.indexOf ()).trim ()
为什么这里的HTTP不能用小写的呢?
老师, oos = new ObjectOutputStream(new FileOutputStream) 为啥这里不用BufferedInputStream缓冲流了呢?
import java.util.ArrayList; public class Tset { public static void main(String []args) { //创建集合对象,同时明确了集合中所存储的对象类型只能是Person 类型 ArrayList<Person> al=new ArrayList<Person>(); //创建Person类型对象添加到集合中 Person p1=new Person("marry",20); Person p2=new Person("lili",29); Person p3=new Person("jack",18); al.add(p1); al.add(p2); al.add(p3); //遍历集合 print(al); //创建集合用于存储student类型的对象 ArrayList<Student> al2=new ArrayList<Student>(); Student stu1=new Student("sean",20,"sxt1001"); Student stu2=new Student("nico",19,"sxt1002"); //添加到集合 al2.add(stu1); al2.add(stu2); //遍历集合 print(al2); System.out.println("************"); //调用show()方法 show(al); show(al2); ArrayList<Object> alobject=new ArrayList<Object>(); Object ob1=new Object(); Object ob2=new Object(); alobject.add(ob1); alobject.add(ob2); show(alobject); } //person以及person子类可以使用 public static void print(ArrayList<? extends Person> al) {//相当于ArrayList<Person> al=new ArrayList<Student>();不匹配 for(Person p:al) { System.out.println(p); } } public static void show(ArrayList<? super Student> al) { for(Object obj:al) { System.out.println(obj); } } }
public static void show(ArrayList<? super Student> al) { for(Object obj:al) { System.out.println(obj); } }
为什么不是下面这个呢?
for(Student stu:al) { System.out.println(stu); }
老师,前面那个同学的问题里,为什么把输出流写在while循环里面客户端就可以接收到数据了呢?
OutputStream os =
null
;
while
((len=is.read(flush))!=-
1
) {
System.out.println(
"客户端说:"
+
new
String (flush,
0
,len));
//获得输出流
os=client.getOutputStream();
os.write(
"收到了!"
.getBytes());//为什么写在这里可以让客户端接到数据,而写在外面却不行
}
String[] stringArray = list.toArray(new String[list.size()]);for (String sb : stringArray) { System.out.println(sb);}老师,为何 new String 后面是跟中括号?
老师,假设notifyall唤醒了三个发送线程(称之为线程1,2,3),但此时又来了一个接收消息线程(线程4)想要修改共享缓冲区中的字符串,那么此时是4个线程同时争抢“abc”锁,会不会出现这样的执行顺序:线程1,线程2,线程4,线程3,这样的话就导致线程1,线程2发送是没问题的,但是线程3发送的消息已经是更改后的消息,而并非最开始的消息。
package com.copy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestCopy { public static void main(String[] args) { //(1)提高读取效率,从数据源 BufferedInputStream bis=null; //(2)提高写入效率,写到目的地 BufferedOutputStream bos=null; try { bis = new BufferedInputStream(new FileInputStream(srcFile)); bos = new BufferedOutputStream(new FileOutputStream(targetFile)); //(3)边读边写 byte []buf = new byte[1024]; //中转站 int len=0; //用于存储读到的字节的个数 while((len=bis.read(buf))!=-1) { bos.write(buf,0,len); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //(4)关闭 if(bos!=null) { bos.close(); } if(bis!=null) { bis.close(); } } } }
问题一:
问题二:
没有提示报错,加try catch
老师用的这个是中文版的api吗?这个在资料里面有么,好像没找到呢
String name1 = igeneric1.getName("itbz");
老师,此处得快捷键是什么, igeneric1.getName("itbz");写入前面后,如何快捷键调取钱买你得 String name1 =
下面的代码目的是通过同步方法实现卖票,可是不同步,请老师指导是哪里出了问题,感谢感谢!
/** * 使用同步方法实现卖票 */ class SalesThread2 implements Runnable{ private int ticket = 5; @Override public void run() { for (int i = 1; i < 10; i++) { this.saleTicket(); } System.out.println("票卖完了"); } private synchronized void saleTicket(){ if (ticket>0){ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"卖出了第"+(ticket--)+"张票"); } } } /** * 线程同步测试类,可以分别使用同步锁和同步方法两种方式实现 */ public class ThreadTes4 { public static void main(String[] args) { //test1(); test2(); } /** * 使用同步锁实现卖票 */ public static void test1(){ System.out.println("使用同步锁实现卖票"); SalesThread1 s1 = new SalesThread1(); SalesThread1 s2 = new SalesThread1(); SalesThread1 s3 = new SalesThread1(); Thread t1 = new Thread(s1, "窗口A"); Thread t2 = new Thread(s1, "窗口B"); Thread t3 = new Thread(s1, "窗口C"); t1.start(); t2.start(); t3.start(); } /** * 使用同步方法实现卖票 */ public static void test2(){ System.out.println("使用同步方法实现卖票"); SalesThread2 s1 = new SalesThread2(); SalesThread2 s2 = new SalesThread2(); SalesThread2 s3 = new SalesThread2(); Thread t1 = new Thread(s1, "窗口A"); Thread t2 = new Thread(s2, "窗口B"); Thread t3 = new Thread(s3, "窗口C"); t1.start(); t2.start(); t3.start(); } }
运行结果截图:
老师您好,为什么要加这句话?是在网络通信必须加这句话么?
老师,这里A联合B的代码没看懂(绿色部分),为什么不能像main联合A一样new个A出来,把A的引用t给main(红色部分),把B new出来给A呢?
这里 调用stop();方法使进程停止了,我要是想让主进程停止 stop();方法怎么写?
//服务端代码 import java.io.IOException; import java.io.PrintWriter; import java.net.Socket; public class BasicSocketClient { public static void main(String[] args) { Socket socket=null; PrintWriter pw=null; try { //创建Socket对象,两个参数:1.服务端的IP地址,2.服务端所监听的端口 socket =new Socket("127.0.0.1",8888); pw.println("服务端 你好"); pw.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if (pw!=null){ pw.close(); } if (socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } //客户端代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; public class BasicSocketServer { public static void main(String[] args) { Socket socket=null; BufferedReader br=null; try { ServerSocket serverSocket=new ServerSocket(8888); System.out.println("服务器启动等待监听。。"); //启动服务器监听 socket= serverSocket.accept(); //读取客户端发送的消息 br= new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(br.readLine()); } catch (IOException e) { e.printStackTrace(); }finally { if (br!=null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if (socket!=null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 为啥我的结果报错,服务端输出null
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637