07 2022 档案
摘要:使用传统的方式,遍历集合,对集合中的数据进行过滤 /* 使用传统的方式,遍历集合,对集合中的数据进行过滤 */ public class Demo01List { public static void main(String[] args) { //创建一个List集合,存储姓名 List<Stri
阅读全文
摘要:常用的函数式接口-Function接口-默认方法-andThen /* Function接口中的默认方法andThen:用来进行组合操作 需求: 把String类型的"123",转换为Inteter类型,把转换后的结果加10 把增加之后的Integer类型的数据,转换为String类型 分析: 转换
阅读全文
摘要:常用的函数式接口-Predicate接口练习-集合信息筛选 /* 练习:集合信息筛选 数组当中有多条“姓名+性别”的信息如下, String[] array = { "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女" }; 请通过Predicate接口的拼装将符合要求的字符串
阅读全文
摘要:常用的函数式接口-Predicate接口-默认方法and /* 逻辑表达式:可以连接多个判断条件 &&:与运算符,有false则false ||:或运算符,有true则true !:非(取反)运算符:非真则假,非假则真 */ public class Predicate_and { /* 定义一个方
阅读全文
摘要:常用的函数式接口-Consumer接口练习-字符串拼接输出 /* 练习: 字符串数组当中存有多条信息,请按照格式“姓名:Xx。性别: Xx。”的格式将信息打印出来。 要求将打印姓名的动作作为第一个consumer接口的Lambda实例, 将打印性别的动作作为第二个consumer接口的Lambda实
阅读全文
摘要:常用的函数式接口-Consumer接口 /* java.util.function.Consumer<T>接口则正好与Supplier接口相反 它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定。 Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据
阅读全文
摘要:常用的函数式接口-Supplier接口 /* 常用的函数式接口 java.util.function.Supplier<T>接口仅包含一个无参的方法:T get()。用来获取一个泛型参数指定类型的对象数据。 Supplier<T>接口被称之为生产型接口,指定接口的泛型是什么类型,那么接口中的get方
阅读全文
摘要:函数式接口作为方法的参数案例 public class DemoRunnable { //定义一个方法startThread,方法的参数使用函数式接口Runnable public static void startThread(Runnable run){ //开启多线程 new Thread(r
阅读全文
摘要:性能浪费的日志案例 注意: 日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。 一种典型的场景就是对参数进行有条件使用,例如对日志消息进行拼接后,在满足条件的情况下进行打印输出 /* 日志案例 发现以下代码存在的一些性能浪费的问题 调用showLog方法,传递的第二个参
阅读全文
摘要:函数式接口的概念&函数式接口的定义 函数式接口在java中是指:有且仅有一个抽象方法的接口 函数式接口,即适用于函数式编程场景的接口,而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口,只有确保接口中有且仅有一个抽象方法,java中的Lambda才能顺利
阅读全文
摘要:文件上传案例优化(文件命名&循环接收&多线程提高效率) 服务端 /* 文件上传案例服务器端:读取客户端上传的文件,保存到服务器的硬盘,给客户端回写"上传成功 明确: 数据源:客户端上传的文件 目的地:服务器的硬盘d : \ lupLoad \l1.jpg 实现步骤: 1.创建一个服务器serverS
阅读全文
摘要:文件上传的服务端 /* 文件上传案例服务器端:读取客户端上传的文件,保存到服务器的硬盘,给客户端回写"上传成功 明确: 数据源:客户端上传的文件 目的地:服务器的硬盘d : \ lupLoad \l1.jpg 实现步骤: 1.创建一个服务器serverSocket对象,和系统要指定的端口号 2.使用
阅读全文
摘要:综合案例--文件上传的原理 文件上传案例的客户端 /* 文件上传案例的客户端:读取本地文件,上传到服务器,读取服务器回写的数据 明确: 数据源:c:ll1.jpg 目的地: 服务器 实现步骤: 1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源 2.创建一个客
阅读全文
摘要:TCP通信的客户端代码实现 /* TCO通信的客户端:向服务端发送连接请求,给服务区发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类1实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点 套接字:包含了IP地址和端口号的网络单位 构造方法 So
阅读全文
摘要:TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client )与服务端(Server )。 两端通信时步骤︰ 1.服务端程序,需要事先启动,等待客户端的连接。 2.客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。 在Java中,提供了两个类用于实现T
阅读全文
摘要:概述 网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢? 如果说P地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。 端口号:用两个字节表示的整数,它的取值范围是0-65535。 其中,0-1023之间的端
阅读全文
摘要:协议分类! 通信的协议还是比较复杂的,java.net包中包含的类和接口,他们提供底层次的通信细节,我们可以直接使用这些类和接口,来专注与网络程序开发,而且不用考虑到通讯细节 java.net包中提供了两种常见的网络协议支持: UDP:用户数据报协议( User Datagram Protocol)
阅读全文
摘要:链表是什么? 1.链表是一个物理上的存储单元,上非连续的,分顺序的储存构造,数据元素的逻辑是通过链表的指针地点实现,有有一系类节点(地址)组成,节点可以动态生成。 2.节点包括两部分(1)储存数据元素的数据域(内存空间)(2)储存指向下一个节点地址的指针域。 3.相当于线性。表顺序结构,操作复杂 4
阅读全文
摘要:软件结构 两种架构各有优势,但是无论哪种架构,都离不开网络的支持,网络编程,就是在一定的协议下,实现两台计算机的通信的程序 网络通信 网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行和通信时,需要遵守一定的规则,这就好比在道路中形式的汽车一定要遵守交通规则一样。在
阅读全文
摘要:练习--序列化集合 练习:序列化集合 当我们想在文件中保存多个对象的时候 可以把多个对象存储到一个集合汇总 对集合进行序列化和反序列化 分析: 1.定义一个存储Person对象的ArrayList集合 2.往ArrayList集合中存储Person对象 3.创建一个序列化流ObjectOutputS
阅读全文
摘要:transient关键字--瞬态关键字 static关键字:静态关键字 静态优先于非静态加载到内存中(静态优先于对象进入到内存中) 被static修饰的成员变量不能被序列化的,序列化的都是对象 transient关键字:瞬态关键字 被transient修饰成员变量,不能被序列化 static pub
阅读全文
摘要:对象的序列化流--ObjectOutPutStream /* java.io.ObjectOutputStream extends OutputStream ObjectOutputStream:对象的序列化流 作用:把对象以流的方式写入到文件中保存 构造方法: ObjectOutputStream
阅读全文
摘要:练习--转换文案件编码 1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-83.使用InputStreamReader对象中的方法read读取文件4.使用
阅读全文
摘要:OutPutStreamWriter介绍&代码实现 /* java.io.OutputStreamWriter extends Writer OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂)
阅读全文
摘要:编码引出的问题_FileReader读取GBK格式的文件 /* FileReader可以读取IDE默认编码格式(UTF-8)的文件 FileReader读取系统默认编码(中文GBK)会产生乱码��� */ public class Demo01FileReader { public static v
阅读全文
摘要:字符编码和字符集 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。 反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。比如说,按照A规则存储,同样按照A规则解析,那么
阅读全文
摘要:BufferedWriter--字符缓冲输出流 java.io.BufferedWriter extends writerBufferedWriter:字符缓冲输出流继承自父类的共性成员方法: 1、void write(int c):写单个字符 2、void write(char[] cbuf):写
阅读全文
摘要:缓冲流的效率测试--复制文件 /* 文件复制练习:一读一写 明确: 数据源: c:\\1.jpg 数据的目的地: d:\\1.jpg 文件复制的步骤: 1.创建字节缓冲输入流对象,构造方法中传递字节输入流 2.创建字节缓冲输出流对象,构造方法中传递字节输出流 3.使用字节缓冲输入流对象中的方法rea
阅读全文
摘要:BufferedOutputStream--字节缓冲输出流 /* java.io.BufferedOutputStream extends OutStream BufferedOutputStream :字节缓冲输出流 继承父类的共同成员方法: 方法: close() 关闭此输出流并释放此流有关的所
阅读全文
摘要:缓冲流的原理 缓冲流,也叫高效流,是对4个基本的 Filexxx流的增强,所以也是4个流,按照数据类型分类:· 字节缓冲流: BufferedInputStream , Bufferedoutputstream 字符缓冲流: BufferedReader, Bufferedwriter缓冲流的基本原
阅读全文
摘要:Properties集合中的方法store void store(OutputStream out,String comments) void store(Writer writer,String comments) 参数: OutputStream out:字节输出流,不能写入中文 Writer
阅读全文
摘要:JDK7和JDK9流中异常的处理JDK7 /* JDK7的新特性 在try的后边可以增加一个(),在括号中可以定义流对象 那么这个流对象的作用域就在try中有效 try中的代码执行完毕,会自动把流对象释放,不用写finally 格式: try(定义流对象;定义流对象....){ 可能会产出异常的代码
阅读全文
摘要:字符输出流的续写和换行 FileWriter fw = new FileWriter("D:\\b.txt",true);//加上appen:true // 续写 for (int i = 0; i < 10; i++) { fw.write("hello"+i+"\r\n"); //windows
阅读全文
摘要:flush方法和close方法的区别 flush会输出缓冲区内容,流可以正常使用。close会输出缓冲区内容并且关闭流。(但是close中是否直接调用flush,甚至是否输出缓冲区内容都需要看具体实现) /* flush方法和close方法的区别 - flush :刷新缓冲区,流对象可以继续使用。
阅读全文
摘要:字符输出流-Writer类&FIleWriter类介绍 /* java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符。 - void write(char[] cbuf)写入字符数组。 - abs
阅读全文
摘要:符输入流--Reader类&FileReader类介绍 字符流输入流 当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时。可能不会显示完整的字节,那是因为当一个中文字符可能占用多个字节储存。 所有java提供了一些字符流,以字符为单位读写数据,专门用于处理文本文件 字符输入流java
阅读全文
摘要:文件复制 package com.example.day07code.demo02Date; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public cla
阅读全文
摘要:字节输入流一次读取一个字节的原理 字节输入流一次读取多个字节 String类的构造 String(byte[] bytes) :把字节数组转换为字符串 String(byte[] bytes,int offset,int length) 把字节数组的一部分转换为字符串 offset:数组的开始索引
阅读全文
摘要:字节输入流_InputStream类&FilelnputStream类介绍 java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类。 定义了所有子类共性的方法: int read()从输入流中读取数据的下一个字节。 int read(byte[] b) 从输入流中
阅读全文
摘要:字节输出流写多个字节的方法 public static void main(String[] args) throws IOException { //创建FileOutputStream对象,构造方法中绑定要写入数据的目的地 FileOutputStream fos = new FileOutpu
阅读全文
摘要:字节流输出写入数据到文件 package demo5; /* * java.io.OutputStream:字节输出流 * 此抽象类是表示输出字节流的所有类的超类 *定义了一些子类共性的成员方法: * public void close():关闭输出流并释放与此相关联的任何系统资源 * public
阅读全文
摘要:一切皆为字节 一切文件数据(文本、图片、视频等在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时样如此。 所以,字节流可以传辋任意文件数据。 在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。 字节输出流 OutputStream类 java.io.
阅读全文
摘要:FileNameFilter过滤器的使用和Lambda优化程序 /* 我们可以使用过滤器来实现 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 File[] listFiles(FileFilter filter) java.io.FileFilter接口:用于抽象路
阅读全文
摘要:综合案例文件搜索 搜索D:\a目录中的,java文件。 分析 1.目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录 2遍历目录时,获取的子文件,通过文件名称,判断是否符合条件 需求: 遍历c:\\abc文件夹,及abc文件夹的子文件夹 只要.java结尾的文件 c:\\abc c:\\abc
阅读全文
摘要:练习--使用递归计算阶乘 public static void main(String[] args) { int jc = jc(5); System.out.println(jc); } /* 定义方法使用递归计算阶乘 5的阶乘:5! = 5*(5-1)*(5-2)*(5-3)*(5-4)=5*
阅读全文
摘要:递归∶指在当前方法内调用自己的这种现象。 递归的分类: 递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件,但是递
阅读全文
摘要:File类创建删除功能的方法 - public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 - public boolean delete() :删除由此File表示的文件或目录。 - public boolean mkdir() :创
阅读全文
摘要:获取功能的方法 public String getabsolutepath():返回此Fle的绝对路径名字符串。 public String getpath():将此Fle转换为路径名字符串。 public String getname():返回由此File表示的文件或目录的名称。 public l
阅读全文
摘要:概念: 路径: 绝对路径: 是一个完整的路径以盘符(c:,D:)开始的路径c:a. txtC: \Users\itcast\\Ideaprojects l\shangyuan \\123.txtD:l\demo\\b. txt 相对路径: 是一个简化的路径相对指的是相对于当前项目的根目录(C: Us
阅读全文
摘要:File类的概念 java.ioFile类是文件和目录路径名的抽象表示,主要用文件和目录的创建,查找和删除等操作 它的构造方法 public File( String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的FIle实例 public File( String pare
阅读全文
摘要:有参数有返回值的练习(自定义接口) public interface Calculator { //定义一个计算两个int整数和的方法并返回结果 public abstract int day01(int a,int b); //测试 public static void main(String[]
阅读全文
摘要:无参数无返回值练习 //定义Cook接口 public interface Cook { public abstract void food(); } //测试 public static void main(String[] args) { //调用Cook方法,参数Cook接口,传递Cook接口
阅读全文
摘要:Lambda表达式的标准格式: 由三部分组成 a.—些参数 b.一个箭头 c.一段代码格式:(参数列表)->{一些重写方法的代码} 解释说明格式: ():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分隔 ->:传递的意思,把参数传递给方法体{} {}:重写接口的抽象
阅读全文
摘要:冗余的Runnable代码当需要启动一个线程去完成任务时,通常会通过java.lang.nabe接口来定义任务内容, 并使用ava.lang. Thread类来启动该线程。代码如下: 本着一切皆对象的思想,这种做法是无可厚非的:首先创建一个 Runnable接口的匿名内部类对象来指定任务内容,再将其
阅读全文
摘要:线程池的代码实现 public class RunnabImpl implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()); } } //测试publ
阅读全文
摘要:吃货类测试 public class ChiHuo extends Thread{ /* 消费者(吃货)类:是一个线程类,可以继承Thread设置线程任务(run):吃包子 对包子的状态进行判断 false:没有包子 吃货调用wait方法进入等待状态 true:有包子 吃货吃包子吃货吃完包子 修改包
阅读全文
摘要:等待唤醒机制案例需求分析 代码实现包子类和包子铺类 生产者包子铺)类:是一个线程类,可以继承 Thread 设置线程任务(rwn):生产包子 对包子的状态进行判断 true:有包子包子铺调用wit方法进入等待状态 false:没有包子包子铺生产包子增加一些趣味性:交替生产两种包子有两种状态(i2=0
阅读全文
摘要:线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。 比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作 一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。. 为什么要处理线程间通信? 多个线程并发执行时,在
阅读全文
摘要:等待唤醒案例:线程之间的通信 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到wAITING状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子 注意: 顾客和老板线程必须使用同步代码块包
阅读全文
摘要:线程状态的概述 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。 在线程的生命周期中,有几种状态呢?在AP中java.lang. Thread. State这个枚举中给出了六种线程状态这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析 线程状态理解:我们
阅读全文
摘要:静态同步方法 public class SynchronizedStatic implements Runnable { static boolean staticFlag = true; public static synchronized void test0(){ for(int i=0;i<
阅读全文
摘要:.同步技术原理 解决线程安全问题的一种方案:使用同步代码块格式: synchronized(锁对象){ 可能会出现线程安全问题的代码(访问了共享数据的代码) } 注意: 1.通过代码块中的锁对象,可以使用任意的对象 2.但是必须保证多个线程使用的锁对象是同一个 3.锁对象作用: 把同步代码块锁住,只
阅读全文
摘要:线程安全问题产生的原理 解决线程安全问题——同步代码块 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题。 要解决上述多线程并发访问一个资源的安全性问题:也就是解决重复票与不存在票问题,Java中提供了同步机制(synchronized)来解决。 publi
阅读全文
摘要:线程安全问题 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。 程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题电影院要卖票,我们模拟电影院的卖票过程。 假设要播放的电影是“葫芦娃大战奧特曼″,本次电
阅读全文
摘要:Thread和Runnable的区别 如果一个类继承 Thread,则不适合资源共享。但是如果实现了 Runable接口的话,则很容易的实现资源共享 总结:实现 Runnable接口比继承 Thread类所具有的优势 :1.适合多个相同的程序代码的线程去共享同一个资源。 2.可以避兔java中的单继
阅读全文
摘要:Thread的常用方法sleep sleep:sleep方法可以让线程进入到Waiting状态,并且不占用CPU资源,但是不释放锁,直到规定时间后再执行,休眠期间如果被中断,会抛出异常并清除中断状态。 publc static void sleep( Long millis):使当前正在执行的线程以
阅读全文
摘要:Thread类的常用方法获取线程名的方法 /** * 获取线程的名称: * 1.使用 Thread类中的方法 getname() * string getname()返回该线程的名称 * 2.可以先获取到当前正在执行的线程,使用线程中的方法getname()获取线程的名称 * static Thre
阅读全文
摘要:多线程原理_随机性打印结果Java的线程调度为抢占式调度,打印出来的多线程为随机性打印结果.下面我们解释一下多线程情况下的随机性打印结果:当我们运行程序时,JVM找OS开辟一条main方法通向cpu的路径,这条路径叫主线程,cpu通过主线程执行main方法.而main方法中我们创建了新的线程,新线程
阅读全文
摘要:主线程 主线程:执行main方法的线程 单线程程序:java程序中只有一个单线程 执行main方法开始,从上倒下依次执行 当一个Java程序启动的时候,会有一个线程立即开始运行,这个线程通常被我们叫做程序中的主线程,因为它是在我们程序开始的时候就被执行的线程。 子线程都从该线程中被孵化 通常它都是最
阅读全文
摘要:线程的概念 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。 一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计
阅读全文
摘要:并发∶指两个或多个事件在同一个时间段内发生 并行︰指两个或多个事件在同一时刻发生(同时发生)。 我的计算机的以下屏幕截图显示了并发示例。我的计算机系统正在同时执行多项操作-它正在媒体播放器上运行视频,在终端上接受键盘输入,并在IntelliJ Idea中构建项目。当我们说“多个任务同时执行”时,我们
阅读全文
摘要:自定义异常类 我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。 在上述代码中,发现这些异常都是IDK内部定义好的,但是实际开发中也会出现很多异常,这些
阅读全文
摘要:异常注意事项_finally有returm语句 运行时异常被抛出可以不处理。即不捕获也不声明抛出。 如果 finally有 return语句永远返回 Finally中的结果避免该情况 子父类异常 如果父类抛出了多个异常子类覆盖父类方法时只能抛出相同的异常或者是他的子集。 父类方法没有抛出异常,子类覆
阅读全文
摘要:finally代码块 fina!y:有一些特定的代码无论异常是否发生,都需要执行。 另外,因为异常会引发程序跳转,导致有些语句执行不到。而fnay就是解决这个问题的,在inal代码块中存放的代码都是一定会被执行的。 什么时候的代码必须最终执行? 当我们在tr语句块中打开了一些物理资源磁盘文件/网络连
阅读全文
摘要:Throws关键字--异常处理的第二种方式,自己处理 如果异常出现的话,会立刻终止程序,所以我们得处理异常: 1.该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。 2.在方法中使用try-catch的语句块来处理异常。 try-catch的方式就是捕获异常。 捕获异常:Java中
阅读全文
摘要:objects非空判断_requireNonNull方法 还记得我们学习过一个类 Objects吗,曾经提到过它由一些静态的实用方法组成,这些方法是 null-save (空指针安全的)或 null-tolerant(容忍空指针的),那么在它的源码中,对对象为ηu的值进行了抛出异常操作。 publi
阅读全文
摘要:异常的生产过程解析 throw关键字 thro天键作用可以使用thro关键字在指定的方法中抛出指定的异常使用格式throw new xxxexception(“异常产生的原因“”) 注意1.thro关键字必须写在方法的内部2.thro关键字后边ne的对象必须是 Exception或者 Excepti
阅读全文
摘要:异常概念&异常体系 ava.Lang. Throwable:类是J0va语言中所有错误或异常的超类。Exception:编译期异常,进行编译(写代码)avo程序出现的问题Runtimeexception:运行期异常,jw程序运行过程中出现的问题昇常就相当于程序得了一个小毛病(感冒,发烧)把昇常处理掉
阅读全文
摘要:斗地主案例的需求分析 这个斗地主的案例和之前的斗地主案例多加了细节上的优化, 之前的斗地主,洗牌发牌,发到手里之后,牌很乱,顺序都是乱七八糟的 现在的斗地主,洗完牌,发完牌,发到手里之后,会自动帮你整理牌,变得有顺序 这是没顺序的,看着很难受 public static void main(Stri
阅读全文
摘要:JDK9的新特性: List接口,Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素 static List of (E…elements) 使用前提: 当集合中存储的元素个数已经确定了,不再改变时使用 注意: 1.of方法只适用于List接口,Set接口,Map接口
阅读全文
摘要:LinkedHashMap集合 我们知道HashMap保证成对元素唯一,并且查询速度很快,可是成对元素存放进去是没有顺序的,那么我们要保证有序,还要速度快怎么办呢? 在HashMap下面有一个子类LinkedHashMap,它是链表和哈希表组合的一个数据存储结构。 java.util.LinkedH
阅读全文
摘要:Map集合遍历键值对方式 Map集合遍历的第二种方式:使用Entry对象遍历 Map集合中的方法: Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。 实现步骤: 1.使用Map集合中的方法entrySet( ),把Map集合中多个Entry对象
阅读全文
摘要:Map接口中遍历键找值的方式 public class Demo2_Iterator { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("张三", 23); m
阅读全文
摘要:Map常用子类 ap接囗的哈希表和洌表实现,具有可预知的迭代顺序。 此实现与 Hashmap的不同之处在于,后者维护着个运行于所有条目的双重链接列表比链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(姻顺序。 注意,如果在映射中重新入键,则插入顺序不受影响。(如果在调用m.put(k
阅读全文
摘要:Collections集合工具类的方法sort(list,Comparator) java.utils.collections是集合工具类,用来对集合进行操作。部分方法如下: public static 〈T> void sort(List<T> list,Comparator<? super T>
阅读全文
摘要:Collections集合工具类的方法 addAll&shuffle 2.1常用功能java.utils.collections是集合工具类,用来对集合进行操作。部分方法如下: public static 〈T> boolean addAI1(collection<T> c,T... element
阅读全文
摘要:LinkedHashSet集合 哈希表和链表实现的Set接口, 具有可预测的迭代次序; 由链表保证元素有序,也就是说元素的存储和取出顺序是一致的; 由哈希表保证元素唯一, 也就是说没有重复的元素; LinkedHashSet是HashSet的子类LinkedHashSet底层是一个LinkedHas
阅读全文
摘要:Vector集合 这个集合是java最早的一个集合,它的底层是一个数组。 Vector是线程安全的,但扩容会增长100% ArrayList是线程不安全的,但扩容增长50%,能有效利用磁盘空间。 特点: 有序的,可以存储重复值和null值。 底层是数组实现的,线程安全。结构与ArrayList非常相
阅读全文
摘要:Set集合储存元素不能重复的原理 public static void main(String[] args) { HashSet<String> set = new HashSet<>(); String a1 = new String("aaa"); String a2 = new String
阅读全文
摘要:哈希值 哈希值就是:对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。 更重要的是:这里的内存地址是JVM虚拟机虚拟出来的地址,并不是真实的物理内存地址。 哈希值是通过哈希算法散列得来的,而地址值是通过是和物理层面有关, 是系统分配的,是不存在相同的,而哈希值是可以
阅读全文
摘要:ArrayList集合 java.util.ArrayList-集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。 J
阅读全文
摘要:红黑树 二又树: binary tree,是每个结点不超过2的有序树(tree)。 简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点。 二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树"和“右子树"。 List集合介绍以及常用方法 在Co
阅读全文
摘要:数据结构——栈 栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Botto
阅读全文
摘要:数据结构数组 查询快:数组的地址是连续的我们通过数组的首地址可以找到数组通过数组的素引可以快速查找某一个元素 增删慢数组的长度是固定的我们想要增加/删除一个元素必须创建一个新数组把源数组的数据复制过来 要把数组中素引是3的元素删除必须创建一个新的数组长度是源数组的长度-1把源数组的其他元素复制到新数
阅读全文
摘要:斗地主案例需求分析及代码实现 public static void main(String[] args) { //1.准备牌 //定义一个存储54张牌的ArrayList集合,泛型使用String ArrayList<String> poker = new ArrayList<>(); //定义两
阅读全文
摘要:泛型的使用总结 泛型的使用 1.泛型类和泛型方法 /* class 类型名<泛型标识,泛型标识, ...>{ private 泛型标示 变量名; } */ public class GenericDemo<T> { private T key; public GenericDemo(T key) {
阅读全文
摘要:定义和使用含有泛型的接口 定义格式∶ 修饰符interface接口名<代表泛型的变量>{} /* 定义含有泛型的接口 */ public interface GenericInterface<I> { public abstract void method(I i); } public class
阅读全文
摘要:定义和使用含有泛型的类 我们在集合中会大量使用到泛型,这里来完整地学习泛型知识。 泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。 定义格式︰ 修饰符class类名<代表泛型的变量>{} 例如,API中的ArrayList集合∶ class ArrayList<
阅读全文
摘要:泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,
阅读全文
摘要:迭代器的实现原理 增强for循环 增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写是JDK1.5之后出现的新特性 collection<E>extends Iterable<E>:所有的单列集合都可以使用增强for public interface Iterable<T
阅读全文
摘要:Lterator接口介绍 在程序开发中J经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口 java.util.Iterator 。(Iterator 接口也是Java集合中的一员,但它与collection、(Map接口有所不同collection接口与Map接口主要用于存储元素
阅读全文
摘要:Collerction集合 常用方法 booLean add(E e); 向集合中添加元素boolean remove(E e); 删除集合中的某个元素void clear( ); 清空集合所有的元素boolean contains(E e); 判断集合中是否包含某个元素boolean isEmpt
阅读全文
摘要:Collection集合概述在前面基础班我们已经学习过并使用过集合 Arraylist<E>,那么集合到底是什么呢? 集合:集合是Jva中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的 数组中存储的是同一类型的元素,可以存储基
阅读全文
摘要:包装类-基本类型与字符串类型之间的相互转换 基本类型与字符串之间的转换·基本类型-->字符串 1.基本类型数据的值+"”最简单的方式(工作中常用) 2.使用包装类中的静态方法 static string tostring(int i)返回一个表示指定整数的 string 对象。 3.使用String
阅读全文
摘要:包装类-拆装箱 基本类型与对应的包装类对象之间,来回转换的过程称为"装箱“与"拆箱”: 装箱:从基本类型转换为对应的包装类对象。 拆箱:从包装类对象转换为对应的基本类型。 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)构造方法; Integer(int value)构造一个新分配
阅读全文
摘要:StringBuilder的构造方法和append方法 根据StringBuilder的API文档,常用构造方法有2个: public stringBuilder()∶构造一个空的StringBuilder容器。 public StringBuilder(String str)I:构造一个Strin
阅读全文
摘要:StringBuilder类的toString方法 StringBuiLder和string可以相互转换: String -> StringBuilder:可以使用StringBuilder的构造方法 StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容
阅读全文
摘要:System类的常用方法 java.lang. System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在system类的APr文档中, 常用的方法有: public static long currentTimewillis ():返回以毫秒为单位的当前时间。 /** * pu
阅读全文
摘要:时间日期相关类总结 1.Date类 A.构造方法 Date(); 根据当前系统时间创建日期对象 Date(long time); 根据传入的毫秒值时间创建日期对象 B.成员方法 longEetTime(); 获取当前日期对象的毫秒值时间 String toLocaleString(); 根据本地格式
阅读全文
摘要:Calendar类介绍,获取对象的方式 Calendar类是一个抽象类,它为特定瞬间与一组诸如(YEAR、MONTH、DAY_OF_MONTH、HOUR )I等旦历字之间的转换提供了一些方法,并为操作日历字段 (例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时
阅读全文
摘要:毫秒值的概念和作用 概述: java.utiL.Date:表示日期和时间的类类Date表示特定的瞬间,精确到毫秒。 毫秒:千分之一秒1000毫秒=1秒 特定的瞬间:一个时间点,一刹那时间 2022-07-05 09:55:33:333瞬间 2088-68-08 69:55:33:334瞬间 2088
阅读全文
摘要:DateFormat类与SimpleDateFormat类介绍 java.text.DateFormat 是日期/时间格式化子类的抽象类, 我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。 格式化:按照指定的格式,从Date对象转换为St
阅读全文
摘要:Object类的toString方法 Object类的概述 java.long.object类是java语言中的跟类,即所有类的父类,它中描述的所有方法子类都可以使用,在对象实例化的时候,最终找到父类的就是object 如果一个类没有特制的父类,那么默认则继承object类例如 public cla
阅读全文
摘要:发红包案例解析和普通红包平均发和手气手气红包随机发 场景说明: 红包发出去之后,所有人都有红包,大家抢完了之后,最后一个红包给群主自己。 大多数代码都是现成的,我们需要做的就是填空题。 我们自己要做的事情有: 1. 设置一下程序的标题,通过构造方法的字符串参数 2. 设置群主名称 3. 设置分发策略
阅读全文
摘要:思想:可以返回接口,接口虽然不能被实例化,但是接口的实现类都可以向上转型为接口。所谓面向接口编程是指我们在编写代码时对数据参数的定义尽量写成接口,待真正实现的时候再用实际类型代替。好处:代码的耦合性降低,在运行时我只需修改实现类类型,就可以实现不同的功能,而不必要修改接口的代码。表面上是返回的接口,
阅读全文
摘要:类作为成员变量类型 public static void main(String[] args) { // 创建一个英雄角色 Hero hero = new Hero(); // 为英雄起一个名字,并且设置年龄 hero.setName("盖伦"); hero.setAge(20); // 创建一个
阅读全文
摘要:匿名内部类 如果接口的实现类(或者是父类的子类)只需要使用唯一的一次, 那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】。 匿名内部类的定义格式: 接口名称对象名=new接口名称() { //覆盖重写所有抽象方法 }; 接口 public interface MyInterface {
阅读全文
摘要:局部内部类的定义 如果一个类是定义在一个方法内部的,那么这就是一个局部内部类。“局部”:只有当前所属的方法才能使用它,出了这个方法外面就不能用了。定义格式:修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名称(参数列表) { class 局部内部类名称 { // ... } }}小
阅读全文
摘要:成员内部类的使用 如何使用成员内部类?有两种方式:1.间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。 2.直接方式,公式: 类名称对象名= new类名称(); 【外部类名称.内部类名称对象名= new外部类名称().new内部类名称();】 public static
阅读全文
摘要:内部类的概念与分类 如果一个事务的内部包含另一个事物,那么这就是一个类内部包含另一个类 比如:汽车和发动机的关系 分类: 1.成员内部类 2.局部内部类(包含匿名内部类) 成员内部类的定义 成员内部类的定义格式:修饰符class外部类名称 { 修饰符class内部类名称 { / / ... } //
阅读全文
摘要:final关键字用于修饰成员变量 对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。 1.由于成员变量具有默认值,所以用了于inal之后必须手动赋值,不会再给默认值了。 2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。 3.必须保证类当中所
阅读全文
摘要:final关键字概念与四种写法 final关键字代表最终、不可改变的。常见四种用法:1.可以用来修饰一个类 2.可以用来修饰一个方法 3.还可以用来修饰一个局部变量 4还可以用来修饰一个成员变量 final关键字用于修饰类 不能使用一个final类来作为父类 当final关键字用来修饰一个类的时候,
阅读全文
摘要:final关键字用于修饰成员方法 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写 格式: 修饰符 final 返回值类型 方法名称 (参数列表){ // 方法体 } 注意事项: 对于类,方法来说,abstract关键字和final关键字不能同时使用,因为矛盾.
阅读全文
摘要:对象的向下转型 //向下转型进行“还原”动作 Cat cat = (cat) animal; cat.catchMouse(); // 猫抓老鼠 用instanceof关键字进行类型判断 父类 public class Fu { public void eat(){ System.out.print
阅读全文
摘要:笔记本USB接口案例_分析 笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不 关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那
阅读全文
摘要:使用多态的好处 可以让我们的代码更加的灵活,更加简洁 对象的向上转型 向上转型: 假设有一个Fruit类,Fruit类中有一个show()方法,代码如下: class Fruit{ public void show() { System.out.println("this is a fruit");
阅读全文
摘要:多态中成员变量的使用特点 访问成员变量的两种方式: 1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找 2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找 父类 public class Fu { int num = 10; public void sho
阅读全文
摘要:. 多态的概述 奥特曼是一个对象,这个对象有蓝色形态,也有红色形态,还有其他的各种形态。 一个对象拥有多种形态,这就是:对象的多态性 多态的格式与使用 代码当中体现多态性,其实就是一句话:父类引用指向子类对象。 格式: 交类名称对象名= new子类名称();l或者: 接口名称对象名 = new实现类
阅读全文
摘要:继承父类并实现多个接口 使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式 public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {/覆
阅读全文
摘要:接口的常量定义 接口当中也可以定义成员变量,但是必须使用public static final 三个关键字进行修饰 从效果上看,这其实就是接口的常量 格式: public static final 数据类型 常量名称 = 数据值 备注: 一旦使用final关键字进行修饰,说明不可改变 注意事项: 1
阅读全文
摘要:接口的私有方法定义 问题描述: 我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。但是这个共有方法不应该让实现类使用,应该是私有化的。 解决方案: 从Java9开始,接口当中允许定义私有方法。 1.普通私有方法,解决多个默认方法之间重复代码问题 格式: private返回值类型方法名
阅读全文
摘要:接口的静态方法定义 从java 8 开始,接口当中允许定义静态方法 格式: public static 返回值类型 方法名称(参数列表){ 方法体 } /* * 从java开始,接口当中允许定义静态方法。 * 格式: * public static 返回值类型 方法名称(参数列表){ * //方法体
阅读全文
摘要:接口的默认方法定义 从java8 开始,接口里允许定义默认方法 格式: public default 返回值类型 方法名称(参数列表){ 方法体 } 备注:接口当中的默认方法,可以解决接口升级的问题 //这些都是抽象方法 public boolean void demo01(): abstract
阅读全文
摘要:抽象方法的定义格式: 修饰符 abstract 返回值类型 方法名称(参数列表); 一个方法写上abstract关键字,去掉{},就是抽象方法 含有抽象方法的类,一定是一个抽象类. 抽象类的格式: 修饰符 abstract class 类名称 { //... } 抽象类的使用: 抽象方法不能直接ne
阅读全文
摘要:接口概述与生活举例 接口的定义基本格式 接口就是多个类的公共规范 接口是一种引用数据类型,最重要的内容就是其中的:抽象方法 如何定义一个接口的格式: public interface 接口名称 { //接口内容 } 备注:换成了关键字interface之后,编译生成的字节码文件仍然是:java --
阅读全文
摘要:发红包案例的分析 发红包案例的实现 用户类 public class User { private String name; private int money; public void show(){ System.out.println("我叫:"+name+",我有:"+money); } p
阅读全文
摘要:抽象方法和抽象类的定义格式 package test1;/** 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束;* 抽象类:抽象方法所在的类,必须是抽象类才行,在class之前写上abstract即可;** 如何使用抽象类和抽象方法:* 1.不能直接创建new抽象对象* 2必
阅读全文
摘要:抽象方法和抽象类的格式 抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束。 抽象类:抽象方法所在的类,必须是抽象类才行。在cLass之前写上abstract即可。 public abstract class Animal { //这是一个抽象方法,代表吃东西,但是具体吃什么(大
阅读全文
摘要:Java继承的三个特点 1、Java语言是单继承的。 一个类的直接父类只能有唯一一个。 2、Java语言可以多级继承。 3、一个父类可以有多个子类。 抽象的概念
阅读全文
摘要:this关键字的三种用法 super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种: 1.在本类的成员方法中,访问本类的成员变量。 2.在本类的成员方法中,访问本类的另一个成员方法。 3.在本类的构造方法中,访问本类的另一个构造方法。 在第三种用法当中要注意: A. this
阅读全文
摘要:继承中成员方法的访问特点 继承关系中,父子类构造方法的访问特点: 1.子类构造方法当中有一个默认隐含的“super()"调用,所以一定是先调用的父类构造,后执行的子类构造。 2.子类构造可以通过super关键字来调用父类重载构造。 3. super的父类构造调用,必须是子类构造方法的第一个语句。不能
阅读全文
摘要:继承中成员方法的覆盖重写_注意事项 方法覆盖重写的注意事项: 1.必须保证父子类之间方法的名称相同,参数列表页相同 @Override:写在方法前面,用来检测是不是有效的正确覆盖重写 这个注释就算不写,只要满足要求,也是正确的方法覆盖重写 2.子类方法的返回值必须 “小于等于” 父类方法的返回值范围
阅读全文
摘要:继承中成员方法的访问特点 在父子类的继承关系当中,创建子类对象,访问成员方法的规则: 创建的对象是谁,就优先用谁,如果没有则向上找 注意事项: 无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的 //父类public class Fu { public void methodF
阅读全文
摘要:继承中成员变量的访问特点 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:直接通过子类对象访问成员变量: 等号左边是谁,就优先用谁,没有则向上找。 间接通过成员方法访问成员变量: 该方法属于谁,就优先用谁,没有则向上找。 创建父类 public class Fu { in
阅读全文
摘要:继承的概述 面向对象的三大特征:封装,继承,多态 继承是多态的前提,如果没有继承,就没有多态 继承主要解决的问题就是:共性抽取 继承关系当中的特点: 1.子类可以拥有父类的内容 2.子类还可以拥有自己专有的内容 继承就是子类继承父类 承的格式 在继承的关系中,“子类就是一个父类”。也就是说,子类可以
阅读全文
摘要:数学工具类Math java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。 public static double abs ( double num):获取绝对值。 public static double ceil(double num):向上取整
阅读全文
摘要:静态代码块 静态代码块的格式是: public class类名称{ static { //静态代码块的内容 } }特点:当第一次用到本类时,静态代码块执行唯一的一次。 静态内容总是优先于非静态,所以静态代码块比构造方法先执行。 静态代码块的典型用途: 用来—次性地对静态成员变量进行赋值。 publi
阅读全文
摘要:静态static关键字修饰成员方法 一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。 如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。 无论是成员变量,还是成员方法。如果有了static,都推荐使用类名称进行调用。静态变量:类名称
阅读全文
摘要:静态static关键字概述 静态static关键字修饰成员变量 public class Student { private int id; private String name; private int age; static String room;//锁在教室 private static
阅读全文
摘要:字符串的转换相关方法 String当中与转换相关的常用方法有: public char[ ] toCharArray():将当前字符串拆分成为字符数组作为返回值。 public byte[] getBytes():获得当前字符串底层的字节数组。 public String replace(CharS
阅读全文
摘要:字符串的获取相关方法 string当中与获取相关的常用方法有: public int length():获取字符串当中含有的字符个数,拿到字符串长度。 public String concat (String str):将当前字符串和参数字符串拼接成为返回值新的字符串。 public char ch
阅读全文
摘要:字符串的常量池 字符串的比较相关方法 ==是进行对象的地址值比较,如果确实需要字符串的内容比较, 可以使用两个方法:public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true;否则返回false 备注:任何对象都能用obj
阅读全文
摘要:字符串概述和特点 java.Lang. String类代表字符串。API当中说: Java程序中的所有字符串字面值(如"abc”)都作为此类的实例实现。其实就是说:程序当中所有的双引号字符串,都是string类的对象。(就算没有new,也照样是。)字符串的特点:1.字符串的内容永不可变。【重点】2.
阅读全文
摘要:ArrayList集合的常用方法和遍历 Arraylist当中的常用方法有: public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功 备注:对于ArrayList集合来说, add添加动作一定是成功的,所以返回值可用可不用。 但是对于其他集合
阅读全文
摘要:对象数组 定义一个数组,用来存储3个Person对象 数组有一个缺点: 一旦创建,程序运行起见长度不可以发生改变 public class Person { private String name; private int age; public Person(String name, int ag
阅读全文
摘要:// Random概述和基本使用// Random生成指定范围的随机数字Random类用来生成随机数字。使用起来也是三个步骤:1.导包import java.util.Random;2.创建Random r = new Random(); // 小括号当中留空即可3.使用获取一个随机的int数字(范
阅读全文
摘要:匿名对象 概念 创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用 场景非常有限。 匿名对象 :没有变量名的对象。 格式: day04类 package demox.demopro; public class day04 { String name;
阅读全文
摘要:查看类 java.util.Scanner :该类需要import导入后使用。 查看构造方法 public Scanner(InputStream source) : 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。 查看成员方法 public int nextInt() :将输入
阅读全文
摘要:概念: API应用程序编程接口。Java APl是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来, 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。 API的使用
阅读全文
摘要:造方法的作用域 构造方法只能通过以下方式被调用: (1) 当前类的其他构造方法通过this语句调用它。 (2) 当前类的子类的构造方法通过super语句调用它。 (3)在程序中通过new语句调用它。 对于例程(Sub.java)的代码,请读者自己分析某些语句编译出错的原因。 例程 Sub.java
阅读全文
摘要:private关键字定义学生类练习 定义Student类 private String name; private int age; private boolean male; public String getName() { return name; } public void setName(
阅读全文
摘要:.1. 封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的2. 封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private
阅读全文
摘要:将对象作为返回值 代码: public class test02 { public static void main(String[] args) { mobile method = method(); System.out.println(method.brand); System.out.pri
阅读全文
摘要:两个引用指向同一个对象的内存图 //根据Phone类创创建一个名为p的对象 //格式:类名称 对象名 = new 类名称(); Phone p = new Phone(); System.out.println(p.brand);//null System.out.println(p.price);
阅读全文
摘要:一个对象的内存图 两个对象使用同一个方法的内存图 public static void main(String[] args) { //根据Phone类创创建一个名为p的对象 //格式:类名称 对象名 = new 类名称(); Phone p = new Phone(); System.out.pr
阅读全文
摘要:对象创建及使用 通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用 1.导包:也就是指出需要使用的类,在什么位置。 import包名称.类名称; import cn. itcast daye demel. Student 对于和当前类属于同一个包的情况,可以省略导包语句不写。 创建,
阅读全文
摘要:类和对象的关系 类的概念:类是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事务特征和行为特征来描述该类事物 属性(是什么):名字,体重,年龄,颜色 行为(做什么):走,跑,叫 (2)对象的概念:对象是一类事物的具体体现,对象是类的一个实例,必然具备该事物的属性和行为类与对象的关系 (1)
阅读全文
摘要:面向对象思想的概念和面向对象思想的举例面向过程思维:拿到一个问题时,第一步先做什么,第二步再做什么面向对象思维:1、分析这个问题里面有哪些对象2、分析这些类和对象应该具有哪些属性和方法3、分析类和类之间具体有什么关系面向对象是一个非常重要的思维,编程时应该择优考虑二、简单理解面向对象1、看到具体任务
阅读全文
摘要:数组作为方法参数传递地址 //数组作为方法参数—传递地址 public class DodeArrayParam { public static void main(String[] args) { int[] array={1,2,3,4}; System.out.println(array);/
阅读全文
摘要:求出数组中的最大值 举例 public static void main(String[] args) { int [] array = {5,15,30,20,10000,30,35}; int max = array[0]; for (int i = 1; i <array.length ; i
阅读全文
摘要:Java中获取数组长度方法:使用数组属性length来获取数组长度代码: public class ArrayLength { public static void main(String[] args) { String[][] data = new String[2][5]; System.ou
阅读全文
摘要:数组索引越界异常 如果访问数组元素的时候,索引编号并不存在,那么将会发生 数组索引越界异常 ArrayIndexOutOfBoundsException 原因:索引编号写错了。 解决:修改成为存在的正确索引编号。 int[] arr = {52,30,50}; System.out.println(
阅读全文
摘要:两个数组的内存图 int[] array = new int[3]; //动态初始值 System.out.println(array); //地址值 System.out.println(array[0]); System.out.println(array[1]); System.out.pri
阅读全文
摘要:java内存的划分 java 的内存需要划分成五个部分: 1.栈(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从栈内存当中消失。 2.堆(Heap):凡是new出来的东西,都在堆当中。 堆内存里
阅读全文

浙公网安备 33010602011771号