03 2020 档案
摘要:前言 本篇文章是String系列的第二篇(第一篇可参考String的那些事),文章的主要内容为:多种字符串拼接技术以及效率比较。 正文 字符串的不变性与字符串拼接的关系? 我们在String系列的第一篇文章中说过:String类是一个final类,这意味着String对象一旦被初始化就不会被改变。那
阅读全文
摘要:[toc] 前言 在阿里巴巴Java开发手册中,有下面这样的规定: 这篇文章我们就来深入探讨其中的原因。 正文 为什么结果如此不同? 我们先来看看前言中的反例会出现什么意料之外的结果: 仅仅是remove的元素不同,为什么会出现如此不同的结果呢?我们反编译上面报错的字节码文件可得: 通过这个反编译结
阅读全文
摘要:[toc] 前言 本篇文章是Map系列的第二篇( 第一篇可参考 "Java集合之Map" ),主要内容为:HashMap 底层实现原理是什么?HashMap的一些实现细节以及JDK8对HashMap做了哪些优化? 正文 HashMap是如何实现的? 在JDK1.8之前,HashMap是以数组加链表的
阅读全文
摘要:[toc] 正文 Map的特点? 通过Map接口的泛型我们可以看出:Map一次添加一对元素,存储的是键值对;而Collection接口一次添加一个元素。 Map接口中的key是唯一的。 Map的常见方法? 既然Map里面存储的是键值对,那么我们怎样取出Map集合中的所有元素呢?一共有下面两种方式:
阅读全文
摘要:[toc] 正文 Set的特点? 它与List( 关于List可以参考 "Java集合之List" )不同,它是一个不包含重复元素的collection(Set所具有的方法和Collection所具有的方法一致)。 它是无序的,但当向集合中存储元素的顺序与Set内部存储元素的顺序一致时就可能会出现有
阅读全文
摘要:[toc] 前言 本篇文章是集合框架的第二篇( 第一篇文章可参考 "集合框架(一)" ),主要内容为:List接口的特点、List接口的常用方法、List接口的常用子类。重点部分依旧会用红色字体标识。 正文 List的特点? jdk文档对List的描述中,首先映入眼帘的两个字就是"有序"。这个有序具
阅读全文
摘要:[toc] 前言 本篇文章是集合框架的第一篇,主要内容为:集合框架介绍、集合框架体系以及所共有的功能、迭代器。文章重点内容会用红色字体标识。 正文 集合框架概述? 集合从本质上来说其实就是一种容器,关于容器,我们之前已经学过数组、StringBuffer等... ...那为什么会出现"集合"这门技术
阅读全文
摘要:[toc] 题目一:完美的代价 问题描述: 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。(时间限制:1.0s,内存限制:512.0MB) 交换的定义是:交换两个相邻的字
阅读全文
摘要:[toc] StringBuffer的特点? StringBuffer,顾名思义,就是字符串缓冲区,它本质上就是一个用于存储数据的容器。我们知道数组也是一个用于存储数据的容器,那么StringBuffer与数组相比有什么特点呢? StringBuffer的长度是可变的。 StringBuffer可以
阅读全文
摘要:[toc] String的特点? 通过查看String类的源码我们得知:String类被final关键字修饰,这即是说明String类的特点就是:字符串对象一旦被初始化就不会被改变。注意:此处是字符串对象而不是字符串引用。也即是说: 我们需要注意所有对String的操作(包括增删改等)都是新建对象(
阅读全文
摘要:正文 异常是什么?Java如何描述异常? 异常,顾名思义就是指程序执行过程中出现的不正常情况。例如: class ExceptionDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.p
阅读全文
摘要:[toc] 前言 本篇文章是多线程系列的第三篇( 第二篇可参考 "多线程(二)" ),主要讲解:死锁、等待 唤醒机制、Lock和Condition。文章讲解的思路是:先通过一个例子来演示死锁的现象,再通过分析引出一系列的解决方案。同样,重点部分我都会用红色字体标识。 正文 死锁现象? 前一篇文章讲过
阅读全文
摘要:[toc] 题目一:矩阵乘法 问题描述: 给定一个N阶矩阵A,输出A的M次幂(M是非负整数)(时间限制:1.0s,内存限制:512.0MB,) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入、输出格式: 第一行是一个正整数N、M(1 arr = new ArrayList()
阅读全文
摘要:[toc] 前言 本篇文章是多线程系列的第二篇( 第一篇可参考 "多线程(一)" ),主要讲解:线程安全问题、同步、锁。文章讲解的思路是:先通过一个例子引出一系列问题,然后再通过多种方式尝试解决,最终引出解决方案。大家可以根据我的目录进行选择性地查看。文章的重点部分我都会用红色字体展示。 正文 如何
阅读全文
摘要:[toc] 内部类是什么?它有什么特点?有什么使用场景? 内部类,顾名思义就是定义在另一个类里面的类。就像下面这样: 通过编译上面的java文件我们发现最后总共产生了两个字节码文件:Outer.class和Outer$Inner.class。第一个很好理解,我们需要注意最后一个,因为完全有下面这种可
阅读全文
摘要:[toc] 题目一:分解质因数 问题描述: 求出区间[a,b]中所有整数的质因数分解。(时间限制:1.0s,内存限制:512.0MB,2 1) return false; else return true; } } key import java.util.Scanner; public class
阅读全文
摘要:[toc] 前言 本篇文章是多线程系列的第一篇,主要讲解一些基础知识:包括线程是什么、为什么要使用多线程、怎样使用。 正文 正文之前 首先我们要知道,并不是所有的语言都支持多线程技术。比如:在C++ 11以前,它是没有内置的多线程机制的,因此它必须调用操作系统的多线程功能来进行多线程程序设计( 详情
阅读全文
摘要:[toc] 题目一:十六进制转八进制 问题描述: 给定n个十六进制正整数,输出它们对应的八进制数。 输入、输出格式: 输入的第一行为一个正整数n (1二进制 for(int j = 0; j八进制 for(int m = 0; m 实现字符到数字的转化 num = (sb.charAt(m) '0'
阅读全文
摘要:[toc] 构造函数是什么?它有什么作用? 构造函数其实本质上就是一个函数,只不过这个函数比较特殊,它具有下面这些特点: 函数名与类名相同。 不用定义返回值类型。 没有具体的返回值。 那么这样的函数有什么作用呢,我们可以根据上面的特点写下面的代码来进行测试: 通过运行结果我们就可以推断出:构造函数就
阅读全文
摘要:[toc] 封装是什么? 首先我们思考一个问题:如何设计一个Person类? 分析:先抽象出这个类的一些属性和方法,Person类都具有姓名和年龄,都可以说话。 上面这段代码咋眼一看没有什么问题,但是当我们在创建对象给age属性赋值时就有问题了: 比如上面代码中的数据明显就是不符合实际的,那么这个时
阅读全文
摘要:[toc] 题目一:十进制转十六进制 问题描述: 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。(时间限制:1.0s,内存限制:512.0MB) 解决思路: 使用包装类的parse方法即可轻
阅读全文
摘要:前言 二胖知道"抽象"是面向对象的一大特征,而且他还听说过"面向接口编程"这一概念,Bill大神曾经还告诉他这一概念在后面的开发中很重要。所以二胖暗下决心一定要好好学习这一知识点。二胖感觉到抽象类和接口都可以体现出抽象这一特征,那么它们各自的特点以及两者的区别是怎样的? 正文 抽象类 什么是抽象类?
阅读全文
摘要:[toc] 前言 二胖学习完多态之后,他发现可以将之前学的封装、继承和接口的知识点也融合进来。二胖按照惯例也将这些知识点总结下来方便日后复习补充。 正文 为了更好地学习多态,我们需要先了解继承和接口。关于继承和接口,我都单独写过文章: " 面向对象之继承 " , " 面向对象之抽象类和接口 " ,欢
阅读全文
摘要:[toc] 题目一:杨辉三角形 问题描述: 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行:(时间限制:1.0s,内存限制:256.0MB,1 <= n <= 34) 1 1
阅读全文
摘要:[toc] 前言 二胖最近对面向对象特征之一的继承有点困惑,也无法找清楚前后知识点之间的联系。特别是当老师指着PPT上的一段代码问输出结果时,二胖更是丈二和尚摸不着头脑,就算看着答案,二胖也都会疑惑同样的内容为什么在这段代码中先输出而在另一段代码中又变成了后输出。二胖最后还是决定找好友Bill大神求
阅读全文
摘要:[toc] 题目一:字母图形 问题描述: 利用字母可以组成一些美丽的图形,下面给出了一个例子:(时间限制:1.0s,内存限制:256.0MB,1 i) System.out.println(s2.substring(s2.length() 1 i, 25) + s1.substring(0, m i
阅读全文
摘要:[toc] 前言 二胖学习完static关键字之后,综合了老师讲的内容,自己也查阅了一些文档之后想总结下相关的知识点方便自己后续的复习与巩固 正文 JVM眼中的static? 二胖从"Hello World程序"开始就知道了Java源文件是由一个一个的类组成的,他查阅了有关类加载过程的文档,知道了:
阅读全文
摘要:题目一:Fibonacci数列 问题描述: Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 解决思路: 我们可以先写一小段Fibonacci数列来总结规律:1,1,2,3,5,8,13,
阅读全文
摘要:前言 二胖在学习完了一些Java语言基础知识之后开始学习面向对象思想,二胖知道这一思想对后续的学习很重要并且二胖之前接触过C语言,他知道C语言是面向过程的,那这面向过程思想与面向对象思想之间有啥区别呢,这两者又是怎样进行演变的呢?二胖决定与班里的学霸小桂交流交流。 正文 以下为二胖与小桂之间的对话:
阅读全文
摘要:前言 本篇文章介绍classpath环境变量的配置和一个环境变量配置的技巧:临时配置path环境变量。 正文 classpath环境变量配置 在上完了"Hello World"这堂课后,二胖模仿Hello World程序写了一个类似的程序Demo.java(位于H:\ywwy\yehn目录下),内容
阅读全文
摘要:前言 初学Java不久的二胖在搭建Java开发环境一步就遇到问题,他不由得感叹:万事开头难啊!但感叹之后它还是鼓足了劲去努力解决它,二胖在电脑上Google了一番,最终环境是搭建成功了,但他心中对"环境变量配置"这一步还是有很多疑惑,思来想去,二胖决定向自己好友Bill大神求助。 正文 以下为二胖与
阅读全文
摘要:本项目来源地址:https://how2j.cn/k/hutubill/hutubill tutorials/710.html?p=67677 Github地址:https://github.com/CoolDownnll/projects 欢迎大家查看及交流! 这个项目是在昨年5月中旬完成的,虽说
阅读全文

浙公网安备 33010602011771号