![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA 教程
文章平均质量分 89
dong24k
这个作者很懒,什么都没留下…
展开
-
JAVA 多线程基础知识
基础知识进程是代码在数据集合上的一次运动活动,是系统进行资源分配和调度的基本单位,线程则是进程的一个执行路径,一个进程种至少有一个线程,进程中的多个线程共享进程的资源。操作系统在分配资源的时候是把资源分配给进程的,但是CPU资源比较的特殊,它是被分配到线程的,因为真正要占用CPU运行的是线程,所以也就是说线程是CPU分配的基本单位。一个进程种有多个线程,多个线程共享进程的堆和方法区资源,但是每个线程都有自己的程序计数器和栈区域。程序计数器是一块内存区域,用来记录线程当前要执行的指令地址。那么为何要将原创 2021-01-11 09:55:42 · 199 阅读 · 0 评论 -
JAVA 多线程讲解
创建多线程的方法创建多线程程序的第一种方式:创建Thread类的子类 java.lang.Thread类:是描述线程的类,我们想要实现多线程的程序,就必须继承Thread类实现步骤: 1.创建一个Thread类的子类 2.在Thread类的子类种重写Thread类中的run方法,设置线程任务(开启线程要做什么) 3.创建Thread类的子类对象 4.调用Thread类中的方法start方法,开启新的线程,执行线程的run()方法。 void star原创 2020-12-30 10:13:33 · 98 阅读 · 0 评论 -
JAVA 一个简单的服务器和客户机程序
这个例子将以最简单的方式运用套接字对服务器和客户机进行操作。服务器的全部工作就是等候建立一个来连接,然后用那个连接产生的Socket创建一个InputSteam以及一个OutputStream。在此之后,它从InputSteam读入的所有东西都会反馈给OutputStream,直接到接收到行中止为,最后关闭连接。客户机连接服务器,然后创建一个OutputStream。文本通过OutputStream发送。客户机也会创建一个InputStream,用它收听服务器说些什么。服务器和客户机都使用同样的端口号,原创 2020-12-28 16:51:47 · 422 阅读 · 0 评论 -
JAVA List属性方法介绍
List(接口)顺序是List最重要的特性;它可以保证元素是按照规定的顺序进行排列的,List为Collection添加了大量方法,以便我们在List中部插入或者删除(只推荐对LinkedList这样做)。List也会生成一个ListIterator(列表反复器),利用它可在一个列表里朝着两个方向遍历,同时插入和删除位于列表中部的元素(同样的只推荐在LinkedList这样做)。ArrayList由一个数组后推得到的List。作为一个常规用途的对象容器使用,用于替换原先的Vector。允许我们快速访问元素原创 2020-12-14 10:21:18 · 808 阅读 · 0 评论 -
JAVA Harshtable创建“关键”类——散列码与对象地址的差异
import java.util.Hashtable;class Groundhog{ int ghNumber; Groundhog(int n){ghNumber=n;}// public String toString(){// return Integer.toString(ghNumber);// }}class Prediction{ boolean shadow=Math.random()>0.5; public S原创 2020-12-01 09:42:41 · 89 阅读 · 0 评论 -
JAVA Hashtable疑难
import java.util.*;class Counter{ int i=1; public String toString(){ return Integer.toString(i); }}public class Statistics { public static void main(String[] args) { Hashtable ht=new Hashtable(); for (int i=0;i&l原创 2020-11-30 21:08:51 · 59 阅读 · 0 评论 -
JAVA Stack详解
Stack有时候也成为“先入后出”集合,换而言之,我们在堆栈里最后“压入”的东西将是以后第一个“弹出”的。和其他所有的JAVA集合一样,我们压入和弹出的都是“对象”,所以必须对自己弹出的东西进行“造型”。一种很少见的做法是拒绝使用Vector作为一个Stack的基本构成元素,而是从Vector里“继承”一个Stack。这样一来,他就拥有一个Vector的所有特征及行为,另外加上一些额外的Stack行为。很难判断出设计者是明确想这样做还是属于一种固有的设计。import java.util.Stack;原创 2020-11-30 09:06:45 · 249 阅读 · 0 评论 -
JAVA 程序崩溃的解决
Java标准集合中包含了toString()方法,所以它能生成自己的String表达式,包括它们容纳的对象,例如在Vector中,toString()会在Vector的各个元素中步进和遍历,并为每个元素调用toString()。假定我们现在想打印自己类的地址。看起来简单的引用this即可。import java.util.Vector;public class CrashJava { public String toString(){ return "CrashJava add原创 2020-11-29 09:49:30 · 1504 阅读 · 0 评论 -
JAVA 如何保证数组里面的值不重复
public class IceCream { static String[] flav={ "Chocolate", "Strawberry", "Vanilla Fudge Swirl", "Mint Chip", "Mocha Almond Fudge", "Rum Raisin", "Praline Cream", "Mud Pie" }; static String[] flav原创 2020-11-26 22:10:26 · 1271 阅读 · 0 评论 -
JAVA 构建器内部的多形性方法的行为
abstract class Glyph{ abstract void draw(); Glyph(){ System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()"); }}class RoundGlyph extends Glyph{ int radius=1; RoundGlyph(原创 2020-11-25 20:22:26 · 95 阅读 · 0 评论 -
JAVA 为什么要使用内部类
class EventSet{ private Event[] events=new Event[100]; private int index=0; private int next=0; public void add(Event e){ if (index >= events.length) return; events[index++]=e; } public Event getNext()原创 2020-11-24 09:40:24 · 307 阅读 · 0 评论 -
JAVA 内部类如何让链接到外部类
迄今为止,我们呢见到的内部类好像仅仅只是一种名字隐藏以及代码组织方案。但是我们还忽略了另外一个重要的事实,创建自己的内部的时候,那个类也拥有指向封装对象的一个链接,所以他们能访问那个封装对象的成员——而不需要任何的资格限制。除此之外,内部类有用对封装类所有元素的访问权限。interface Selector{ boolean end(); Object current(); void next();}public class Sequence { private O原创 2020-11-22 20:25:35 · 253 阅读 · 0 评论 -
JAVA 内部类和上溯造型
迄今为止,内部类看起来仍然没有什么特别的地方。毕竟,用它实现隐藏显得有些小题大作。Java已经有一个非常优秀的隐藏机制----只允许类成为“友好的”(只在一个包内可见),而不是把它创建成一个内部类。然而,当我们准备上溯造型到一个基础类(特别是一个接口的时候),内部类就开始发挥其关键作用(从用于实现的对象生成一个接口句柄具有于上溯造型至一个基础类相同的效果)。这是由于内部类随后可完全进入不可见或者不可用的状态—对于人个人都是如此。所以我们可以方便的隐藏实施细节。我们得到的全部回报就是基础类或者接口的句柄,而且原创 2020-11-22 18:58:10 · 143 阅读 · 0 评论 -
JAVA 初始化接口中的字段
接口中定义的字段会自动具有static和final属性。他们不能是“空白final”,但是可以初始化为非常数表达式。interface RandVal{ int rint=(int)(Math.random()*10); long rlong=(long)(Math.random()*10); float rfloat=(float)(Math.random()*10); double rdouble=Math.random()*10;}由于字段是static的,所原创 2020-11-19 22:03:43 · 312 阅读 · 0 评论 -
JAVA 覆盖与过载
package com.apple;class NoteX{ public static final int MIDDLE_C=0,C_SHARP=1,C_FLAT=2;}class InstrumentX{ public void play(int NoteX){ System.out.println("InstrumentX.paly()"); }}class WindX extends InstrumentX{ public vo原创 2020-11-17 21:28:17 · 266 阅读 · 0 评论 -
JAVA 多形性
package com.apple;class Instrument3{ public void play(){ System.out.println("Instrument3.play()"); } public String what(){ return "Instrument3"; } public void adjust(){}}class Wind3 extends Instrument3{ public v原创 2020-11-17 20:26:21 · 126 阅读 · 0 评论 -
JAVA 继承初始化
class Insect{ int i=9; int j; Insect(){ prt("i="+i+", j="+j); j=39; } static int x1= prt("static Insect.x1 initialized"); static int prt(String s){ System.out.println(s); return 47; }原创 2020-11-14 21:36:44 · 179 阅读 · 1 评论 -
JAVA 接口与实现
我们通常认为访问控制是“隐藏实施细节”的一种方式。将数据和方法封装到类里面之后,可生成一种数据类型,它具有自己的特性与行为,有自己的构造方法和构造对象。public class SimpleConstructor { public static void main(String[] args){ for (int i=0;i<10;i++) new Rock(); }但是我们需要对访问的那个数据类型加上限制,有两个重要原因:1.规定使用者原创 2020-11-13 19:03:16 · 94 阅读 · 0 评论 -
JAVA 编译流程
为JAVA创建一个源码文件的时候,它通常叫做一个“编译单元”。每个编译单元都必须有一个以.java结尾的名字。而且在编译单元的内部,可以有一个public类,它必须拥有与文件相同的名字,否则编译器会发生报错。而且每个编译单元的内部都只能有一个public类,但是编译单元剩下的类可在那个包外面的隐藏,因为他们并非public,而且他们由用于主public类的“支撑”类组成。public class SimpleConstructor{}编译一个.java文件时,会生成一个名字完全相同的输出文件,但是对原创 2020-11-12 21:42:14 · 113 阅读 · 0 评论 -
JAVA 数组
数组初始化的第二种形式提供了一种更为便捷的语法,可创建和调用方法,获得与C的“变量参数列表”。由于所有类最终都是从通用的根类Object中继承的,所以能创建一个方法,令其获得一个Object数组,package com.apple;class A { int i;}public class VarArgs { static void f(Object[] x){ for (int i=0;i<x.length;i++) System.out.pri原创 2020-11-12 19:46:21 · 73 阅读 · 0 评论