自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 第18章 Java I/O系统

新I/O(nio)所使用的的结构更接近于操作系统执行I/O的方式:通道和缓冲器。缓冲器作为我们与通道交互的媒介,我们可以通过缓冲器从通道中获取数据,也可以通过缓冲器将数据发送给通道。唯一直接与通道交互的缓冲器是ByteBuffer,但是无法读取或输出对象,字符串对象也不行。“big endian”(高位优先)将最重要的字节存放在地址最低的存储器单元,而"little endian"(低位优先)将最重要的字节存放在地址最高的存储器单元,ByteBuffer以高位优先的方式存储数据。ps:据Jargon .

2020-07-30 21:57:20 98

原创 第17章 容器深入研究

迭代器的指针指向元素位置之前: public static void test01() { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); // 初始化指针指向第0个元素(元素从0开始计数)之前(默认): // ListIterator<String&.

2020-07-29 23:26:57 186

原创 第16章 数组

java支持创建持有泛型的数组对象: public static void test04() { class Peel<T> { } class Banana { } class Apple { } // 创建泛型数组: Peel<Banana>[] peels = new Peel[10]; // 可以放Peel&l.

2020-07-28 20:58:18 198

原创 第15章 泛型

具有private构造器的类在该类外部不能new对象,也不能在外部被继承。内部类中使用"外部类类名.this"表示外部类的this。对于一个static方法而言,无法访问泛型类的类型参数:class GenericSetter<T> { // 编译错误,static方法无法访问泛型类的类型参数: static void set(T arg) { System.out.println("GenericSetter"); }}如果static方.

2020-07-28 12:17:15 172

原创 第14章 类型信息

使用类名.class获取类的Class引用时,不会触发类的加载。类的加载只发生在访问其静态方法(构造器隐式地的是静态的)或者访问非常量静态域时,其中常量静态域指的是编译期常量,它用static final修饰并且显式给定了初始值。import java.util.Random;public class Test18 { public static void main(String[] args) throws ClassNotFoundException { test01(.

2020-07-26 20:06:51 104

原创 第13章 字符串

应当使用StringBuilder拼接字符串,而不是使用“+”号,虽然使用“+”时,编译器会自动调用StringBuilder处理,但是编译器的优化是有限的,如果你需要使用循环并用“+”拼接字符串,编译器会在每次循环都创建一个新的StringBuilder对象,效率较低;而若是自己先在循环体外新建了StringBuilder对象,然后在循环体内使用append方法拼接,就只会生成一个StringBuilder对象,而且显式地创建StringBuilder还可以预选为其指定大小,避免多次重新分配缓冲。所以如.

2020-07-26 11:04:18 82

原创 递归回溯解决八皇后问题

public class Queen8Demo {public static final int MAX = 8; // 8个皇后public int[] array = new int[8]; // 使用一个一位数组保存皇后放置的位置,数组的索引代表皇后所在行,值代表所在列。public int count = 0; // 统计解的个数public static void main(String[] args) { Queen8Demo queen = new Queen8Demo();

2020-07-25 17:22:10 82

原创 使用递归回溯解决迷宫问题

/*目的:从左上角走到右下角。地图用数组表示,0表示可走,1表示墙,2表示已走过(不能再走),3表示已走过但走不通。策略:向下→向右→向上→向左初始地图:1 1 1 1 1 1 11 0 0 0 0 0 11 0 0 0 0 0 11 1 1 0 1 0 11 0 0 1 0 0 11 0 0 0 0 0 11 0 0 0 0 0 11 1 1 1 1 1 1运行结果:1 1 1 1 1 1 11 2 0 0 0 0 11 2 2 2 2 2 11 1 1 3 1 2 1

2020-07-24 22:43:39 131

原创 第12章 通过异常处理错误

在catch语句中抛出当前异常,在外层被捕捉后调用printStackTrace打印信息时,异常发生起始地不会改变,不会更新为异常的新发生地。要想更新信息,可以调用fillInStackTrace()方法。但是如果是抛出另一种异常时,有关原来的异常发生点信息会丢失,剩下的是新的抛出点有关的信息:import DataStructure.MyException;/*在catch语句中抛出当前异常,在外层被捕捉后调用printStackTrace打印信息时,异常发生起始地不会改变,不会更新为异常的.

2020-07-24 12:25:31 104

原创 第11章 持有对象

Arrays.asList( )方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),并将其转换为一个List对象。但是该List对象的物理实现依然是数组,因此不能对其进行add( )或者delete( )操作,因为数组尺寸不可变。同样,所有对list对象的操作都是在原来数组上进行的。例如,使用Collections.sort( )方法对list对象进行排序,会对原来的数组造成影响:Integer[] array = {1, 3, 5, 2};List<Integer> list.

2020-07-24 08:07:45 68

原创 中缀转后缀表达式

中缀表达式转后缀表达式步骤:1.初始化两个栈:储存运算符的栈s1和储存中间结果的栈s2;2.从左至右扫描中缀表达式;3.遇到操作数时,将其压入s2;4.遇到运算符时,比较其与s1栈顶运算符的优先级:1)如果s1为空,或栈顶运算符为左括号“(”,或优先级比栈顶运算符的高,则直接将此运算符压入s1;2)否则,将s1栈顶的运算符弹出并压入到s2中,再次与新的s1栈顶运算符相比较。5.遇到括号时:1)如果是左括号“(”,则直接压入s1;2)如果是右括号“)”,则依次弹出s1栈顶运算符并压入s2,直

2020-07-22 19:23:15 147

原创 第9章 接口

抽象类可以包含抽象方法,也可以不包含。在父类构造器中调用方法,可能造成灾难。public class Test12 { public static void main(String[] args) { SubClass12 sub = new SubClass12(); // 子类print:0 sub.print(); // 子类print:9 }}abstract class SuperClass12 { public SuperCl.

2020-07-21 22:44:31 85

原创 第8章 多态

多态机制得以实现的前提是后期绑定,即在运行时根据对象的类型进行绑定,所以后期绑定也叫做动态绑定或运行时绑定。java中除了static方法和final方法(private方法属于final方法)之外,其他所有方法都是后期绑定。因为static方法由类名调用,final方法不能被覆盖,这两种方法都不需要在运行时判断究竟是谁在调用它们,它们的调用者是前期确定的。public class Test11 { public static void main(String[] args) { .

2020-07-21 11:18:49 76

原创 第7章 复用类

在调用子类的构造方法之前,若无super语句,java会自动调用父类的无参构造方法。final关键字修饰基本类型时,该基本类型只能被赋值一次;修饰对象引用时,一旦该引用初始化指向某个对象,就不能再指向第二个对象,即引用中保存的内存地址不能再变化,但是该引用所指向对象的内容是可以变化的。public class Test09 { final int[] array = {1, 2, 3}; public void doSome() { // array = new in.

2020-07-20 23:15:54 62

原创 第6章 访问权限控制

访问权限控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键字)和private。public:任何人都可以访问。protected:子类以及包内成员可以访问。包访问权限:包内成员可以访问。private:只有在本类中可以访问。.java文件可以有public类也可以没有,但只能存在一个public类。如果有public类,.java文件的文件名必须和类名相同,否则编译器报错。使用import static语句可以导入类中的静态方法(不能导入静态成员).

2020-07-20 10:09:43 321

原创 第5章 初始化和清理

1.方法重载:方法名相同,参数列表不同。参数顺序不同也可构成方法重载,但这样会使代码难以维护。此外,不能根据返回值来区分重载方法,不允许存在返回值不同而参数列表相同的重载方法。public void checkIn() { this.checkOut = false;}// 重载checkIn,参数列表不同,返回值不同。public int checkIn(int i) { this.checkOut = false; return i;}2.使用this( )可以调用

2020-07-19 12:25:54 107

原创 第4章 控制执行流程

1.逗号操作符(不是逗号分隔符),唯一使用到的地方是for循环的控制表达式。可初始化多个变量,但是它们必须有相同的类型。// 逗号操作符的使用:for (int i = 0, j = i; i < 25; i++, j+=i) { System.out.println("i = " + i + " j = " + j);}// 等同于:int j = 0;for (int i = 0; i < 25; i++) { j += i; System.out.pri

2020-07-19 07:52:39 82

原创 第3章 操作符

1.基本类型存储了实际的数值,而非引用,在为其赋值时,是直接将一个地方的内容复制到另外一个地方。int a = 2;// 将a的值复制一份给bint b = a;// 修改b不会对a造成任何影响b = 3;System.out.println(b); // 3System.out.println(a); // 22.整数除法会直接去掉结果的小数位,而不是四舍五入地圆整结果。3.通过java.util.Random类的对象,可以获取随机数。调用nextInt( )方法可获取随机整数,传入该

2020-07-18 13:08:39 78

原创 通过反射机制访问属性及调用方法

需要操作的类:class User{ public int no = 100; private String name; public Boolean login(String name, String password) { return name.equals("chy") && password.equals("123"); }}通过反射机制获取对象属性并赋值:public static void main(String[]

2020-07-17 10:43:24 226

原创 获取src下文件的绝对路径

前提:该文件必须在模块(module)的src目录下。①文件直接存在src目录下,不在包中:String path = Thread.currentThread().getContextClassLoader().getResource("文件名").getPath(); System.out.println("绝对路径:" + path);②文件存在于src目录下的包中:String path = Thread.currentThread().getContextClassLoader().g

2020-07-16 22:25:11 1525

原创 class.forName( )报错

从属性配置文件.properties中读取类名,调用class.forName( )方法获取该类字节码时,发生ClassNotFound错误:properties文件:name="Thread.TheThirdThread"获取字节码并new对象:FileReader reader = new FileReader("Exercise01/src/Reflect/info.properties"); Properties pro = new Properties(); pro.load(rea

2020-07-16 21:45:19 7807

原创 从9x9二维列表中取出9个3x3矩阵

board = [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 3, 5, 7, 9, 1, 7, 8, 9], [3, 4, 5, 6, 8, 9, 7, 8, 9], [2, 4, 6, 8, 0, 1, 7, 8, 9], [0, 3, 5, 7, 9, 0, 7, 8, 9], [5, 6, 8, 2, 3 ,4, 7, 8, 9], [5, 6, 8, 2, 3 ,

2020-07-16 14:56:28 446

原创 zip函数

zip( )函数接收多个可迭代对象,将可迭代对象的每列元素打包成一个个元组输出。利用zip( )函数可以依次取出二维列表的每列元素:list1 = [[1, 2, 3, 4, 5, 6], [1, 3, 5, 7, 9, 11], [3, 4, 5, 6, 8, 9], [2, 4, 6, 8, 10, 12], [0, 3, 5, 7, 9, 0], [5, 6, 8, 2, 3 ,4]]for co

2020-07-16 11:18:24 2436

原创 实现线程的三种方式

第一种:编写一个类直接继承Thread类,重写run( )方法,再使用其new对象即可。// MyThread类继承Threadclass MyThread extends Thread{ // 重写run方法 @Override public void run() { "略" }}// 使用myThread创建线程Thread t1 = new myThread();第二种:实现Runnable接口,重写run( )方法,并在new Threa

2020-07-16 09:40:20 116

原创 Synchronized

Synchronized是一种锁机制,也称为排它锁,可以解决线程安全问题。主要有两种用法:①使用Synchronized关键字定义代码块:synchronized (共享对象) { "代码块内对共享对象进行操作"}( )中需要填写需要同步的线程的共享对象,一般写tihs。public class ThreadSafe { public static void main(String[] args) { // new一个Account对象 Account

2020-07-15 22:36:58 108

原创 重新排列某一整数,返回下一个最大整数

解题思路:尽量不动高位数字(中心思想)。首先,比较倒数第二位数字与倒数第一位数字,若前者比后者大,则继续比较倒数第三位与倒数第二位,循环直到发现某高位数字比其低一位的数字小,这说明有了可操作空间。其次,对该高位数字后的所有数字进行筛选,选出所有大于该高位数字的数字,并从中选出最小值。最后,将选出的最小值替换该高位数字,再对剩下的数字按升序排序后加在最小值的末尾,问题解决。def next_bigger(n): n_list = list(str(n)) for i in range(len

2020-07-15 20:20:33 929

原创 sort 与 sorted 的区别

sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。...

2020-07-15 16:44:27 106

原创 线程生命周期

一个线程对象从创建到死亡一般要经历五个状态:新建状态、就绪状态、运行状态、阻塞状态(可能不经历)、死亡状态。新建状态:线程对象刚刚创建时的状态。就绪状态:线程对象调用start方法后进入就绪状态,并开始抢夺CPU时间片(即CPU的执行权)。运行状态:线程对象抢夺到时间片后开始执行run方法,此时进入到运行状态,抢夺到的时间片耗尽后再次进入就绪状态,继续抢夺时间片,抢到后会重新进入run方法接着上一次代码继续向下执行。阻塞状态:线程对象在运行状态时如需等待用户输入,或调用了sleep方法等,会进入阻塞

2020-07-15 11:27:36 71

原创 IDEA相对路径

IDEA结构(从高到低):Project(工程)→Module(模块)→Package(包)→Java文件IDEA默认当前路径为Project(工程)的根。

2020-07-13 23:37:47 1990

原创 数组模拟环形队列

主要思想:采用双指针,指针front永远指向队列第一个元素,指针rear永远指向队列最后一个元素位置+1;front与rear之间约定预留一个位置,即若初始化数组容量为10(maxSize),则有效存储位只有9个。使用公式:(rear + maxSize - front) % maxSize 可求出队列中元素个数。public class ArrayQueueDemo{ public static void main(String[] args) { ArrayQueue q = new Arra

2020-07-10 20:39:38 125

原创 泛型机制

定义类时给出形式类型(一般使用E(Element)和T(Type)):public class Animal<E> { public void doSome(E e){ System.out.println("hello world!"); }}创建类时给出实际类型:Animal<String> animal = new Animal<>();// 此处调用doSome方法,传入的参数类型只能是Stringanimal.doSome("do it")

2020-07-10 17:57:37 113

原创 divmod( )函数

>>divmod(5, 2)>>(2, 1)divmod函数可同时返回商和余数。

2020-07-06 20:28:59 9583

原创 int列表转换为字符串

列表里有int数据时,使用join方法不能去掉列表符号,需先使用map函数将列表转换为字符串,再使用join方法。

2020-07-06 15:30:48 529

原创 正则表达式re.split( )方法

字符串split( )方法只能对单一字符进行切割,而re模块中的split方法可匹配多个字符:

2020-07-05 18:58:25 805

原创 strip( )方法

strip( )方法只能删除字符串开头或是结尾的字符,不能删除中间的字符。

2020-07-05 18:38:42 256

原创 集合的创建

集合使用 { }或set( )创建,空集合只能使用set( )创建,注意不要与元组混淆。

2020-07-04 23:29:17 1441

原创 全局变量

python会假设任何在函数内赋值的变量都是局部的。因此,如果要给函数内的全局变量赋值,必须使用 global 修饰该变量。

2020-07-04 16:50:38 231

原创 字符串的join方法

以str1为分隔符,将str2的每一字符分隔开。

2020-07-04 15:38:31 4748

原创 python中的true和false

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。

2020-07-04 11:24:54 2172

MongoDB-CheatSheet-v1_0

MongoDB-CheatSheet-v1_0

2018-10-02

空空如也

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

TA关注的人

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