红线部分的知识点是啥来着 可以解释一下吗
老师有没有和视频老师一样API帮助文档下载地址啊,麻烦发一下地址
为啥这里输出是abcdef啊
老师我想问问 我这里报错是在哪里啊 我排查了下 没找出原因
package com; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /*发送消息线程*/ /** * 发送消息线程 */ class Send1 extends Thread{ private Socket socket; private Scanner scanner; public Send1(Socket socket,Scanner scanner){ this.socket = socket; this.scanner = scanner; } @Override public void run() { this.sendMsg(); } /** * 发送消息 */ private void sendMsg(){ //创建向对方输出消息的流对象 try(PrintWriter pw = new PrintWriter(this.socket.getOutputStream())){ while(true){ String msg = scanner.nextLine(); pw.println(msg); pw.flush(); } }catch(Exception e){ e.printStackTrace(); } } } /** * 接收消息的线程 */ class Receive1 extends Thread{ private Socket socket; public Receive1(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 GoodTCP { public static void main(String[] args) { Scanner scanner = null; ServerSocket serverSocket = null; Socket socket = null; try{ scanner = new Scanner(System.in); System.out.println("请输入:server,<port> 或者:<ip>,<port>"); String str = scanner.nextLine(); String[] arr = str.split(","); if("server".equals(arr[0])){ //启动服务端 System.out.println("TCP Server Listen at "+arr[1]+" ....."); serverSocket = new ServerSocket(Integer.parseInt(arr[1])); socket = serverSocket.accept(); System.out.println("连接成功!"); }else{ //启动客户端 socket = new Socket(arr[0],Integer.parseInt(arr[1])); System.out.println("连接成功!"); } //启动发送消息的线程 new Send(socket,scanner).start(); //启动接收消息的线程 new Receive(socket).start(); }catch(Exception e){ e.printStackTrace(); }finally{ if(serverSocket != null){ try { serverSocket.close(); }catch (IOException e){ e.printStackTrace(); } } } } }
老师为什么在我第二次运行以后,在里面输入ip地址跟端口以为什么会报空指针异常啊,而且这个空指针异常不是这个程序里面的事这个程序里面的空指针异常
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() { /* String str = null; if (str!=null){ System.out.println(str.charAt(0)); }*/ 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(8080);){ System.out.println("服务端启动,等待连接。。。。。"); Socket socket = serverSocket.accept(); System.out.println("连接成功!"); new Send(socket).start(); new Receive(socket).start(); }catch(Exception e){ e.printStackTrace(); } } }
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,是要根据遍历的数组类型来决定吗?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637