- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 反射案例
需求:不改变任何类的任何代码。可以创建任意类的对象Persion类:public void eat(){ System.out.println("eat fanfan"); }pro.properties:className=com.student.refect.PersionmethodName=eatDemo4Refect类:public class Demo4Refect { public static void main(String[] args)
2020-06-12 09:12:25 103
原创 反射
反射:将类的各个组成部分封装为其他对象,这就是反射机制好处:1.可以在程序运行过程中,操作这些对象2.可以解耦,提高程序的可扩展性.Class对象功能:获取功能:1.获取成员变量们Field[] getFields();Field getField(String name)Field[] getDeclaredFields()Field getDeclaredField(String name)setAccessible(true);//暴力反射public class Persi
2020-06-12 08:22:02 107
原创 Stream流中的常用方法
1._forEach用来遍历流中的数据public class Demo1ForEach { public static void main(String[] args) { //获取Stream流 Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六"); //使用Stream流中的forEach方法进行遍历 stream.forEach((name) ->
2020-06-09 15:29:39 405
原创 Stream流式思想概述
把集合中第一个元素为张,并且只有3个长度的值遍历出来原始写法:public class Demo1Stream { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张三丰"); list.add("赵敏"); list.add("周芷若"); list.add("
2020-06-09 11:50:33 131
原创 函数式接口
函数式接口:有且只有一个抽象方法的接口,称之为函数式接口当然接口中可以包含其他方法:(默认方法,私有,静态)@FunctionalInterface作用:检测一个接口是否是函数式接口@FunctionalInterfacepublic interface FunctionInterface { public abstract void method();}public class FunctionInterfaceImpl implements FunctionInterface
2020-06-09 11:14:16 138
原创 TCP通信综合案例-文件上传
TCPClient:package com.student.TCP;import java.io.*;import java.net.Socket;public class TCPClient { public static void main(String[] args) throws IOException { //1.创建一个本地字节流FileinputStream对象,构造方法中绑定要读取的数据源 FileInputStream fis = ne
2020-06-03 09:35:38 133
原创 TCP通信的概述
TCP通信的基本步骤:public class TCPClient { public static void main(String[] args) throws IOException { //创建一个客户端对象socket,构造方法绑定服务器的IP地址和端口号 Socket socket = new Socket("127.0.0.1", 8888); //使用socket方法中的getOutputStream()获取网络字节输出流OutputStream对象 OutputStre.
2020-06-01 17:54:00 192
原创 序列化流
ObjectOutputStream 序列化:将java对象的原始数据类型写入到文件,实现对象的持久储存,使用WirteObject();ObjectInputStream 反序列化: 将之前使用ObjectOutputStream序列坏的原始数据恢复为对象,使用ReadObject();/* 序列化和反序列化的时候回抛出NotSerializableException没有序列化异常 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序
2020-06-01 14:57:19 73
原创 转换流
转换流:InputStreamReader:字节流通向字符流的桥梁他使用charset读取字节并将其解码为字符。OutputStreamWrite:是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节(编码)public class CreateInputSteamReader { public static void main(String[] args) throws IOException { //创建InputStreamReader对象,构造方法中传递字
2020-05-26 17:18:15 77
原创 Buffered缓冲流
字节缓冲流:BufferedInputStream,BufferedInputStream字符缓冲流:BufferedReader,BufferedWrite案例:对文本内容进行排序1.aaaaa8.ooooo5.wwwww9.xxxxx4.mmmmm7.eeeee3.ggggg6.yyyyy2.qqqqq实现:public static void main(String[] args) throws IOException { //创建一个HashMap集合对象,可以存储
2020-05-26 15:57:54 395
原创 Properties
Properties的方法:setProperty:把值set到properties集合中store:properties的store方法,把集合中的临时数据持久化到硬盘中load:properties的load方法,把硬盘中保存的文件(键值对),读取到集合中使用public class CreateProperties { public static void main(String[] args) throws IOException { C(); I(); } public
2020-05-26 11:29:07 91
原创 JVM
程序计数器:它可以看做是当前线程字节码的行号指示器Java虚拟机栈:java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于储存局部变量表、操作数栈、动态链接、方法出口等信息本地方法栈:与虚拟机栈发挥的作用非常相似,区别在于虚拟机栈为虚拟机执行java方法(也就是字节码)服务,本地方法栈则为虚拟机使用到的本地(Native)方法服务Java堆:Java(Java Heap)...
2020-05-18 15:10:06 75
原创 对象内存图
压栈:谁在后面进入栈中,就会把之前进入栈中的数据压到脚下。先进后出一个对象的内存图方法区最先有数据,方法区保存的.class相关数据,main方法想运行时需要先进栈(压栈),进来后创建了一个phone对象 对象被赋上地址值0x666对应堆的地址值0x666,堆中保存new出来的对象(凡是new出来的东西都在堆当中),phone对象中有成员变量进入堆中赋上默认值,成员方法进入堆,成员方法被赋上...
2020-05-18 15:08:56 163
原创 Lambda表达式
Lambda表达式的标准格式:由三部分组成:a.一个参数b.一个箭头c.一段代码格式:(参数列表) -> {一些重写的方法代码}解释说明格式:():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分隔->:传递的意思,把参数传递给方法体{}{}:重写接口的抽象方法的方法体new Thread(() -> System.out.println("kaiqi xiancheng")) { }.start();...
2020-05-18 15:07:04 63
原创 线程池
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).start();那你就out太多了,new Thread的弊端如下:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占
2020-05-18 15:05:17 161
原创 线程通信等待和唤醒机制
等待和唤醒机制:这是多个线程间的一种写作机制,一个线程进行了规定操作后,进入等待状态(wait()),等待其他线程执行完他们的指定代码过后再将其唤醒(notify());在有多个线程进行等待时,如果需要,可以使用notifyAll()来唤醒所有的等待线程.wait/notify就是线程的一种协作机制.等待与唤醒需求:包子铺线程生产包子,吃货线程消费包子,当包子没有时,吃货线程等待;包子铺生产包子,并通知吃货线程,包子铺线程等待,吃货线程吃包子,吃完包子后,通知包子铺再生产包子包子类:public
2020-05-17 11:12:55 175
原创 java抛出NoSuchElementException异常
出现这个异常的原因之一是因为线程访问越界比如以下这种情况很明显是因为Iterator类中的next()方法使用了多次使用迭代器的时候注意next()方法在同一循环中不能出现俩次改正之后:
2020-05-12 11:57:11 502
NC开发文档
2018-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人