Java基础
文章平均质量分 73
云水冰
二次元死肥宅
展开
-
Java 多个List合并
Java 多个List合并原创 2023-01-04 12:07:53 · 4926 阅读 · 0 评论 -
基于比较的七大排序算法
排序算法+练习题1.时间复杂度O(n^2)级排序算法1.1 冒泡排序1.时间复杂度O(n^2)级排序算法1.1 冒泡排序冒泡排序,入门级算法,通常情况下,有三种写法:1.首先是基础写法,一边比较一边向后两两交换,将最大值/最小值冒泡到最后一位:int temp = -1;for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] &原创 2021-03-04 13:06:01 · 2652 阅读 · 0 评论 -
必要掌握的二叉树题目(附OJ链接+Java参考代码)
必须掌握的二叉树题目1.二叉树前序遍历OJ链接描述示例代码递归迭代2.二叉树中序遍历OJ链接描述示例递归迭代3.二叉树后序遍历OJ链接描述示例递归迭代4.相同的树OJ链接描述示例代码5.另一个树的子树OJ链接描述示例代码6.二叉树的最大深度OJ链接描述示例代码7.判断一棵二叉树是否是平衡二叉树OJ链接描述示例代码1.二叉树前序遍历递归与非递归都得会写,建议去OJ自己测一下,如果只是复习,直接看下面代码也行。思路就不写了,OJ链接里有很多优秀的题解,写的通俗易懂有深度。下面的题目同样如此。OJ链接原创 2020-11-18 00:08:59 · 297 阅读 · 2 评论 -
分别用递归和非递归方式实现二叉树线序、中序和后续遍历(必须掌握) --代码基本来自《程序员代码面试指南》
过程和代码来自左神的《程序员代码面试指南》,基本相同,只有细微差别。非常推荐有条件的去购买读一下,很好的一本书。分别用递归和非递归方式实现二叉树先序、中序和后序遍历1.先序遍历 递归2.中序遍历 递归3.后序遍历 递归4.先序遍历 非递归5.中序遍历 非递归6.后序遍历 非递归假设节点类如下:public class Node { public int value; public Node left; public Node right; public Node.原创 2020-11-13 22:02:36 · 331 阅读 · 0 评论 -
继承的设计技巧 《Java核心技术 卷 I》
本文摘自《Java核心技术 卷 I》第5章继承继承设计技巧1.将公共操作和字段放在超类中2.不要使用受保护的字段3.使用继承实现“is-a”关系4.除非所有继承的方法都有意义,否则不要使用继承5.再覆盖方法时,不要改变预期的行为6.使用多态,而不要使用类型信息7.不要滥用反射1.将公共操作和字段放在超类中2.不要使用受保护的字段有些程序员认为,将大多数的实例字段定义为protected是一个不错的注意,“以防万一”,这样子类就能够在需要的时候访问这些字段。然而,protected机制并不能够带来.原创 2020-11-12 16:16:44 · 113 阅读 · 1 评论 -
类设计技巧 《Java 核心技术 卷I》
本文摘自《Java 核心技术 卷I》第四章 对象与类。个人认为是个很必要的知识,故在博客上做个记录。如果有条件,建议买上一本读一读,很有收获。类设计技巧1.一定要保证数据私有2.一定要对数据进行初始化3.不要在类中使用过多的基本类型4.不是所有的字段都需要单独的字段访问器和字段更改器5.分解有过多指责的类6.类名和方法名要能够体现它们的职责7.优先使用不可变的类1.一定要保证数据私有 这是最重要的;绝对不要破坏封装性。有时候,可能需要编写一个访问器方法或更改器方法,但是最好还是保持实例字段的私.原创 2020-11-05 17:59:22 · 62 阅读 · 0 评论 -
Java的一些基本术语解释 JDK、JRE、SE、EE、ME...
原自Java核心技术 卷I术语名缩写解释Java Development Kit(Java开发工具包)JDK编写Java程序的程序员使用的软件Java Runtime Environment(Java运行时环境)JRE运行java程序的用户使用的软件Server JRE(服务器JRE)–在服务器上运行Java程序的软件Standard Edition(标准版)SE用于桌面或简单服务器应用的Java平台Enterprise Edition(企业版原创 2020-11-03 23:36:48 · 581 阅读 · 0 评论 -
Java面向对象总结性demo -- 图书管理
Java面向对象总结性项目 -- 图书管理简介核心需求类的设计1.创建图书相关的类2.创建操作相关的类3.创建用户相关的类4.进行整合5.实现具体的每个Operation简介这个demo是对类、抽象类、封装、继承、多态、接口等进行的一个简单代码练习,可以加深对前述知识的掌握与理解。建议只看一下框架搭建,不要看Operation的实现,写的很差!核心需求1.简单的登录2.管理端整理书籍(该功能为可扩展功能)查询书籍增加书籍删除书籍打印书籍列表退出3.用户端查询书籍借阅书籍原创 2020-10-29 22:08:48 · 320 阅读 · 0 评论 -
String、StringBuilder与StringBuffer的区别
String、StringBuilder与StringBuffer的区别可变性线程安全性性能使用场景可变性String类中使用final关键字的数组(根据版本有所区分,JDK8及以前用char数组,之后用byte数组)来保存字符串,所以String对象是不可变的。StringBuffer和StringBuilder都继承了AbstractStringBuilder类,在AbstractStringBuilder中也是使用数组来保存字符串,但是没有用final修饰所以这两种对象都是可变的。线程安全性原创 2020-10-27 21:35:40 · 154 阅读 · 0 评论 -
Java 字节数组与字符串的相互转换
字节数组与字符串的相互转换字节数组转字符串字符串转字节数组字节数组转字符串 //字节数组转字符串 byte[] data = {104, 101, 108, 108, 111}; //1.整体转换 //传递一个参数,即字节数组名 String str1 = new String(data); System.out.println(str1); //2.指定区间转换 //传递三个参数,即字节原创 2020-10-27 20:03:39 · 4083 阅读 · 0 评论 -
Java字符数组与字符串的相互转换
Java中字符数组与字符串的相互转换字符数组转字符串字符串转字符数组字符数组转字符串 char[] chs = {'h', 'e', 'l', 'l', 'o'}; //传递一个参数,即字符数组名字 String str1 = new String(chs); System.out.println("全部转换的结果是:"); System.out.println(str1); //传递三个三叔,即字符数组名字, 开原创 2020-10-27 19:55:12 · 7364 阅读 · 4 评论 -
ArrayList 部分源码解析+方法测试 JDK11
动手检测一下,那些ArrayList的部分常用方法认识一下ArrayList构造方法版本:JDK 11可以直接看API帮助文档,可以从这里下:https://pan.baidu.com/s/1zZNRNprhz0RxGd5xbYcyxA提取码:y8e4方法描述ArrayList()构造一个初始容量为10的空列表。ArrayList(int initialCapacity)构造具有指定初始容量的空列表。ArrayList(Collection<? exte原创 2020-10-22 21:46:14 · 859 阅读 · 0 评论 -
面向对象的特征
面向对象的特征抽象封装继承多态抽象抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。封装封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。继承继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。多态多态性是指允许不同子类型的对象对同一消息做出不同的响应,也就是用同样的对象引用调用同样的方法但是做了不同的的事情。原创 2020-10-18 19:52:41 · 147 阅读 · 1 评论 -
Arrays工具类部分常用方法 Java
Arrays工具类部分常用方法部分方法源码及测试asList(T... a)binarySearch (int[] a, int key)copyOf(int[] original, int newLength)copyOfRange(int[] original, int from, int to)fill (int[] a, int val)mismatch(int[] a, int[] b)sort(int[] a)toString(int[] a)stream(int[] a)版本:JDK 11原创 2020-10-18 17:12:25 · 341 阅读 · 0 评论 -
Java中数组遍历的三种方式(以整数数组为例)
Java中数组遍历的三种方式基本for循环foreachArrays.toString()完整代码首先,创建一个数组,以整型数组为例,长度50,值为下标+1public static void main(String[] args) { int[] arr = new int[50]; for (int i = 0; i < arr.length; i++) { arr[i] = i + 1; }}基本for循环基本f原创 2020-10-16 15:06:40 · 3494 阅读 · 0 评论 -
Java 运算符
运算符1.算数运算符2.关系运算符3.逻辑运算符4.位运算符5.移位运算符6.条件运算符7.赋值运算符1.算数运算符假设:int x = 20;int y = 10;操作符描述例子+两侧的值进行相加x + y 为 30-前者的值减去后者的值x - y 为10*两侧的值进行相乘x * y 为200/前者的值除以后者的值x / y 为2%前者的值对后者的值取余x % y 为0++操作数的值自加一x++后x的值为21–原创 2020-10-12 00:10:42 · 69 阅读 · 0 评论 -
Java基本数据类型
若有错误,欢迎指正。Java基本数据类型一共有八种:byte、short、int、long、float、double、char、boolean名称所占字节数据范围默认值byte(字节型)1(-2^7, 2^7 - 1)0short(短整型)2(-2^13, 2^13 - 1)0int(整型)4(-2^31, 2^31 - 1)0long(长整型)8(-2^63, 2^63 - 1)0float(单精度浮点型)4(1.4E-45原创 2020-10-11 23:10:02 · 61 阅读 · 0 评论