Java基础
文章平均质量分 91
jcsyl_mshot
点滴生活,水落石出。
展开
-
类不能定义自身类的对象 C++和java的区别
在C++的类定义中,是不能够在类中定义自身类的对象的,但是可以定义自身类的指针对象和引用。class A{ public: A () { cout<<"Constructor method."<<endl; }; A aa;}; void main(){ A aaaaa;}以上代码编译提示错误,a’ : use...原创 2020-03-31 15:45:15 · 329 阅读 · 0 评论 -
java 基础知识点(二)
1.强制类型转换时的规则有哪些1.当对小于 int 的数据类型(byte,char,short)进行运算时,首先会把这些 类型的变量值强制转为 int 类型,对 int 类型的值进行运算,最后得到的值也是 int 类型的。因此,如果把 2 个 short 类型的值相加,最后得到的结果是 int 类型, 如果需要得到 short 类型的结果,就必须显示地运算结果转为 short 类型。例子: s...原创 2019-10-25 15:32:25 · 203 阅读 · 0 评论 -
jdk1.8 新特征
1.jdk7语法上1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头。// A 16-bit 'short' value:short aShort = (short) 0b1010000101000101;1.2 Switch语句支持string类型 1.3 Try-with-resource语句 注意:实现java.lang.AutoCloseable接口...原创 2018-05-24 16:25:32 · 240 阅读 · 0 评论 -
REMD ME.txt
1.秋招面经: https://www.nowcoder.com/discuss/61958?type=2&order=4&pos=2&page=22https://www.nowcoder.com/discuss/29890?type=2&order=4&pos=13&page=72.leetcode 题解:https://www.c...原创 2018-06-10 17:06:39 · 229 阅读 · 0 评论 -
深入浅出NIO之Selector实现原理
Java NIO 由以下几个核心部分组成: 1、Buffer 2、Channel 3、Selector之前进行socket编程时,accept方法会一直阻塞,直到有客户端请求的到来,并返回socket进行相应的处理。整个过程是流水线的,处理完一个请求,才能去获取并处理后面的请求,当然也可以把获取socket和处理socket的过程分开,一个线程负责accept,一个线程池负责处理请求。...原创 2018-08-27 12:55:53 · 392 阅读 · 1 评论 -
红黑树
红黑树是一种自平衡二叉查找树,红黑树是一种很有意思的平衡检索树;每次插入的时候都要进行计算,保证二叉树的平衡;如果有2的N次方数据量级,查询的时候只需要查询N次即可。 我们对任何有效的红黑树加以如下增补要求: 1.节点是红色或黑色。 2.根是黑色。 3.所有叶子(外部节点)都是黑色。 4.每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点...原创 2018-05-24 16:03:09 · 118 阅读 · 0 评论 -
枚举类 ENUM
1.使用场景和属性有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便enum和class、interface的地位一样,可以实现一个或则多个接口使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器使用enum定义、非抽象的枚举类默认使用final修饰,...原创 2019-08-02 22:52:40 · 247 阅读 · 0 评论 -
对象深拷贝与浅拷贝
背景知识:Java中的数据类型分为基本数据类型和引用数据类型。对于这两种数据类型,在进行赋值操作、用作方法参数或返回值时,会有值传递和引用(地址)传递的差别。Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。对象拷贝主要分为:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)。1.定义浅拷贝(Shallow...原创 2019-08-03 15:30:01 · 165 阅读 · 0 评论 -
对象上转型与接口回调
1.上转型对象若B是A的子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到类A声明的对象中时,那么就称对象a是子类对象b的上转型对象.上转型对象不能操作子类声明定义的成员变量(失掉了这部分属性),不能使用子类声明定义的方法(失掉了一些功能)和新增的属性。(通过动态绑定实现)上转型对象可以代替子类对象去调用子类重写的实例方法。如果子类重写的方法是实例方法,那么上转型对象调用重...原创 2019-08-03 15:52:47 · 942 阅读 · 0 评论 -
final 关键字
final 可以用来修饰类,变量和方法。1.当一个类被 final 修饰的时候,表示该类不能被继承。类中方法默认被final 修饰。2.当 final 修饰基本数据类型的变量时,表示该值在被初始化后不能更改;当 final 修饰引用类型的变量时,表示该引用在初始化之后不能再指向 其他的对象。注意:final 修饰的变量必须被初始化。可以在定义的时候初始化,也可以在构造函数中进行初始化。...原创 2019-07-28 11:05:31 · 108 阅读 · 0 评论 -
泛型编程
1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类...原创 2019-08-13 17:50:46 · 173 阅读 · 0 评论 -
JDK 源码中用到的设计模式
1.单例模式: java.lang.Runtime 。 Runtime 类封装了 Java 运行时的环境。 每一个 java 程序实际上都是启动了一个 JVM 进程, 那么每个 JVM 进程都是对应这一个 Runtime 实例, 此实例是由 JVM 为其实例化的。 每个 Java 应用程序都有一个 Runtime 类实例, 使应用程序能够与其运行的环境相连接。由于 Java 是单进程的,所以,在...原创 2018-05-05 16:13:37 · 579 阅读 · 0 评论 -
Java 中NIO和IO之间的区别
1.面向流与面向缓冲Java NIO 和 IO 之间第一个最大的区别是, IO 是面向流的, NIO 是面向缓冲区的。 Java IO 面向流意味着每次从流中读一个或多个字节, 直至读取所有字节,它们没有被缓存在任何地方。 此外, 它不能前后移动流中的数据。 在Java NIO中把数据读取到一个缓冲区中, 需要时可在缓冲区中前后移动。 这就增加了处理过程中的灵活性。 而且, 需确保当更多的数...原创 2018-05-05 15:45:31 · 178 阅读 · 0 评论 -
Java中Comparable和Comparator
一、Comparable简介 Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下:package java.lan...原创 2018-05-18 12:57:28 · 159 阅读 · 0 评论 -
Java 内部类
内部类,定义在一个类的内部的类。在java中类是单继承的,一个类只能继承另一个具体类或抽象类,因为在多继承中,当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清。使用内部类的原因是: 1. 内部类一般只为其外部类使用; 2. 内部类提供了某种进入外部类的窗户; 3. 也是最吸引人的原因,每个内部类都能独立地继承一个接口,而无论外部类是否已经继承了某个接口。因此,内部...原创 2018-04-09 10:53:42 · 134 阅读 · 0 评论 -
JAVA IO
Java IOJava 所有的文件操作类都在Java.io 包中。 注意五个类和一个接口。File OutputStream InputStream Writer Reader 一个接口是serializable。Filepublic File(String pathname)// file 类构造方法要使用一个File类,需要传递一个文件路径import java.i...原创 2018-04-17 11:30:33 · 140 阅读 · 0 评论 -
Java NIO
在 NIO 中有几个核心对象:缓冲区(Buffer)、通道(Channel)、选择器(Selector)。一. 缓冲区(Buffer)缓冲区实际上是一个容器对象, 其实就是一个数组, 在 NIO 库中, 所有数据都是用缓冲区处理的。 在读取数据时, 它是直接读到缓冲区中的; 在写入数据时, 它也是写入到缓冲区中的; 任何时候访问 NIO 中的数据, 都是将它放到缓冲区中**。 在 NI...原创 2018-04-17 19:51:46 · 143 阅读 · 0 评论 -
生产者/消费者问题的多种实现方式
1.使用阻塞队列实现// Producer Class in javaclass Producer implements Runnable { private final BlockingQueue sharedQueue; public Producer(BlockingQueue sharedQueue) { this.sharedQueue = sh...原创 2018-05-08 20:15:11 · 181 阅读 · 0 评论 -
Java 阻塞队列
阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。 这两个附加的操作是: 在队列为空时, 获取元素的线程会等待队列变为非空。 当队列满时, 存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景, 生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。 阻塞队列就是生产者存放元素的容器, 而消费者也只从容器里拿元素。ArrayBlockingQueue...原创 2018-04-02 13:13:06 · 132 阅读 · 0 评论 -
自动拆箱与装箱
一般来说基础变量(int)赋值给Integer对象将自动装箱(Auto Boxing)并为Integer对象分配堆空间。因此即使基础变量值一样,封装类对象指向不同地址。对JVM为了节省空间, 当Integer的值落在-128~127之间时,如Integer i1 = 2; Integer i2 = 2;此时JVM首先检查是否已存在值为2的Integer对象。如果是,则i2直接是引用已存在对象,...原创 2018-04-25 17:55:26 · 111 阅读 · 0 评论 -
Socket网络编程
Socket网络编程NIO中selector用epoll实现 Socket套接字:网络上具有唯一标识的IP地址和端口组合在一起才能构成唯一能识别的标识符套接字。 Socket原理机制:通信的两端都有Socket、网络通信其实就是Socket间的通信、数据在两个Socket间通过IO传输 Java中基于TCP实现网络通信的类:客户端的Socket类、服务器端的ServerSocket类...原创 2018-04-25 22:01:00 · 106 阅读 · 0 评论 -
Exception
Exeception Throwable是所有Java程序中错误处理的父类,有两种子类:Error和Exception。 Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。比如:内存资源不足(outofmemoryerror、stackoverflowerror...原创 2018-04-25 22:12:44 · 273 阅读 · 0 评论 -
Java 基础知识点(一)
1.标识符的命名规则标识符只能由数字、字母(a-z、A-Z)、下划线(_)和$组成,并且第一 个字符不能为数字。2.instanceof关键字的作用用法:对象 A instanceof 类 B。 instanceof 通过返回一个布尔值来指出,这个对象是否是这个特定类或者是 它的子类的一个实例。注意:如果对象 A 为 null,则返回 false。3.什么是不可变类不可...原创 2018-05-04 23:46:15 · 406 阅读 · 0 评论 -
java 多态的实现原理——重写 重载
java 多态的实现原理有 2 种方式来实现多态, 一种是编译时多态, 另外一种是运行时多态; 编译时多态是通过方法的重载来实现的, 运行时多态是通过方法的重写来实现的。方法的重载, 指的是同一个类中有多个同名的方法, 但这些方法有着不同 的参数。 在编译时就可以确定到底调用哪个方法。方法的重写, 子类重写父类中的方法。 父类的引用变量不仅可以指向父类 的实例对象, 还可以指向子类...原创 2018-05-05 09:44:47 · 2171 阅读 · 0 评论 -
接口与抽象类的区别
1.语法层面上的区别1) 抽象类可以提供成员方法的实现细节(注: 可以只包含非抽象方法) ,而接口中只能存在 public abstract 方法, 方法默认是 public abstract 的,但是, java8 中接口可以有 default 方法;2) 抽象类中的成员变量可以是各种类型的, 而接口中的成员变量只能是 public static final 类型的;3) 抽象类可...原创 2018-05-05 09:54:44 · 110 阅读 · 0 评论 -
Java 类和成员的访问控制
JAVA 和 C/C++的区别1.运行过程的不同。 JAVA 源程序经过编译器编译成字节码文件, 然后由 JVM解释执行。 而 C++/C 经过编译、 链接后生成可执行的二进制代码。 因此 C/C++的执行速度比 JAVA 快。 2.跨平台性。 JAVA 可以跨平台, 而 C++/C 不可以跨平台。 3.JAVA 没有指针, C++/C 有指针。 4.JAVA 不支持多重继承, 但是可以...原创 2018-05-05 15:16:32 · 2003 阅读 · 0 评论 -
java序列化与反序列化系列问题
1)Java中的Serializable接口和Externalizable接口有什么区别? 这个是面试中关于Java序列化问的最多的问题。我的回答是Externalizable 接口提供了两个方法 writeExternal()和readExternal()。这两个方法给我们提供了灵活处理Java序列化的方法,通过实现这个接口中的两个方法进行对象序列化可以替代Java中默认的序列化方法。正确的实...原创 2018-05-18 12:29:07 · 302 阅读 · 0 评论 -
static
C++中static关键字的的使用函数体内 static 变量的作用范围为该函数体,不同于 auto 变量, 该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问在模块内的static 函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内在类的static 成员变量属...原创 2018-03-27 17:21:06 · 152 阅读 · 0 评论