
Java基础学习
自由与束缚JavaJavaScript
这个作者很懒,什么都没留下…
展开
-
051_原码反码补码概念
1. 反码的范围1.1. 反码表示法规定: 正数的反码与其原码相同。负数的反码是对其原码逐位取反, 但符号位除外。1.2. 在规定中, 8位二进制码能表示的反码范围是-127~127。1.3. -128没有反码。2. 原码、反码、补码的范围2.1. 8位二进制数原码 -127~127反码 -127~127补码 -128~1272.2. n位二进制数2.3. 补码比其它码多一位, 这是为什么呢? 问题出在0上。[+0]原码=0000 0000, [-0...原创 2021-05-19 00:04:47 · 143 阅读 · 0 评论 -
050_整形和字节数组转换
1. 位移操作符1.1. 没有无符号左移1.2. 无符号右移: >>>1.3. 有符号左移: <<1.4. 有符号右移: >>2. 左移规则2.1. 右边空出来的位用0填补。2.2. 高位左移溢出则舍弃高位。3. 右移规则3.1. 左边空出的位用0或者1填补。正数用0填补, 负数用1填补。3.2. 低位右移溢出则舍弃该位。4. Java位移结果是整数。5. 分析几个右移操作5.1. 0的有符号右移1位操作0的补原创 2021-05-19 00:04:13 · 682 阅读 · 0 评论 -
049_位移操作
1. 位移操作符1.1. 没有无符号左移1.2. 无符号右移: >>>1.3. 有符号左移: <<1.4. 有符号右移: >>2. 左移规则2.1. 右边空出来的位用0填补。2.2. 高位左移溢出则舍弃高位。3. 右移规则3.1. 左边空出的位用0或者1填补。正数用0填补, 负数用1填补。3.2. 低位右移溢出则舍弃该位。4. Java位移结果是整数。5. 分析几个右移操作5.1. 0的有符号右移1位操作0的补原创 2021-05-19 00:06:35 · 627 阅读 · 0 评论 -
048_输出一下short的所有值
1. 输出Short的最小值-32768到最大值32767public static void printShort() { try { int count = 0; FileOutputStream fos = new FileOutputStream("printShort.txt"); for(short i = Short.MIN_VALUE; count < Math.abs(Short.MIN_VALUE) + Short.MAX_VALUE + 1; i++)原创 2021-05-18 23:56:32 · 782 阅读 · 0 评论 -
047_输出一下byte的所有值
1. 输出Byte的最小值-128到最大值127public static void printByte() { int count = 0; for(byte i = Byte.MIN_VALUE; count < Math.abs(Byte.MIN_VALUE) + Byte.MAX_VALUE + 1; i++) { count++; System.out.println(i); }}输出:-128-127-126-125-124-123-原创 2021-05-18 23:52:49 · 619 阅读 · 0 评论 -
046_byte的值在计算机中的表示
1. byte的取值范围-128到127的源码、反码、补码 10进制值 原码 反码 补码 0 0000 0000 0000 0000 0000 0000 1 0000 0001 0000 0001 0000 0001 2 .原创 2021-05-18 23:45:03 · 585 阅读 · 0 评论 -
045_引用分类和WeakHashMap
一. 引用分类1. 强引用: StrongReference, 引用指向对象, gc(Garbage collection)运行时不回收对象。2. 软引用: SoftReference, gc(Garbage collection)运行时可能回收对象(jvm内存不足时)。3. 弱引用: WeakReference, gc(Garbage collection)运行时立即回收对象。4. 虚引用: PhantomReference, 类似于无引用, 主要跟踪对象被回收的状态, 不能单独使用, 必原创 2021-05-17 00:01:11 · 88 阅读 · 0 评论 -
044_Properties工具类
1. Properties继承HashTablepublic class Propertiesextends Hashtable<Object,Object>2. Properties类表示了一个持久的属性集。Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。3. 官方推荐使用setProperty方法, 不要使用put和putAll方法4. load(Reader)/store(Writer, String)简单的面向行的格式在基于字符的流原创 2021-05-17 00:01:06 · 273 阅读 · 0 评论 -
043_集合重要知识点
一. 集合图解二. 三个重要的知识点1. 迭代器1.1. Iterator迭代器java.util.Iterator接口hashNext()方法next()方法remove()方法1.2. foreach迭代器java.lang.Iterable接口iterator()方法2. 比较器2.1. java.lang.Comparable接口compareTo()2.2. java.util.Comparator接口compare(...原创 2021-05-17 00:00:11 · 83 阅读 · 0 评论 -
042_JDK的Map接口
package java.util;public interface Map<K,V> { int size(); boolean isEmpty(); boolean containsKey(Object key); boolean containsValue(Object value); V get(Object key); V put(K key, V value); V remove(Object key); void.原创 2021-05-17 00:00:21 · 71 阅读 · 0 评论 -
041_JDK的Set接口
package java.util;public interface Set<E> extends Collection<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); boolean .原创 2021-05-16 23:51:12 · 92 阅读 · 0 评论 -
040_JDK的List接口
package java.util;import java.util.function.UnaryOperator;public interface List<E> extends Collection<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray().原创 2021-05-16 23:50:31 · 83 阅读 · 0 评论 -
039_ JDK的Collection接口
package java.util;public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); boo.原创 2021-05-16 23:48:07 · 108 阅读 · 0 评论 -
038_JDK的Iterable接口
package java.lang;public interface Iterable<T> { Iterator<T> iterator();}原创 2021-05-16 23:47:19 · 78 阅读 · 0 评论 -
037_JDK的Iterator接口
package java.util;public interface Iterator<E> { boolean hasNext(); E next(); default void remove() { throw new UnsupportedOperationException("remove"); }}原创 2021-05-16 23:46:18 · 76 阅读 · 0 评论 -
036_Hashtable和HashMap的区别
1. Hashtable和HashMap的区别1.1. Hashtable线程安全, 效率低; HashMap线程不安全, 效率高1.2. Hashtable父类是Dictionary; HashMap是AbstractMap1.3. Hashtable键与值不能为null; HashMap键最多一个为null,值可以多个null2. Hashtable是通过方法体上加synchronized关键字来保证线程安全的, HashMap则没有synchronized关键字2.1. Hasht原创 2021-05-16 23:45:59 · 98 阅读 · 0 评论 -
035_使用Enumeration遍历Vector元素
import java.util.Enumeration;import java.util.Vector;/** * 使用Enumeration遍历Vector元素 */public class VectorEnumeration { public static void main(String[] args) { Vector<String> v = new Vector<String>(); v.addElement("123.原创 2021-05-16 23:41:27 · 123 阅读 · 0 评论 -
034_ JDK的Enumeration接口
public interface Enumeration<E> { boolean hasMoreElements(); E nextElement();}原创 2021-05-16 23:38:49 · 94 阅读 · 0 评论 -
033_使用ArrayDeque模拟队列结构
import java.util.ArrayDeque;import java.util.Iterator;/** * 使用ArrayDeque模拟队列结构 */public class QueueUseDeque<E> { private ArrayDeque<E> queue = new ArrayDeque<E>(); /** * 入队列 * @param e * @return */ public boolean enQue.原创 2021-05-16 23:38:10 · 81 阅读 · 0 评论 -
032_使用ArrayDeque模拟栈结构
import java.util.ArrayDeque;import java.util.Iterator;/** * 使用ArrayDeque模拟栈结构 */public class DequeStack<E> { private ArrayDeque<E> stack = new ArrayDeque<E>(); /** * 压zhan * @param e * @return */ public boolean push(E .原创 2021-05-16 23:37:04 · 156 阅读 · 0 评论 -
031_自己对ArrayList中Iterator的实现
import java.util.ArrayList;import java.util.Iterator;import java.util.NoSuchElementException;/** * 自己实现ArrayList中Iterator的实现类 */public class MyArrayListIterator extends ArrayList<Object> { private static final long serialVersionUID = 1L; /.原创 2021-05-15 08:54:21 · 116 阅读 · 0 评论 -
030_自己实现一个HashSet
import java.util.HashMap;import java.util.Iterator;/** * 自己实现一个HashSet */public class MyHashSet { /** * HashSet底层是使用map存储的 */ private HashMap<Object, Object> map; /** * map存储所有Value都是DEFAULTOBJECT */ private static final Object DEF.原创 2021-05-15 08:53:38 · 113 阅读 · 0 评论 -
029_自己实现一个HashMap
import java.util.AbstractCollection;import java.util.AbstractSet;import java.util.Collection;import java.util.Iterator;import java.util.Set;/** * 简易HashMap * 数组 + 单向链表 */public class MyHashMap { private Node[] table; private int size; pri.原创 2021-05-15 08:52:49 · 80 阅读 · 0 评论 -
028_自己实现一个LinkedList
/** * 自定义链表 */public class MyLinkedList { private Node first; private Node last; private int size; /** * 构造方法 */ public MyLinkedList() {} /** * 链表大小 * @return */ public int size() { return size; } /** * 数组是否为空 * @return.原创 2021-05-15 08:51:47 · 90 阅读 · 0 评论 -
027_自己实现一个ArrayList
import java.util.Arrays;/** * 自定义ArrayList */public class MyArrayList { private Object[] elementData = {}; private int size; /** * 构造方法 */ public MyArrayList() { } /** * 数组大小 * @return */ public int size() { return size; } /.原创 2021-05-15 08:50:40 · 433 阅读 · 0 评论 -
026_使用eclipse生成hashCode和equals方法
1. 使用eclipse生成hashCode方法, 模拟一个两个对象实例不同, hashCode形同, 两个对象的equals方法返回flase的场景。1.1. People类public class People { int id; String name; int age; public People(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } /原创 2021-05-15 08:49:41 · 828 阅读 · 0 评论 -
025_JDK的hashCode方法
1. java Object类的hashCode()方法是一个本地方法, 会调用c++方法。1.1. Object.java中的hashCode()方法:public native int hashCode();1.2. Object对象的hashCode()方法在C语言文件Object.c中实现。下载openjdk.zip, 打开\openjdk\jdk\src\share\native\java\lang\目录, 查看Object.c文件, 可以看到hashCode()的方法被注册成有JVM_.原创 2021-05-15 08:46:49 · 180 阅读 · 0 评论 -
024_JDK的equals方法
1. 等号(==):1.1. 对比对象实例的内存地址(也即对象实例的ID), 来判断是否是同一对象实例; 又可以说是判断对象实例是否物理相等。2. Object类的equals()方法: 判断的是两个对象的实例ID(内存地址是否相等)。3. String类重写了Object类的equals()方法: 如果两个对象的实例ID相等或者String类储存的内容一样, equals()方法返回true。4. Number的衍生类也都重写了equals()方法: 判断两个对象的值是否相等。原创 2021-05-15 08:43:23 · 119 阅读 · 0 评论 -
023_泛型檫除的实例
1. 泛型类和子类檫除/** * 父类泛型类 * @param <T> */public abstract class Father<T> { protected T name; public abstract void eat(T t);}/** * 子类继承父类指定具体类型 * 方法是具体类型,随父类而定 * 属性是具体类型,随父类而定 */class Son extends Father<String>{ public void原创 2021-05-12 00:05:13 · 66 阅读 · 0 评论 -
022_泛型的类型檫除
一. Java泛型的实现方法: 类型擦除1. Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为, 在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。2. Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数, 会在编译器在编译的时候去掉。这个过程就称为类型擦除。3. 如在代码中定义的List和List等类型, 在编译后都会编程List。JVM看原创 2021-05-12 00:05:10 · 110 阅读 · 1 评论 -
021_泛型嵌套
import java.util.HashMap;import java.util.Map.Entry;public class ParameterizedType { public static void main(String[] args) { // 一个小学的学生, 学号对应学生 HashMap<Integer, Student> primarySchool = new HashMap<>(); primarySchool.put(1, new Stud.原创 2021-05-12 00:05:07 · 157 阅读 · 0 评论 -
020_泛型变量的类型限定
1. 泛型变量的类型限定1.1. 实例public static <T> T get(T t1,T t2) { if(t1.compareTo(t2) >= 0); // 编译错误 return t1; } 1.2. 因为, 在编译之前, 也就是我们还在定义这个泛型方法的时候, 我们并不知道这个泛型类型T, 到底是什么类型, 所以, 只能默认T为原始类型Object。所以它只能调用来自于Object的那几个方法, 而不能调用compar原创 2021-05-12 00:05:05 · 204 阅读 · 0 评论 -
019_泛型方法
1. 泛型方法定义: public <泛型类型> 返回值类型 方法名(泛型参数) {}2. 自定义泛型方法2.1. 没有返回值的泛型方法public <T> void getValue(T t1) {}2.2. 带返回值的泛型方法public static <T> T getValue(T t1) { return t1;}...原创 2021-05-11 22:46:32 · 229 阅读 · 0 评论 -
018_泛型接口
1. 泛型接口定义: public interface 类型<泛型类型> {}2. JDK1.8中, Iterator泛型接口public interface Iterator<E> { boolean hasNext(); E next();}原创 2021-05-11 22:44:24 · 78 阅读 · 0 评论 -
017_泛型类
1. 泛型类的定义: public class 类名<泛型类型> {}。2. JDK1.8中HashMap泛型类的定义: public class HashMap<K,V>{}。3. 自定义泛型类public class Container<K, V> { private K key; private V value; public Container(K k, V v) { key = k; va.原创 2021-05-11 22:43:05 · 74 阅读 · 0 评论 -
016_泛型常见通配符
1. 泛型常见通配符1.1. T Type类型, java类。1.2. K Key类型, 键值对中的键。1.3. V Value类型, 键值对中的值。1.4. E Element元素类型, 集合中使用。1.5. N Number数值类型。1.6. ? 表示不确定的java类型, 无限制通配符类型。2. 界定通配符的上边界2.1. 类型1指定一个数据类型, 那么类型2就只能是类型1或者是类型1的子类:Vector<? extends 类型1> x = new原创 2021-05-11 22:40:44 · 163 阅读 · 0 评论 -
015_泛型概念
1. 泛型的概念1.1. 泛型的定义: 泛型就是参数化类型。1.2. 泛型是JDK 1.5的一项新特性, 它的本质是参数化类型(Parameterized Type)的应用, 也就是说所操作的数据类型被指定为一个参数, 在用到的时候在指定具体的类型。2. 参数化类型2.1. 参数可以简单分为: 形参, 实参, 类型形参, 类型实参。2.2. 参数, 最熟悉的就是定义方法时有形参, 然后调用此方法时传递实参。2.3. 参数化类型就是将原来的具体的类型参数化, 类似于方法中的变量参数,此原创 2021-05-11 22:34:28 · 142 阅读 · 0 评论 -
014_Collections常用方法
1. Collections常用方法import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * Collections常用方法 */public class CollectionsSort { public static void main(String[] args)原创 2021-05-11 00:13:22 · 188 阅读 · 0 评论 -
013_JDK的Collections类的sort方法的实现
1. JDK1.8中Collections类的sort方法默认排序的实现2. JDK1.8中Collections类的sort方法按业务排序的实现原创 2021-05-11 00:13:15 · 102 阅读 · 0 评论 -
012_Comparable和Comparator实例
1. 自定义SortUtil类import java.util.Comparator;import java.util.List;public class SortUtil { /** * List容器泛型比较器, 升序排序 * @param array */ public static <T extends Comparable<T>> void sort(List<T> list) { sort(list, null); } /原创 2021-05-11 00:13:06 · 99 阅读 · 0 评论