package com; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; //创建点对点的聊天应用 //创建服务端 /** * 发送消息线程 */ class Send extends Thread{ private Socket socket; public Send(Socket socket){ this.socket = socket; } public Send(Socket socket, Scanner scanner) { } @Override public void run() { this.sendMsg(); } /** * 发送消息 */ private void sendMsg(){ //创建Scanner对象 try(Scanner scanner = new Scanner(System.in); //创建向对方输出消息的流对象 PrintWriter pw = new PrintWriter(this.socket.getOutputStream());){ while(true){ String msg = scanner.nextLine(); pw.println(msg); pw.flush(); } }catch(Exception e){ e.printStackTrace(); } } } /** * 接收消息的线程 */ class Receive extends Thread{ private Socket socket; public Receive(Socket socket){ this.socket = socket; } @Override public void run() { this.receiveMsg(); } /** * 用于接收对方消息的方法 */ private void receiveMsg(){ //创建用于接收对方发送消息的流对象 try(BufferedReader br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));){ while(true){ String msg = br.readLine(); System.out.println("他说:"+msg); } }catch(Exception e){ e.printStackTrace(); } } } public class ChatSocketServer { public static void main(String[] args) { try(ServerSocket serverSocket = new ServerSocket(8888);){ System.out.println("服务端启动,等待连接。。。。。"); Socket socket = serverSocket.accept(); System.out.println("连接成功!"); new Send(socket).start(); new Receive(socket).start(); }catch(Exception e){ e.printStackTrace(); } } }
老师为啥我这边连接成功以后会显示我上面这个代码的36,27行有空指针异常呢,不知道怎么处理
老师我这边没有连开两个启动程序的东西
我重写了toStirng,返回的是空,可是foreach自动调用返回的不是空呀,调用的还是之前的toString方法,这是为啥呀
Set<Student> set = new TreeSet<>(new StudentComparator);
这一步TreeSet传入StudentComparator怎么理解呢
直接输出clazz为啥调用toString方法,什么时候自动调用toString方法?
Iterator<String> iterator = KeySet.iterator(); while (iterator.hasNext()) { String key = iterator.next(); System.out.println(key + "-------------------" + map.get(key)); } System.out.println("------------");
老师 这里的这行代码
String key = iterator.next();
是指赋值iterator的下一个元素
给字符串Key
可以这么理解吗
视频中的重写equals方法是这样的
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Users users = (Users) o; return userage == users.userage && Objects.equals(username, users.username); }
视频配套的文档是下面这样的
@Override 14 public boolean equals(Object o) { 15 if (this == o) return true; 16 if (o == null || getClass() != o.getClass()) return false; 17 18 Users users = (Users) o; 19 20 if (userage != users.userage) return false; 21 return username != null ? username.equals(users.username) : users.username == null; 22 }
最后两行是一样的吗
import java.util.Set; import java.util.TreeSet; public class HelloWorld { public static void main(String []args) { Set<Integer> set = new TreeSet<>(); while(true){ int i = (int)(Math.random()*10+1); set.add(i); if(set.size()==10){ break; } } for(Integer abc:set){ System.out.print(abc+"\t"); } } }
那为什么用TreeSet也是从小到大。。。间断听课知识点可能都忘了
comparator,comparable,compareTo三个区别是什么
遍历的时候为什么是Student不是String,是要根据遍历的数组类型来决定吗?
老师,如何判断什么时候用字节流,什么时候用字符流
boolean gz = list.remove("gz"); System.out.println();
老师能讲一下例如这里的
list.remove("gz");
为什么有返回值啊 (前面基础有点不扎实),
能详细解释一下流程是怎么回事不
老师,我不明白,为什么前面是接口阿?不是 TestIGeneric01<String> t1 = new TestIGeneric01(); 我们不是应该要new 一个类吗?为啥前面的数据类型是接口,而不是类?
老师我这个符号错误 是在哪里有问题啊。。。
老师,按照在视频当中,我输入的地址是:F:/BZ/a.txt
当找到文件复制的路径是:F:\BZ\a.txt ,这两个写的时候相同嘛?不同的话有什么区别尼?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2026百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637