老师,为什么前面是Socket,而后面是ServerSocket呢
老师,这两句代码是什么意思呢,尤其是第一句,没有实例化为什么就能直接调用方法了呢
老师,这里取馒头里面的notify为什么是唤醒放馒头的线程呢;这里的index--不应该放在最后吗,现在不是提前减了吗;这里面为什么都要加this啊
老师,请问一下这里的static是有什么作用呢
老师,这里直接return this.size == 0; 是返回的 判断this.size是否等于0 的结果的意思吗?
老师这个Compartor接口中不是挺多方法吗 OrderByName类只实现他的一个方法怎么不会报错啊
老师,我把程序锁写在这也可以实现程序互斥,请问这样是可以的吗
老师请问下最后两个线程优先级是怎么确定的 为什么不是开电脑的线程跟写代码线程同时启动 怎么保证开电脑的线程在敲代码之前呢
,老师,这里面写InterruptedException和Excepyion有什么区别呢
老师,为什么只用关闭DataOutputStream,而不用关闭BufferOutputStream和FileOutputStream?
package fang.stu.sxt; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 服务端 * * */ public class UdpTest01 { public static void main(String[] args) { DatagramSocket ds=null; try { //创建,服务的的监听对象; ds=new DatagramSocket(9999); //创建缓存区; byte[] bt=new byte[1024]; //创建数据报包; DatagramPacket dap=new DatagramPacket(bt, bt.length); //接收数据 System.out.println("服务端启动,准备接收数据"); ds.receive(dap); //将字节数组转换为字符串接收; String str=new String(dap.getData(),0, dap.getLength()); } catch (Exception e) { e.printStackTrace(); } finally { //关闭这个监听的对象; if (ds!=null){ ds.close(); } } } } package fang.stu.sxt; import java.io.IOException; import java.net.*; /*** * * 客户端 */ public class UdpClient01 { public static void main(String[] args) { DatagramSocket ds=null; try { //将数据类型转换为字节数组 byte[] b="王八蛋".getBytes(); //创建数据报包 DatagramPacket dp=new DatagramPacket(b,b.length, new InetSocketAddress("192.168.44.1",9999)); //创建客户端的监听对象 ds=new DatagramSocket(8088); //开始发送数据 System.out.println("客户端准备发送数据"); ds.send(dp); } catch (Exception e) { e.printStackTrace(); }finally { if (ds!=null){ ds.close(); } } } }
这个和老师讲的基本一样,都能运行,就是没有实现数据的发送
有一个疑问,目前这个项目是在项目初期直接给出了这个项目所需要的类,但是没有讲解这些类是怎么思考设计得来的,请问下,这个可以具体说一下在类的设计中,都做了什么分析和思考?
回答楼上问题,同时记录一下个人理解,无需回答
DataOutputStream 输出的为什么是乱码?明明字符也是由字节构成的;FileOutputStream同为字节流,输出就不乱码。
以字节的方式输出字符串,不会乱码。将乱码文件以utf-8的格式打开,会发现字符串部分不是乱码。
乱码的原因在于,输出其他类型时如int i = 1; 时,输出的是1对应的二进制字节,而不是'1',这样的二进制串不符合utf-8编码具有的二进制规律,故windows无法获取文件编码,以默认编码(中文系统下多为GBK)将文件打开,所以乱码。
即使全是写入字符串,以utf-8格式打开,每条字符串前方还是存在一些乱码。推测这些字节是供DateInputStream读取条目时的分隔符。
老师讲的是不是有点问题,我看了一下构造函数
public PrintWriter (Writer out) { this(out, false); } public PrintWriter(Writer out, boolean autoFlush) { super(out); this.out = out; this.autoFlush = autoFlush; }
不指定自动刷新时,PrintWriter是false,不会自动刷新的,但老师直接用的第一个构造函数,然后就说不需要flush了(课件上也这样写)。结果不出错是因为close时刷新了缓冲区。
代码:
package com.wonderx.collection; import java.util.Stack; public class TestStack { public static void main(String[] args) { //实例化栈容器 Stack<String> stack = new Stack<>(); //将元素添加到栈容器中 stack.push("a"); stack.push("b"); stack.push("c"); stack.add("add方式添加元素"); //测试这个stack容器是否为空 System.out.println(stack.empty()); //获取栈容器中顶部的元素不删除 String pek1 = stack.peek(); System.out.println(pek1); //返回元素在栈容器中的位置 System.out.println(stack.search("a")); System.out.println(stack.search("add方式添加元素")); //获取栈容器中顶部的元素并把这个元素从栈中删除 String p1 = stack.pop(); System.out.println(p1); String p2 = stack.pop(); System.out.println(p2); String p3 = stack.pop(); System.out.println(p3); //测试这个stack容器是否为空 System.out.println(stack.empty()); } }
运行结果:
问题:我测试在Stack容器中用add也能把元素添加到容器顶部,但是想知道在Stack容器中用push方式添加和用add添加元素有什么区别吗?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637