Java基础
文章平均质量分 79
login_sonata
这个作者很懒,什么都没留下…
展开
-
子类调用父类构造器时的Java类成员初始化顺序
我们先看一个经典的例子:class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root(){ System.out.println("Root的无参构造器"); }}class Mid extends Root {原创 2017-02-26 16:25:15 · 1382 阅读 · 0 评论 -
Java多线程笔记一(创建运行,相关概念,JVM内存模型,线程有几种状态,死锁)
快速开始:创建并运行Java线程Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。创建线程并运行相应代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。1,创建Thread的子类创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:publ原创 2017-09-16 22:46:43 · 887 阅读 · 0 评论 -
Java多线程笔记三(线程通信wait/notify/notifyAll/sleep/yield/join)
一,wait()、notify()、notifyAll()1,信号量线程间通信的一个最简单方式是在共享对象的变量里设置信号量。线程A在一个同步块里设置boolean型成员变量hasDataToProcess为true,线程B也在同步块里读取hasDataToProcess这个成员变量。下面的例子使用了一个持有信号的对象,并提供了set和check方法:public class MySignal{原创 2017-10-02 15:12:00 · 1104 阅读 · 0 评论 -
Java多线程笔记二(synchronized的使用以及实现原理)
同步关键字synchronizedjava关键字synchronized用来标记方法或者代码块是同步的。它是Java中解决并发问题的一种最常用的方法,作用主要有:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见。 synchronized总共有四种用法: (1)修饰普通方法 (2)修饰静态方法 (3)修饰普通方法中的代码块 (4)修饰静态方法中的代码块修饰普通方法pub原创 2017-09-17 15:29:56 · 742 阅读 · 0 评论 -
Java集合类基础(List,Set,Map)
集合类简介Java的集合类主要由两个接口派生而出:Collection和Map,这两个接口又包含了一些接口或实现类。 一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供Collection的直接实现,提供的类都是继承自Collection的“子接口”如Li原创 2017-09-16 17:12:26 · 1731 阅读 · 0 评论 -
java参数传递的方式
对于程序设计语言来说,一般函数的参数传递有两种:按值传递和按引用传递。 按值传递表示函数接收的是调用者提供的值,按引用传递表示函数接收的是调用者提供的变量地址。需要注意的是,函数可以修改按引用传递的参数对应的变量值,但不可以修改按值传递的参数对应的变量值,这是两者的最大区别。 对于Java来说,并不存在引用传递,而是采用按值传递,函数得到的是参数的拷贝,不能修改传递给它的参数变量的内容,举例:p转载 2017-07-23 16:10:11 · 2304 阅读 · 0 评论 -
Java中String、StringBuffer、StringBuilder的区别
1,可变与不可变首先三者的类都是final修饰的,因此不能被继承。 String类中使用字符数组保存字符串,格式为private final char value[],因为有“final”修饰符,所以可以知道string对象是不可变的。 StringBuilder与StringBuffer都继承自AbstractStringBuilder抽象类,它定义了一些字符串的基本操作,如expandCap原创 2017-06-29 23:52:45 · 1038 阅读 · 0 评论 -
Java的Integer和int有什么区别
Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:原始类型:boolean,char,byte,short,int,long,f原创 2017-04-30 12:15:45 · 54655 阅读 · 8 评论 -
包含finally的异常代码块里的return,break,continue语句如何执行
包含finally的异常代码块结构如下: try{ return;}catch(){return;} finally{return;} 这种结构里的return语句怎么执行呢?因为这是有finally时的情况,比较特殊。首先,执行try代码块中位于“return”之前的代码(包括return语句中的表达式运算,比如return 1+1,这个1+1也会被执行),意思就是程序计算了return语句,原创 2017-02-26 18:22:09 · 8129 阅读 · 0 评论 -
Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
原文:Java 8系列之重新认识HashMap,有删改。 JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理,文章末尾附有HashMap的put方法和resize方法的源码解析。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现转载 2017-08-05 20:04:14 · 26974 阅读 · 15 评论