自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 算法复习——回溯法重点问题

基本概念回溯算法是具有限界函数的深度优先搜索。具有系统性、跳跃性。常用的两种剪枝函数:约束函数、限界函数解的表现形式一般回溯算法,可以作为一种系统的搜索方法应用到一类搜索问题当中,这类问题的解由满足事先定义好的某个约束的向量(x1, x2, . . . , xi)组成。这里i是0到n之间的某个整数,其中n是一个取决于问题阐述的常量。在已经提到的两种算法—-3着色和8皇后问题中,i是固定不变的。基本思想在回溯法中,解向量中每个xi都属于一个有限的线序集Xi; 因此,回溯算法按词典序考虑笛卡儿积X1

2021-12-21 19:45:27 498

原创 算法复习——贪心法重点问题

一、会场安排问题问题描述:  假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的 。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。)编程任务:  对于给定的k 个待安排的活动,编程计算使用最少会场的时间表。数据输入:  由文件input.txt 给出输入数据。第一行有1 个正整数k,表示有k 个待安排的活动。接下来的k 行中,每行有2 个正整数,分别表示k 个待

2021-12-21 17:00:24 432

原创 算法复习——分治法重点问题

一、众数问题发过的8giggl问题描述:  给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该元素的重数。多重集S 中重数最大的元素称为众数。  例如,S={1,2,2,2,3,5}。多重集S 的众数是2,其重数为3。编程任务:  对于给定的由n 个自然数组成的多重集S,编程计算S 的众数及其重数。数据输入:  输入数据由文件名为input.txt 的文本文件提供。文件的第1 行多重集S 中元素个数n;接下来的n 行中,每行有一个自然数。结果输出:  程序运行结束时,将计

2021-12-21 11:13:05 1122

原创 算法复习——动态规划重点问题

# 基本思想:将带求解问题分成许多个阶段或若干个子问题,按顺序求解各个子问题,前一个子问题的解为后一个子问题的解提供了有用的信息,采取自底向上的方式递推求值,并把中间结果存储起来。基本要素:最优子结构和重叠子问题。与分治法相比:共同点:动态规划与分治方法相似,通过合并多个子问题的解来解决整体问题。区别:分治法是把大问题分解成一些相互独立的子问题,递归的求解这些子问题然后将他们合并来得到整个问题的解动态规划是通过组合子问题的解来解决整个大问题。各个子问题不是独立的,也就是各个子问题包含

2021-12-19 16:31:31 339

原创 算法复习——排序问题

一、选择排序基本思想:设 A[1..n]为包含n个元素的数组。首先,我们找到数组中的最小元素,将它存在A[1]。接着,我们从剩下的n-1个元素中找到最小的元素,将它存在 A[2]。重复以上过程,直到整个数组中第二大的元素存在A[n-1],则算法停止。用动图来表示以下过程:稳定性:不稳定。时间复杂度:O(n2)适用于元素个数较少的排序。伪代码如下:input:包含n个元素的数组A[1...n]output:从小到大排序的数组A[1...n]1、for i.

2021-12-18 21:06:50 591

原创 Java的File类表示什么?有什么作用?

File类:代表文件和目录。作用:

2021-11-15 19:52:21 209

原创 什么是对象的序列化和反序列化?Java对此提供了哪些支持?

序列化:将实现了Seriallizable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象,后者又称反序列化。Java提供了ObjectInputStream类和ObjectOutputStream类完成对象的序列化和反序列化。序列化步骤:1)创建一个对象输出流:可以包装一个其他类型的输出流。2)通过对象输出流的writeObject()写对象。注意使用类型转化,转换为相应的类的对象。反序列化步骤:1)创建一个对象输入流:可以包装一个其他类型的输出流。

2021-11-15 19:46:53 55

原创 Java中的过滤流(流的装配)有什么作用?请举例说明常用的过滤流。

1、BufferedReader:用于缓存字符流,可以一行一行的读import java.io.*;public class inDataSortMaxMinIn { public static void main(String args[]) { try{ BufferedReader keyin = new BufferedReader(new InputStreamReader(Sy

2021-11-15 19:35:50 129

原创 字节流与字符流的转化是怎样的?Java对此提供了哪些支持?

字节流与字符流的转化Java提供了InputStreamReader类和OutputStreamWriter类为字节流和字符流之间实现相互转换。InputSreamReader用于将一个字节流中的字节解码成字符:InputStreamReader(InputStream in):用默认字符集创建一个InputStreamReader对象InputStreamReader(InputStream in,String CharsetName):接收已指定字符集名的字符串,并用该字符创建对象。

2021-11-15 19:30:37 139

原创 字节流InputStream和OutputStream的子类分别有哪些?请举例说明其使用场景。与其对应的字符流分别有哪些?

InputStream的子类FileInputStream 文件流PipedInputStream 管道输入流:读取管道内容。多和PipedOutputStream一起用于多线程通信。ObjectInputStream 用来恢复被序列化的对象ByteArrayInputStream 包含一个内存缓冲区,字节从中取出。SequenceInputStream 多种输入流的逻辑串联,从第一个输入流读取,直到最后一个输入流。FilterInputStream 过滤流,在读写数据的同时还可以对数据..

2021-11-15 19:25:57 162

原创 Java中流的分类有哪些?

不同的评判标准下,流有不同的分类。流动方向输入流:如System.in是一个InputStream类型输入流输出流:如System.out 是一个PrintStream类型输出流读取类型字节流:如System.in是一个InputStream类型字节流字符流:如new InputStreamReader(System.in)是一个字符流对象发生的源头节点流:直接操作目标设备对应的流,如文件流,标准输入输出流过滤流:继承带有关键字Filter的流,用于包装操作节点流,方便读

2021-11-15 19:16:50 1729

原创 仿照例15.5,编写基于UDP数据报的多客户/服务器通信程序。

客户端:import java.io.*;import java.net.*;public class QuoteClient {public static void main(String[] args) throws IOException{ if(args.length!=1){ //如果启动的时候没有给出Server的名字,那么打印出错信息并退出 System.out.println("Usage:java QuoteClient <hostname>

2021-11-15 18:11:12 765

原创 仿照例15.4,编写基于TCP Socket的多客户/服务器通信程序。

服务器主线程import java.io.*;import java.net.*;public class MultiTalkServer{ static int clientnum=0; //静态成员变量,记录当前客户的个数 public static void main(String args[]) throws IOException { ServerSocket serverSocket=null; boolean listening=true;

2021-11-15 18:08:39 215

原创 基于TCP Socket的C/S通信与基于UDP数据报的C/S通信有哪些区别?Java分别提供了哪些支持?

TCPSocket通讯:网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个 双向链路的一端称为一个Socket。Socket通常用来实现客户方和服 务方的连接。Socket是TCP/IP协议的一个十分流行的编程接口,一 个Socket由一个IP地址和一个端口号唯一确定。UDP :DatagramSocket与DatagramPacketDatagramSocket:用于发送或接收数据报,是数据报投递服务的一个发送或接收点。DatagramPacket:用来表示一个数据报。.

2021-11-15 18:05:07 652

原创 Java提供了哪些同步机制来实现互斥?

Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized,而另一个是 JDK 实现的 ReentrantLock。synchronizedsynchronized可以作为函数的修饰符,也可作为函数内的语句。它可以作用于instance变量,对象引用(object reference),static函数和类名称字面常量(class literals)。一、synchronized作函数修饰符二、synchronized同步程序块三、s

2021-11-14 19:23:31 242

原创 volatile关键字的作用

1、保证该变量对所有线程的可见性可见性:当一个线程修改了这个变量的值,volatile 保证了新值能立即同步到主内存,同时其他线程每次使用前都会从主内存读取,从而新值对于其他线程来说是可以立即得知的。但普通变量做不到这点,普通变量的值在线程间传递均需要通过主内存来完成。volatile拥有特殊的访问规则:(1)使用前必须先从主内存刷新最新的值;(2)修改后必须立刻同步回主内存中。2、禁止指令重排序优化为了尽可能的减小内存操作速度远慢于 CPU 运行速度所带来的 CPU 空置的影响,虚

2021-11-14 18:57:12 312

原创 FutureTask类有什么作用?它实现了哪些接口?Callable接口和Runnable接口有什么不同?

一个可取消的异步计算。FutureTask提供了对Future的基本实现,可以调用方法去开始和取消一个计算,可以查询计算是否完成并且获取计算结果。只有当计算完成时才能获取到计算结果,一旦计算完成,计算将不能被重启或者被取消,除非调用runAndReset方法。除了实现了Future接口以外,FutureTask还实现了Runnable接口,因此FutureTask交由Executor执行,也可以直接用线程调用执行(futureTask.run())。Callable接口和Runnable接口有什么不.

2021-11-14 18:48:20 527

原创 finally子句的作用

是这个组合语句的统一出口,一般用来进行一些善后清理操作,例如清理资源、释放连接、关闭文件、管道流等操作。它是可选的部分,但一旦选定,必定执行。

2021-10-27 19:33:17 213

原创 异常中的throws声明与throw语句的区别是什么?请举例说明。

throws 关键字用于声明异常,其位置是方法头部的最后,方法体开始的 { 之前。throw 关键字则用来抛出异常,其位置是方法体中。throw和throws关键字之间的联系:如果在某方法中使用throw抛出了某种unchecked exception而该throw语句并未使用 try-catch结构进行异常处理,则throw语句所在的方法必须使用throws关键字进行该异常类的声明,否则产生编译错误。...

2021-10-27 19:31:15 106

原创 简述异常处理的两种方式,并举例说明区别。

声明抛出处理1、显式声明抛出2、隐式异常声明程序捕获处理

2021-10-27 19:26:51 252

原创 简述StackOverflowError和OutOfMemoryError两类错误的发生情形和原因。

StackOverflow原因:线程调用生成的栈桢深度超过了虚拟机允许的深度情形:1、递归可能造成StackOverflowError2、不断创建线程可能造成StackOverflowErrorOutOfMemoryError原因:内存不够,发生了内存溢出情形:1、栈的深度(大小类似于弹夹深度)可以自动扩展,扩展时无法申请到足够的内存2、如果在堆中没有内存完成实例分配,并且堆也无法再扩展时3、当方法区无法满足内存分配需求时4、当常量池(方法区的一部分)无法再申请到

2021-10-27 19:20:08 438

原创 Throwable的子类。简述Java Error类与Exception类的区别。

Throwable的子类Error: 致命异常。标识系统发生了不可控的错误。程序无法处理,只能人工介入。例如, 虚拟机产生的错误StackOverflowError、OutOfMemoryError。Exception: 非致命异常。程序可处理。分为受编译器检测的checked异常(受检异常)和不受编译器检测的unchecked异常(非受检异常)。区别:Error:程序无法处理的系统错误,编译器不做检查;(程序无法处理的错误)属于JVM需要负担的责任。Exception:程序可以处理

2021-10-23 11:28:23 161

原创 举例说明运算符instanceof的使用场景

instanceof:是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。public interface A {} public class B implements A{ } public class C extends B{}public class InstanceofTest3 { public static void main(String[] args) { A a = n

2021-10-18 20:11:42 204

原创 使用接口改写例6.8中的程序

//6.8public abstract static class Shape { protected double x,y,z; //子类可见 //抽象方法 abstract public double getArea(); abstract public double getPerimeter(); //抽象类可以有构造方法,初始化从父类继承的实例变量 public Shape(double x,dou.

2021-10-18 20:02:06 89

原创 谈谈抽象类与接口的异同以及两者的使用场景。

2021-10-18 19:30:33 69

原创 Java中的运行时多态的含义是什么?有什么作用?请举例说明

运行时的多态:方法覆盖实现(子类覆盖父类方法)父类的引用指向子类对象,调用的方法子类的方法//父类class A { void fun() { System.out.println(“I am A”); } } //A的子类Bclass B extends A { void fun() { System.out.println(“I am B”); } }

2021-10-18 19:25:32 109

原创 谈谈组合与继承的区别以及两者的使用场景

1.组合(has-a)关系可以显式地获得被包含类(继承中称为父类)的对象,而继承(is-a)则是隐式地获得父类的对象,被包含类和父类对应,而组合外部类和子类对应。2.组合关系在运行期决定,而继承关系在编译期就已经决定了。3.组合是在组合类和被包含类之间的一种松耦合关系,而继承则是父类和子类之间的一种紧耦合关系。4.当选择使用组合关系时,在组合类中包含了外部类的对象,组合类可以调用外部类必须的方法,而使用继承关系时,父类的所有方法和变量都被子类无条件继承,子类不能选择。5.最重要的一点,使用继承关系时

2021-10-18 19:20:42 2011

转载 如何实现两个对象之间互发消息,请举例说明。

class Src{ int s; public Src(int _s){//构造函数,保证s的非负 if(_s>=0) s = _s; else s=0; } public void change(Dis d){//设计一个特殊的方法来改变s的值,每次改变都会给Dis对象发通知 for(int a=1;a<5;a++) { d.get(); ..

2021-10-18 19:11:25 239

原创 实验:利用IDE的debug功能给例6.4和例6.5的new语句设置断点,使用单步调试(step into/step over)跟踪子类对象实例化(初始化)的执行顺序,并总结该过程。

//例6.4:显式使用super调用父类的构造方法class AddClass { private int x=0,y=0,z=0; AddClass (int x) { this.x=x; } AddClass (int x,int y) { this(x); this.y=y; } AddClass (int x,int y,int z) { this(x,y); this.

2021-10-18 19:07:47 92

原创 组合、重载、覆写

今天学会了插入代码段~开心~组合使用多个已有的对象组合为一个功能更加复杂强大的新对象。重载方法名称相同,参数类型或个数不同编译器视角: 方法签名=方法名称+参数类型+参数个数 组成唯一键class StuManage { public int getScore(){ return 3; } public int getScore(int i){ return i; } /*public long

2021-10-10 17:50:20 102

原创 Java的访问控制修饰符

1.默认访问修饰符:对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。2.private:被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private。声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。3.protected:对于类定义而言,可以被同包中的类和所有子类访问(子类和父类可以不在同一个包中),但对于对象而言,只能被同一个包的类...

2021-10-10 17:23:52 124

原创 Java数组元素类型为基本类型和引用类型时,有什么不同?

将数组整体看成一个对象,通过数组引用进行相应的操作: float[] fl, f2; //数组引用声明 fl = new float[10]; //数组引用与新创建的数组对象相关联 f2 = f1; //引用赋值,f2和f1引用同一个数组对象 Java中数组的下标从0开始,如果数组越界,产生的异常为:IndexOutOfBoundsException (它继承RuntimeException) ...

2021-10-07 13:19:26 108

原创 Java中float[10] arr语句

错误,不可以在方括号内指定数组大小一维数组的声明格式类型标识符 数组名[];(合法但不推荐)类型标识符[] 数组名;例如: int [ ] arr; String [ ] example; myClass [ ] mc ; ...

2021-10-07 13:15:05 148

原创 Java中final修饰符的作用

final修饰属性,则属性为常量; 例:final int NUM = 20; NUM = 30; // 编译错误如果修饰方法,则该方法在子类当中不能被覆盖(见多态一节),可防止任何继承类修改此方法,保证了程序的安全性和正确性。例:class Parent { public final void method1(){}//这个方法不能被子类覆盖 }class Child extends Parent { public final voi...

2021-10-07 13:11:40 117

原创 类的static字段与非static字段的区别及使用static修饰符的场景

用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。 《Java开发手册》强制使用类名(而不是该类的对象引用)访问静态方法和静态变量。输出结果:5 2静态数据成员仅在类加载时进行初始化,且只执行一次初始化static修饰的...

2021-10-07 13:07:34 264

原创 对象初始化顺序

创建对象时的初始化顺序:系统会对数据成员进行默认初始化执行数据成员定义处的初始化语句调用构造方法为数据成员指定初值输出结果: 0 8

2021-10-07 12:59:11 64

原创 对象与对象引用的区别及对象作为参数传递的特点

1. 创建对象: new FighterPlane(); // 对象分配在堆heap上2. 声明一个对象引用:FighterPlane fp; // fp作为局部变量分配在栈stack上 fp也称为引用变量(Reference Variable) 3. 初始化对象引用: fp = new FighterPlane(); // fp指向实际对象实质是将新创建的FighterPlane对象的首地址赋给对象引用...

2021-10-07 12:54:26 339

原创 Java语言跳出多重循环的语句

Java语言提供了4种转移语句:break,continue,return和throw。break语句可以独立使用,而continue语句只能用在循环结构的循环体中。break:break语句通常有下述不带标号和带标号的两种形式:break;(跳出本层循环)break lab; (跳出多重循环的外层循环)其中:break是关键字;lab是用户定义的标号。break lab语句用在循环语句中,必须在外循环入口语句的前方写上lab标号,可以使程序流程退出标号所指明的外循环。 ..

2021-09-21 20:14:25 463

原创 逻辑运算符&和&&的区别及逻辑运算符&与位运算符&的区别

逻辑运算符&和&&的区别:&和&&得到的boolean值结果一样,都是并且的意思,但&既是逻辑运算符,也是位运算符;&&只是逻辑运算符。&不具有短路效果,即左边false,右边还会执行;&&具有短路效果,左边为false,右边则不执行。逻辑运算符&与位运算符&的区别:逻辑运算符只能针对boolean类型进行逻辑运算 ,位运算符可以对数值进行逻辑运算。逻辑运算符存在短路的现象,即前边

2021-09-21 20:04:19 986

原创 int与Integer的区别及相互转化

int 属于普通数据类型,Integer是 int 所对应的包装类。int转Integer:int a = 1204;Integer A = new Integer(a);或Integer A = Integer.valueOf(a);Integer转int:Integer A = new Integer(1204);int a = A.intValue();

2021-09-21 19:59:34 249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除