07 2019 档案
摘要:这里是两个lambda表达式 andThen
阅读全文
摘要:反转字符串
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:优化 再优化 参数的数据类型可以省略 大括号可以省略。 末尾的分号也可以省略 方法的调用 sort方法,第一个个参数是数组,第二个参数是Comparator的实现类 按照字符串的长度来排序的
阅读全文
摘要:Lambda 使用的前提 ,方法的参数必须是一个函数式的接口。 优化版:
阅读全文
摘要:定义接口 登记改为2 测试一下 日志登记改为1 以上就是Lambda的延迟执行的特点
阅读全文
摘要:Demo$1.class是我们调用的时候创建的匿名内部类 lambda的效率比匿名内部类要高 函数式编程 定义showLog的方法。日志级别等于1才输出message信息 传级别2没有任何输出 浪费
阅读全文
摘要:定义测试类。定义方法,参数是定义的接口。 接口实现类的方式 调用一个方法,参数是一个接口,可以传这个接口的实现类对象 匿名内部类的方式 Lambda 第一种实现类的方式,因为重写的方法里面没有输出 lambda的简化
阅读全文
摘要:没有参数,没有返回值的抽象方法 一个接口中是可以有多个抽象方法的,如果在这里在定义一个method2.这样里面有两个抽象方法就不是函数式接口了。 确保接口中就一个抽象方法的方式 定义接口的实现类,重写里面的抽象方法 重写了以后,方法上加了注解叫做@Override 复制上面的method2到下面改成
阅读全文
摘要:这三行代码是固定的在输出之前 浏览器再次访问这个页面。 图片没有显示出来 复制刚才的代码一份出来重命名 加个while循环。把代码都放进去。 然后在while里面开启一个线程。把读取的代码都放在线程里面。然后还需要用try catch捕获异常 启动这个类 再次请求。 再这里输出请求的路径 第一次请求
阅读全文
摘要:提供的文件。 把web文件夹复制到项目里面。 运行上面的代码代码。然后浏览器打开index.html的地址 请求信息的第一行就是html页面的地址
阅读全文
摘要:自定义文件命名 文件名称被写死了 服务器上传了一张图片,服务器就停止了 把服务器端的代码放在while循环里面 服务器也不用 关闭了。 上传完成后服务器端没有关闭 再来启动客户端,又上传一张投片。 多人同时上传提高效率 文件上传的代码 复制到现成的run方法里面 run方法里面没有声明抛出异常。所以
阅读全文
摘要:服务器端和客户端都没有停止下来 服务端和客户端的代码,用到了三个Read的地方 read方法会阻塞 程序为什么没有停止下来?是因为read方法这里阻塞了 客户端也读取不到服务器端的回写 所以也进入到阻塞的状态 验证是否阻塞了。在服务端的代码,循环前和循环后,分别输出一段话 客户端的代码 服务器端:
阅读全文
摘要:先启动服务器端 再启用客户端上传文件 服务器端和客户端都没有停止 服务器端,图片在外层。没在文件夹里面 先把服务器端停下来 服务器端代码路径,这里修改。 再次启动服务器端,再启动客户端。查看目录。文件复制过来了。
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:表示服务器的类是ServerSocket 启动服务器端 再启动客户端 客户端代码修改获取服务端会写的数据 先启动服务器端,再启动客户端 客户端打印: 服务器端读取:
阅读全文
摘要:因为没有服务器,所以会抛出异常
阅读全文
摘要:多个客户端都可以和服务端交互 每次交互,服务端和客户端都是一读一写。 服务器使用客户端的留和客户端交互
阅读全文
摘要:两个客户端都可以和服务器交互,
阅读全文
摘要:
阅读全文
摘要:2的32次方就是42亿个ipv4的地址
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:在一定的协议下实现网络编程
阅读全文
摘要:system.out就是打印流 System的源码里面out参数就是一个PrintStream类型的 例如路径写的是E盘,。没有e盘这个路径就会抛出异常 用println直接写入的就是97 这个方法可以输出任意类型的数据值
阅读全文
摘要:
阅读全文
摘要:序列化一遍 反序列化再来一遍 age的修饰符改为public 直接反序列化就会抛出异常 序列化的时候会给Person.class添加序列号,serialVersionUID,.反序列化需要对比这个serialVersionUID 修改了累以后会重新生成一个新的序列号 修改类的修饰符 反序列化没报错
阅读全文
摘要:不想被序列化的成员变量用 transient修饰 age加上static关键字 反序列化age就读取不到正确的值了
阅读全文
摘要:声明了IO异常,这里还是红色的 转换为Person对象
阅读全文
摘要:创建person对象。生成构造方法全参和无参。getter和setter 抛出异常:没有序列化异常 接口的源码 啥都没有。就起到一个标记的作用 用二进制存的
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:强转chart;类型 GBK
阅读全文
摘要:父类是Write 需要抛出异常 声明为它的父类IO异常也是可以的 不指定 默认就是utf-8格式的 两个汉字 6个字节 GBK格式 打开文件的位置用文本打开
阅读全文
摘要:FileReader源码的构造方法。底层使用FileInputStram读取 编码不一样占用的字节大小也不一样。GBK一个汉字占用 2个字节。 utf-8一个汉字占用三个字节 转换流InputStreamReader 写的OutputStreamWrite
阅读全文
摘要:IDEA默认的编码格式是UTF-8 新建一个txt文件。输入你好 ANSI就是系统默认编码。保存即可。 通过IDE打开是乱码的,因为默认打开的方式是UTF-8 转换为char类型 输出了乱码
阅读全文
摘要:
阅读全文
摘要:出师表,按照12345678进行排序 使用Map集合进行排序 把内容都写到一行里面去了
阅读全文
摘要:读取到的是第一行数据 读取多行数据 使用循环
阅读全文
摘要:使用newLine来换行 同样的效果 println的源码里面其实就用的就是newLine()
阅读全文
摘要:把之前文件复制的代码复制到这里 一个字节一个字节的读取,复制文件 byte数组的形式 缓冲流测试 数组缓冲
阅读全文
摘要:内容改成abc 来个数组缓冲
阅读全文
摘要:子类 继承父类,这些方法都可以使用 必须写上flush,刷新数据数据才能写入到文件内
阅读全文
摘要:一个字节一个字节的读取,先读取到a,a给到os操作系统。os再给JVM,。jVM再把a给java程序 读完a再读取b。这样一层层的返回,效率低下 一次读取,缓冲区数组返回来。
阅读全文
摘要:键值对文件,读取到集合中来使用 分隔符也可以用空格 读出来乱码
阅读全文
摘要:第一行是注释,第二行是时间,时间是自动加的 使用FileOutputStream。 写入中文会乱码
阅读全文
摘要:map下面的实现类叫做Hashtable Properties是唯一和IO流相结合的 讲解 代码
阅读全文
摘要:jdk7 jdk9
阅读全文
摘要:变量没有初始化的赋值 变量可能赋值会失败。设置fw为null。close报错 把close也用try catch捕获异常 修改写入w盘。实际盘符没有这个 上面异常是这里打印的 继续优化代码
阅读全文
摘要:追加写就是后面参数设置为true 加入换行符
阅读全文
摘要:从1开始写写三个字符 最后多了个bcd 写入字符串 字符串的一部分
阅读全文
摘要:flush之后,还可以继续使用流写文件
阅读全文
摘要:写完之后不刷新,则没有数据。数据只是写如到了内存缓冲区中 必须要调用flush方法,把数据刷新过去 close关闭的时候也会把数据刷新到文件中。这里把flush注释了也是可以的
阅读全文
摘要:
阅读全文
摘要:读取的文件有中文也有英文 强转为char类型 缓冲读取多个字符 使用string的构造方法转换为字符输出
阅读全文
摘要:
阅读全文
摘要:编码格式右下角显示是UTF-8 前三个字节是你,后三个字节是好。一个汉字占用了三个字节 读一个字节让编程char类型 文件里面后面加上abc abc没有问题 所以java提供字符流。字符流一次读取一个字符,不管你的字符是中文的还是英文的,是数字还是符号
阅读全文
摘要:谁用字节可以读取任何文件。 读取后再写入到D盘去。这就是一个文件的复制。 怎么由C盘到D盘。这里要借助流技术 需要创建两个流,一个读取一个写入 图片复制过来了。 看一下图片的字节数。whilte循环要执行78万多次 ,所以还是很慢的 提高效率 设置byte的变量,长度为1024 每次读取的有效个数,
阅读全文
摘要:参数带字节数组的 把字节数组转换为字符串 文件里面有ABCDE 再来读取一次 再来读取一次。读取的结果是ED 再来读取,-1到时输出了。但是还是把ED读取出来了。 原理 第一步创建流对象 第二部创建数组 第三步读取数据 jav程序找JVM。JVM找OS,OS调用他的方法来读取数据 第一次读取会读到A
阅读全文
摘要:原理解析 创建一个字节流,指向读取文件的第一个字节。 read找jvm,jvm找os。os去读取硬盘.,读取后指正向后移动一位
阅读全文
摘要:硬盘读取到内存 read值会读一个字节 a.txt里面a变成整数就是97 读取到末尾,返回-1 再读一次还是-1 读取的代码是重复的。可以使用循环去读取。while循环。 转行成char类型的数据 read会在读完当前这个字节,把指针指向下一个字节。所以这里必须用变量接收读取的数据 如果不用变量去接
阅读全文
摘要:inputStream
阅读全文
摘要:再执行一次。内容会追加在后面 换行 不同系统下的换行符号 每次都写上换行符号,在for循环里面,循环10次
阅读全文
摘要:一次写多个字节的方法 要在txt内显示100。49代表1 48 代表0 一次写多个字节 负数前两个组成一个中文。-65和-66 字节数组的一部分 写入字符串方法 当前用的编码格式是utf-8,utf-8中三个字节是一个中文。所以上面你好输出了6个字节 GBK中两个字节是一个汉字
阅读全文
摘要:原理 流对象指向这个文件a.txt 往文件中写数据,写的时候比较特殊 97转换成二进制是多少呢? 输入97然后选择二进制。转换后为 1100001 硬盘上实际存的是97的二进制 97查询阿斯克码表就是a
阅读全文
摘要:数据由内存写入到硬盘中 构造函数传的路径是一个相对路径。有异常需要捕获异常 释放资源 这三个方法,都有异常 IO异常是父类,所以这里只需要抛出IO异常就可以了。 运行程序。目录内多了个a.txt文件 大小是一个字节
阅读全文
摘要:都在IO包下 所有字节输出最顶层的父类 它是一个抽象类。abstract修饰的 一般这种类定义的都是所有字节流都可以使用公共的方法,
阅读全文
摘要:这里的视频就是字节的形式,为了看着方便转换成了MB。一个字节就是8个二进制 包括文本,都是以字节的形式存储的
阅读全文
摘要:
阅读全文
摘要:复制一份上一节的代码 匿名内部类的形式 FilenameFilter 只有一个Accept方法。这样我们就可以使用lambda表达式 lambda表达式的前提条件 参数类型和,返回的大括号 都可以省掉 FileFilter的lamb da方式 简化lambda最终只有一行代码
阅读全文
摘要:FileFilter 需要先定义接口的实现类。并重写过滤的方法 使用 并没有起作用 过滤器的原理 缺少了a.java和b.java 如果是文件夹,就返回true,那么就会返回到Files[]数组中。然后下面继续进行遍历。
阅读全文
摘要:复制上一节课的代码 这三种方式都可以获取到文件的名称 把目录的打印注释掉 如果把文件的后缀改成大写的JAVA 再获取就获取不到了 文件名或者路径 转换为小写的字符串 链式编程
阅读全文
摘要:递归所有的文件夹,并把文件都输出出来。 在最上面打印目录的名称
阅读全文
摘要:结束条件是乘到 当前数字等于1
阅读全文
摘要:输出6 1到100之间的和 求和的原理
阅读全文
摘要:a方法里面调用自己,但是没有停止的条件 方法没有停止的条件。 栈内存溢出的异常。 只有栈,没有堆内存 先执行main方法压栈执行 main方法里面调用a方法。a方法就会压栈 改成20000
阅读全文
摘要:遍历这个目录下的文件 遍历一个文件就会报错’ 不存在的路径,也会报空指针异常 遍历可以获取到隐藏的文件夹和文件。常见一个隐藏的文件和文件夹 ListFiles私有类型的数组
阅读全文
摘要:createNewFile() createNewFile抛出了异常 抛出了一个IO异常 所有我们调用方法的时候必须处理异常 throws这个异常 返回结果为true 最终创建好的文件 再次执行代码。文件已经存在就不会再去重复创建 相对路径 创建好的文件 路径写一个文件夹的路径 实际创建好的还是一个
阅读全文
摘要:exists true表示路径是存在的 不存在的路径 不存在的路径返回false 相对路径的文件的判断 ‘ 不存在的相对路径 isDirectory和isFile 路径是不存在的 用这个方法之前最好先判断一下这个路径是否是存在的 f2测试 结尾是文件夹结尾所以输出为文件夹 true 以文件结尾
阅读全文
摘要:获取的方法 GetAbsolutepath 传递一个相对路径进去,查看输出的结果 输出的还是绝对的路径 getPath 获取的就是构造方法中传递的路径,可以传递绝对路径也可以传递相对路径 实际上toString的方法嗲用的就是getPath方法 我们可以查看File类的toString的源码,看到调
阅读全文
摘要:学习一个类先学习构造方法和静态方法 重写了Object类的toString方法 文件夹结尾 相对路径 第二个构造方法 两个路径组装到了一起 加上双斜线 换成d盘 第三个构造 第一个参数是一个File对象
阅读全文
摘要:
阅读全文
摘要:四个静态方法 打印的是一个分号 我们在配置java的环境变量的时候,路径就是以分号分隔开的 windows重视分好。linux是冒号 输出反斜线 选中这两个和上面的是一样的 只不过返回的是char类型的 可以找到File的源码里面看到
阅读全文
摘要:
阅读全文
摘要:只有一行代码。大括号和分号都可以省略了。 参数类型可以省略 可以推到的都可以省略
阅读全文
摘要:定义接口和抽象方法 测试类 Lambda方式
阅读全文
摘要:新建Person类 name和age两个成员变量,重写toString的方法,有参构造,无参构造。getter和setter 前面减去后面 就是升序排列 排序后输出 Lambda的方式简化匿名内部类
阅读全文
摘要:lambda标准格式dingyi 定义厨子的接口 定义无参数无返回值的接口 Lambda
阅读全文
摘要:
阅读全文
摘要:需要转换编程思想,用这种函数式的编程思想 Lambda
阅读全文
摘要:简化代码:匿名内部类的方式 继续简化代码,在thread里面匿名内部类的方式 这个程序里面有很多冗余的代码, 使用匿名内部类简化了程序。 最重要的就是这条输出语句。目的就是谁用多线程把这条语句输出出来。什么匿名内部类,重写方法等都是多余的
阅读全文
摘要:函数式编程和面向对象的区别
阅读全文
摘要:JDK1.5之后提供的 Execituors生产线程池的工厂类 线程池的接口类:ExecutorService 1创建线程池的工厂类 创建类实现Runnable接口,重写里面的run方法 传递线程池任务,执行 线程池里一共就两个线程 销毁线程池 线程池销毁后 程序自动停止 线程池毁后再来执行线程任务
阅读全文
摘要:线程的底层原理 集合有很多种,线程池的集合用LinkedList最好
阅读全文
摘要:创建吃货类 测试类
阅读全文
摘要:创建包子类 包子铺 定义包子的成员变量,生成一个带包子参数的构造方法 继承Thread线程类。重写run方法。保证只有一个在执行,所以用到同步技术 wait要try catch 外层定义变量,标明生产包子的数量 生产好了包子进行唤醒 加上while循环
阅读全文
摘要:吃货线程 测试类
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:把上一节买包子的代码拿过来。并没有老板的的线程的代码 5秒后自动执行后续代码 再复制一份顾客的代码 区分为顾客1和2 nortify线程只能唤醒一个。 每次只能唤醒一个线程 两个线程都唤醒
阅读全文
摘要:创建匿名线程类,里面重写run方法 保证等待和唤醒线程只有一个在执行 这里的异常只能用try catch 不用用throws的方式,因为父类的run方法没有抛异常,所以之类也不能抛 顾客的线程写完了,调用start开始执行 写老板的线程 老板需要花5秒做包子,所以需要睡眠5秒。sleep有异常需要t
阅读全文
摘要:Waiting 等待唤醒,也叫作线程之前的通讯 一个线程等待,一个线程唤醒,形成线程之间的通讯
阅读全文
摘要:Thread中有个嵌套类 它描述了线程的状态 线程状态的图 Object类中的Wait方法和notify方法
阅读全文
摘要:jdk1.5之后出现的 lock接口的实现类 第一步骤创建lock对象,这里是多态的写法 代码放在try catch里面 无论程序是否有一场,最终都会解锁。
阅读全文
摘要:因为方法是静态的,所以变量也要是静态的。静态访问静态 同样可以保证线程的安全 静态方法的锁对象 这里代码块用this就报错。 使用Runnablec.class可以保证锁对象是唯一的
阅读全文
摘要:这里输出一下this对象 这里再打印run。看看和this是不是同一个对象 所以同步对象默认使用的对象就是当前线程对象。 把方法体的sunchrized注释。然后下面用方法体锁住this对象。如果能保证安全就说明this是唯一的 输出的结果 同样可以保持唯一
阅读全文
摘要:
阅读全文
摘要:同步代码块 解决了线程安全的问题。
阅读全文
摘要:解释一下线程安全问题产生的原理 三个线程t0 t1 t2 。加上t0抢到cpu的执行权 t0抢到了cpu的执行权。,但是走到if语句的地方。执行了sleep,就失去了执行权 假设t2抢到了执行权也来执行run方法 t2睡醒了 重复票的问题。三个线程同时执行到了 输出的这行代码 总结
阅读全文
摘要:多个线程共享票源 创建的是一个实现类,传到三个线程里面。这样可以保证票就100张。三个线程来进行卖票 出现了重复的问题 优化程序,让程序sleep10毫秒 ,增加出现重复的几率 出现了-1的票。不存在的票和重复的票都出现了 。
阅读全文
摘要:
阅读全文
摘要:调用start方法开启线程 实现Runnable接口的形式 之前是这么写的 这里是new 一个Runnable然后里面重写run方法 这里当然也可以用一个Runnable来接收 new thread传递实现类r,然后调用start类开启线程 简化接口的方式 直接在Thread的构造函数内new 一个
阅读全文
摘要:打印20遍hello world Thread的构造函数内传递不同的类实现不同的任务。实现了分离。
阅读全文
摘要:启动多线程的方式,是先创建PrimeRun然后做构造方法的函数传入Thread类 这是Thread的几个构造方法 s实现Runnable接口,重写run方法 一个main主线程,一个Thread0 线程 抢夺cpu的资源。 每次的执行结果都不太一样,随机性的执行结果。
阅读全文
摘要:使用sleep 参数是毫秒,1000就表示1秒。这个方法本身是有异常的 所以要把这个异常处理下,有两种方式,这里try catch 每隔1秒输出一次
阅读全文
摘要:Thread有个一个构造方法,传递的就是线程的name 第二种方式,带参数的构造方法 创建带参数的构造方法,里面把name值传递给父类。
阅读全文
摘要:获取当前线程的名称 创建多线程,新建一个MyThread的类继承Thread这个类,并重写里面的run方法 里面获取线程的名称 再创建一个线程 第二个线程名称叫做Thread-1 第三个线程就叫做 Thread-2. 线程的名称是从0网上一个个的加 currentThread获取当前执行的线程 输出
阅读全文
摘要:调用mt.start方法和调用run方法是有区别的 main方法会压栈执行,(红线自己画的) main方法内创建了MyThread对象,对象在堆内存中,堆内存有个地址例如:0x11 这里调用run方法,run方法也压栈 单线程:执行main线程,再执行run方法, 多线程是mt.start()方法,
阅读全文
摘要:多线程的运行 显示执行main方法开辟一条线程, 然后new了一个MyThread的线程,又开辟一条线程
阅读全文
摘要:创建多线程 创建类MyThread继承Thread类。重写里面的run方法 循环20次输出 每次执行的结果都不太一样。多个线程一起抢夺cpu的执行权,谁抢到就谁执行
阅读全文
摘要:创建一个Person类只有一个name成员变量。生成getter和setter,有参构造和无参构造 定义fun方法 创建两个人 分别调用fun方法 小强执行了20次后,。 旺财才执行20次 这样的程序叫做单线程程序。 线程和cpu有关系 jvm执行main方法,面访会先进去到栈内存。 0是不能除0的
阅读全文
摘要:线程调度:分时调度、抢占式调度
阅读全文
摘要:、 腾讯电脑关键就是一个多线程的程序 里面有很多的功能,病毒查杀、清理垃圾、电脑加速等 现成和cpu有关系,学现成之前,先来学一下cpu 每个现线程
阅读全文
摘要:由硬盘进入到内存中执行 进程就是进入到内存中的程序!
阅读全文
摘要:并发,相当于 一个人吃两个馒头,吃一口这个再吃一口另外一个。这里是cpu一会执行任务1,一会又执行任务2 并行,相当于两个人 吃两个馒头,各自吃各自的,这样速度就会快
阅读全文
摘要:编译时异常,抛出这个异常 try/catch的方式 出现问题。抛出异常了 但是还打印出了 注册成功。 加一个return 结束方法 让他继承运行期异常,RuntimeException 这里没有捕获异常也不报错了。
阅读全文
摘要:空指针异常的源码
阅读全文
摘要:子类重写父类方法不抛出异常 父类方法没有抛出异常,那么子类重写的时候也不能抛出异常。下面抛出了异常就报错了。 子类自己内部抛出异常也不行, 子类只能用 try catch来捕获异常
阅读全文
摘要:
阅读全文
摘要:数组没有索引3,所以会报错。越界异常 集合的索引越界 这两行代码都会抛出异常。多个try cattch,分别去处理。这样有后续代码是可以执行到的 一个try多个catch 数组越界用第一个处理,集合越界用第二个来处理。多个异常一次捕获,多个处理 数组先越界了 所以打印了数组越界的异常 把数组越界的代
阅读全文
摘要:异常代码的后面没有执行到 finally Alt+回车 路径没有问题可以正常读取到文件 让它出现异常
阅读全文
摘要:getMessage 让他出现异常 toString 直接打印e默认调用的就是toString的方法 printStatckTrace
阅读全文
摘要:捕获异常代码,后续代码还可以继续执行 下面方法是声明的方法,上面调用就会编译时异常。 这里我们可以使用try catch的方式 抛出异常,后续代码还会执行
阅读全文
摘要:这里抛出的异常在写代码编译的时候就报错了。这是为什么? 调用这个readFile的方法也会抛出编译时异常,也需要抛出 Alt+回车快捷键第一个选项。继续声明这个异常。 换个路径就会抛出异常了。 文件的后缀名不是.txt结尾的。FileNotFoundException 这也是一个编译时的异常。 方法
阅读全文
摘要:调用Objects.requireNonNull方法 重载的方法,传递错误的信息进去
阅读全文
摘要:空指针 就是运行期异常
阅读全文
摘要:索引改成3 数组的索引越界异常 分析异常如何产生的
阅读全文
摘要:日期转换的这里是有异常的。这里必须要对异常进行处理。 鼠标放上去 Alt+回车 这是第一种方式,把异常抛出去交给虚拟机来处理 一旦字符串有问题。 运行程序的时候,就会排除异常。 虚拟机处理就是中断程序,把异常打印在控制台 try/catch try/catch的好处,把异常处理之后,程序可以继续执行
阅读全文
摘要:Throwable是可抛出的意思。
阅读全文
摘要:对索引的的集合List进行打乱顺序,洗牌 发牌 排序 看牌
阅读全文
摘要:之前做的斗地主的版本,没有从小到大进行排序 一个存储牌的花色,一个存储牌的序号。 放牌的容器。使用Map 再创建一个集合进行洗牌。 调用shuffer方法洗牌。生成后就是随即的索引了。
阅读全文
摘要:行号的右边。点击就加上红色的原点 执行后程序停在断点的这一行代码 F8 Shift+F8从方法中出来。 F9跳到下一个断点。 终止程序 Ctrl+F2: 断点停留在第一行之后,F8进入下一行代码。 再点一下F8 进入下一行代码 F8再到下一行‘ 走到最后一行,控制台就会有输出。 循环的执行流程 fo
阅读全文
摘要:用了of后集合的长度不能再改变!!!!! set不允许有重复元素 所以会抛出异常 重复的数据删掉就不报错。 改变长度 同样会报错。 Map的key不允许有重复
阅读全文
摘要:
阅读全文
摘要:是最早期的双列集合 同步就表示是单线程 value也不允许为空
阅读全文
摘要:linked
阅读全文
摘要:自定义类型做key值。必须要重写hashCode和equals方法 创建pserson类 有name个age两个成员变量。重写toString方法 key有重复,会被新的value值替换掉。 key值北京是重复的 赵六替换掉了张三,因为Sting重写了HashCode方法,可以保证我们的key值不允
阅读全文
摘要:增强for
阅读全文
摘要:
阅读全文
摘要:键找值的方式 增强for 增强for的简化方式
阅读全文
摘要:这个方法比较特殊,它的返回值是V他也就是Vlaue get remove containsKey: put value没有重复的所以v1返回的是null key值有重复,所以会返回被替换的值,范冰冰1 、 说明里面重写了toString的方法 remove Map的数据类型,可以相同,也可以不同 r
阅读全文
摘要:常用的实现类HashMap 它的子类。LinkedHaspMap
阅读全文
摘要:map集合是双列集合 map有两个泛型。左边K也叫作键 右边V是value
阅读全文
摘要:第二个参数传递了一个匿名内部类。结果就出现了下面的代码 源码里面有Compare方法,对比两个参数 要重写比较的方法 对对象进行排序 创建学生类。对学生类进行排序 重写Person的ToString方便查看结果。 两个都叫做杨幂,但是一个是17岁 一个是18岁。 18岁和迪丽热巴相同。但是名字不同。
阅读全文
摘要:默认规则一般都是升序排序 再来创建一个字符串的数组 排序后,按照升序输出结果 自定义类型排序 创建一个Person类,getter和setter 有参构造和无参构造 重写toString的方法 传对象进去,编译报错。对Person类 进行排序,没有规则。 Integer和String都实现了接口Co
阅读全文
摘要:这是一个个的添加的方式 参数是个可变的元素。可以传递任意多的元素 shuffle打乱集合元素顺序
阅读全文
摘要:打印出来是一个数组的地址 打印数组的长度 只要调用了add方法就会创建一各长度为0的数组 传一个10过去。就输出了数组的长度为1 传两个数字 注意事项: 特殊写法
阅读全文
摘要:把www挪到最上面,第一个加入到哈希
阅读全文
摘要:想存储的元素不重复,就必须重写hashCode和equals这两个方法 新建一个Person类。添加姓名和年龄这两个成员变量。。get和set,有参和无参构造。 重点是重写了toString的方法 自己定义的类没有重写hashCode和euqals方法 输出p1和p2的hashCode 比较p1和p
阅读全文
摘要:set集合元素为什么不能重复 集合重写了toString的方法所以打印是里面的内容 往里面存了三次abc 哈希表,初始容量是16个 set集合存储字符串的时候比较特殊 横着是数组,竖着就是链表结构。跟着哈希值挂载 然后添加s2 存储“重地”这个元素 存储通话
阅读全文
摘要:特点就是查询速度快 jdk1.8以后,如果链表的长度超过了8位。就会把转成红黑树,也是为了提高查询的效率
阅读全文
摘要:没有重写就是十进制的整数,重写了想返回多少就是多少。 创建Person类,没有写继承关系,默认会继承Object类 打开Object这个类 找到HashCode这个方法。就这一行代码。甚至都没有方法体 返回的是十进制的整数 再新建一个p2这两个输出的结果不一样 Object类里面的toString方
阅读全文
摘要:特点:不允许有重复的记录,无序的集合 set不允许重复。接口中没有索引。所以方法和Collection中的方法是一样的,没有带索引的方法 因为Set的方法和Collection都是一样的。所以这里不再做研究 主要研究它里面的实现类 没有索引不能使用for循环,但是可以使用迭代器 1是重复的记录,所以
阅读全文
摘要:是jdk1.0开始的一个集合,了解一下就可以了。 同步的意味着单线程。同步意味着慢 遍历在jdk1.0还没有Interator遍历器。、它是通过elements Enumeration向量枚举。类似于最早起的迭代器 它里面一共有两个方法
阅读全文
摘要:链表实现,查询慢,增删快 addFirst 集合的开头添加 push等效于addFirst addLast getFirst和getLast clear 清空后 又输出 isEmpty 不为空才去获取里面的值 注释掉clear的语句,输出里面的内容 remove
阅读全文
摘要:数组查询快,增删慢。 不是同步的就是多线程的 ArrayList其实就是一个数组 这是add方法 它在添加元素的时候会创建新的数组,然后把元素复制过来。这就是为什么查询快,增删们的原因。 每次增加元素都要底层调用数组的复制方法。所以效率低
阅读全文
摘要:有序的,还包含索引,允许有重复的值 、 add 打印出来的不是地址,说明重写了toString的方法 remove方法 返回的是被移除的元素 set方法 get 索引越界异常 几种越界的异常
阅读全文
摘要:生活中的树和计算机中的树。计算机的树是倒着的
阅读全文
摘要:查询慢,增删快。 绿色代表一条链 红色是另外一条链 。查询是从头开始查所以慢。 在300和55之间添加一个元素
阅读全文
摘要:0x代表16进制的地址 arr通过首地址找到存储空间。
阅读全文
摘要:先进先出 队列 队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入, 而在表的另一端进行删除。 简单的说,采用该结构的集合,对元素的存取有如下的特点: 先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,小火车过山 洞,车
阅读全文
摘要:2.1 数据结构有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类 的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。 现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Goog
阅读全文
摘要:增强for循环的的快捷键 牌的数组就组装好了。这里输出看一下 把扑克加入到数组里面。然后输出最终生成的数组 洗牌 清晰后的顺序 发牌 i%3给三个玩家发牌,有三种情况。 每次发牌都是随机的
阅读全文
摘要:洗牌用到集合工具类。Collections里面有个shuffle的方法 完整的需求分析
阅读全文
摘要:泛型通配符是一个问号 也是代表不确定的意思 换成Object两个都报错了。 泛型是没有继承概念的,所以上面写Object就会报错。这里应问号 可以代表位置类型 it.next会自动用Object接收 泛型在定义的时候不能用问号!!!参数传递的时候可以用 泛型通配符的高级使用 直接复制例子的代码。做为
阅读全文
摘要:定义泛型接口 Scanner的接口 接口的实现类。实现这个接口,规定数据类型为String类型 ArrayList是List接口的实现类 再看下List接口的源码 泛型实现类也定义为泛型 重写泛型的方法,方法的参数也是I 测试,创建对象制定的是什么泛型,就是什么泛型
阅读全文
摘要:泛型方法 泛型也可以用在方法上 测试 调用的时候,可以传递多种数据类型 、 泛型的静态方法
阅读全文
摘要:创建一个类,添加一个name的属性,然后生成get和set 使用上面创建的类 使用泛型 所以我们取出来也是一个Object的类型 定义的时候规定的类型是Integer,所以这里setName设置的时候也必须是一个Integer类型的 字符串类型的泛型
阅读全文
摘要:用一个案例说明使用泛型和不是用泛型的区别 这里的ArrayList没写数据类型,不写就是默认Object 多态的弊端,不能使用子类特有的方法 向下转型,转换为String类型,才能使用length 不能把integer类型转换为String类型 使用泛型 泛型规定的是String类型的,所以,add
阅读全文
摘要:ArrayList的源码,。在定义的时候用到了E这个E就是一个未知类型 ArrayList里面的add方法,参数也是E 包括我们之前常用的get方法 返回值也是E 类型什么时候可以确定呢?创建集合对象的时候 泛型看做未知的数据类型,当我们不确定数据类型的时候就使用泛型
阅读全文
摘要:
阅读全文
摘要:collections实现了interable接口。实现了interable接口就可以使用Foreach int i是临时 变量
阅读全文
摘要:
阅读全文
摘要:迭代器的类型和collection一样。都是String类型的 判断集合内是不是有元素 取出第一个元素 多次next获取所有的值 没有元素,再去取就会抛出异常。 适应while for循环的格式了解一下就可以。
阅读全文
摘要:collection集合中是没有索引的,不能使用普通的循环来便利它。 也是在util的包中 先判断集合中有没有元素 有元素就取出来,用next方法 使用接口来接受一个实现类,这就是多态
阅读全文
摘要:Collection在java.util包下面 只学里面几个比较重要的,List和Set 一共7个共性方法 接口指向实现类,多态的形式。 输出这个结合打印出一个空的数组。说明它重写了toString的方法 add方法 一般不用去接收返回值,都返回是true,接收没有意义 对添加几个元素 remove
阅读全文
摘要:
阅读全文
摘要:integer里面有toString的方法,可以integer转换为String类型 String类里面有valueOf可以,把int转换为String类型 int加上空的字符串就是,字符串 字符串变为基本类型 异常数据 以上就是基本类型和字符串的相互转换。
阅读全文
摘要:ArrayList的add存的是Integer类型
阅读全文
摘要:java.lang的包中Integer 包装类的构造方法 静态方法 装箱 拆箱: 演示 构造方法装箱 打印出来是1 说明Integer重写了toString方法 方法过时 静态方法 如果传入的是个字符串a。那么就会抛出异常 拆箱:
阅读全文
摘要:只有这两个比较特殊
阅读全文
摘要:
阅读全文
摘要:StringBuilder的构造, 构造方法 输出结果为空: new StringBuilder("abc").var:后这个点var 直接会有变量来接收new出来的这个对象。 然后修改变量的名称就可以了。 成员方法 append可以添加很任意类型的数据 添加了很多种不同类型的数据
阅读全文
摘要:字符串不可变。字符串的缓冲区是可以变的 字符串Sting的底层,被final修饰的不可变的数组 a+b+c最终会产生5个字符串
阅读全文
摘要:复制数组
阅读全文
摘要:看到Calendar类里面有很多的静态的成员变量。参数field就是指的这些 get方法 返回当前的年份 月份是从0开始的 所以比当前月份少一个月。 一个月的第几天。 Calendar.Date和DAY_OF_MONTH是一样的 set方法 add方法 年增加2年 2088+2输出了 2090 月份
阅读全文
摘要:Calendar.getInstance()返回的就是Calendar的子类对象。GregorianCalendar 说明Calendar类重写了toSting的方法 时区亚洲的上海
阅读全文
摘要:Alt+回车
阅读全文