Java基础
亮仔亮仔我爱你哟
这个作者很懒,什么都没留下…
展开
-
Java语言的发展及其特点
首先来认识一下Java家族 1)J2ME---JavaME micro edition 用于嵌入式java电子消费平台 2)J2SE---JavaSE standard edition 用于工作站、PC机的标准平台 3)J2EE---JavaEE Enterprise edition 企业级的应用平台JAVA的特点 1. Java原创 2016-05-25 21:51:32 · 811 阅读 · 0 评论 -
Synchronized说:给我一把锁,我能创造一个规矩
1.为什么有多线程同步?Java中多线程同步的机制是什么? 当多个线程同时竞争同一资源时候,为了防止出现数据不一致性问题,需要有同步机制。而同步机制是通过锁的概念来实现的。2.JVM对哪类线程共享的数据进行加锁机制? 1)保存在堆中的实例变量---对象锁,就是有一个和对象相关联的监视器 2)保存在方法区的类变量---类锁实际上用对象锁来实现,当JVM装载原创 2016-08-01 21:36:12 · 873 阅读 · 0 评论 -
线程的生命周期
如上图: new一个Thread,则线程处于新建状态。调用start(),则处于就绪状态,至于什么时候运行,属于系统调度的事情了,当run()或者call()执行体执行完成后,处于死亡状态。 运行状态的线程,可能遇到以下情况而被阻塞:sleep()方法、IO阻塞、等待同步锁、等待通知、suspend() 调用yield()方法,线程不会阻塞,而是进入就绪状态。该方法只原创 2016-08-29 20:57:46 · 515 阅读 · 0 评论 -
用到了JSONArray和JSONObject就要知道
JSONArray jsonArray = JSONArray.fromObject(dto.getInputForMap().get("userArray")); for(int i=0; i<jsonArray.size();i++){ JSONObject jObject = (JSONObject)jsonArray.get(i); ido.addInput("st原创 2016-09-12 12:13:43 · 580 阅读 · 0 评论 -
线程和进程
进程:每个运行中的程序就是一个进程。线程: 每一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。原创 2016-08-17 15:28:40 · 449 阅读 · 0 评论 -
线程同步
多线程引入了同步监视器。加锁 -> 修改 -> 释放锁1.同步代码块 public void run(){ synchronized(obj){ ......}} 这里obj就是同步监视器。任何时刻只能有一个线程获得对同步监视器的锁定,当同步代码块执行完成后,该线程会释放对该同步监视器的锁定。因此推荐使用可能被并发访问的共享资源充当同步监视原创 2016-08-30 20:52:41 · 382 阅读 · 0 评论 -
Java中线程通信的方法
1.对于传统的synchronized同步监视器对象(同步块中的obj互助哦和同步方法中的this) 借助于Object提供的wait(),notify()和notifyAll() 这三个方法不属于Thread类,属于Object类,但是这三个方法必须由同步监视器来调用。 wait()方法——当前线程等待(当前线程会释放对该同步监视器的锁定),直到其他线程调用该同步监视器的no原创 2016-08-31 21:52:08 · 509 阅读 · 0 评论 -
ThreadLocal类
Java5之后,为ThreadLocal类增加了泛型支持,即ThreadLocal通过使用ThreadLocal类可以简化多线程编时的并发访问,使用这个工具类可以很简洁的隔离多线程程序的竞争资源。实现方法:通过为每一个使用该变量的线程都提供一个变量值的副本。使得每一个线程都可以独立的改变自己的副本,而不会和其他线程的副本发生冲突。有如下方法:Tget原创 2016-08-31 22:25:43 · 467 阅读 · 0 评论 -
Java集合——容器
Java集合类又被称为容器类,用来保存对象(实际上保存的是对象的引用变量)。而数组既可以保存基本数据类型的值,也可以保存对象,但是长度固定,对局数量变化的数据就无能为力了。 Java集合类主要由两个接口类派生:Collection和Map,这两个接口有包含了一些子接口和实现类。如下图所示由上图可以看到:1.Collection接口包括Set和Li原创 2016-09-01 09:28:45 · 502 阅读 · 0 评论 -
Integer的缓存(-128到127)
先上源码 /** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {@code Integer} instance is not * required, this method should generally be原创 2016-09-01 21:21:40 · 845 阅读 · 0 评论 -
HashMap底层实现原理,以及和Hashtable的比较
boolean containsValue(Object value)Returns true if this map maps one or more keys to the specified value.首先,我们要知道HashMap底层实现是数组(Entry类型)加上链表的数据结构---拉链法实现哈希表Entry 实现了Map.Entry 接口,即实现getKey(), get原创 2016-07-30 10:58:16 · 11064 阅读 · 0 评论 -
Java中线程的三种实现方式
Java中使用Thread代表线程类,所有的线程类都必须是Thread类或者其子类的实例。每个线程的作用就是完成一定的任务,即执行一段程序流。Java中使用线程执行体来表示这段程序流。Java中线程的实现方式有如下三种:1.继承Thread类public class Thread extends Object implements Runnable定义Thread类原创 2016-08-21 22:39:16 · 9415 阅读 · 0 评论 -
Volatile关键字
volatile关键字,Java并发的最轻量级实现,保证该变量的可见性,即一个线程修改该变量以后,会立即将该变量更新到主内存中,这样其他线程读取时,会从内存中读取新的值。 但是volatile不能保证有序性,例如: 如果我们对一个volatile修饰的变量进行多线程下的自增操作,还是会出现线程安全问题。根本原因在于volatile关键字无法对自增进行安全性修饰,因为自增分为三步,读取-原创 2016-08-01 17:22:23 · 493 阅读 · 0 评论 -
Java多线程内存模型
Java多线程之间的并发通信是通过共享内存模型(隐式通信)实现的。如下图所示,注意是虚拟的概念,为了帮助开发者写出安全的程序。每个线程会拷贝主内存中的共享变量的副本到本地内存,又叫工作内存。 线程A和线程B间通信的步骤:首先,线程A把本地内存A中更新过的共享变量刷新到主内存中去。然后,线程B到主内存中去读取线程A之前已更新过的共享变量。 可见,不同线原创 2016-08-01 17:02:14 · 506 阅读 · 0 评论 -
Arraylist 和 Linkedlist 的区别
首先我们摘录JDK的 java.util包中对于这两个类的部分定义public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersio原创 2016-07-30 01:05:37 · 667 阅读 · 0 评论 -
一张表告诉你Java的数据类型
从图中我们可以看到Java共有8种基本数据类型:char 、byte、short、int、long、float、double、boolean这里需要注意以下几个方面:1.Java中字符串没有被当作数组,而是被当作对象来处理,类String和StringBuffer都可以用来表示一个字符串2.Java不采用通常计算机系统采用的ASCII代码集,而是采用Unicode这样一个国际标准字符集原创 2016-05-25 23:12:35 · 1330 阅读 · 0 评论 -
数据溢出怎么办,别慌别慌,try_catch来帮忙
import java.util.*;import java.io.*;/×哈哈,鉴于Java中每个基本数据类型都有其长度,可以比较输入数据是否在指定数据类型范围内。这里假设输入的数据均为整数整数中最大的是long了,如果输入的数据超过了long的最大值,会发生数据溢出,怎么办?try_catch来帮忙喽,当发生数据溢出,catch会自动捕获异常,然后就可以进行相应的数据判断啦。×/class原创 2016-06-08 17:35:42 · 5567 阅读 · 0 评论 -
又有人问我Java中Scanner中next()和nextLine()区别了
**两个都是用来接收用户的输入,区别在于: next()从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符 ‘\n’)时结束。 nextLine()则是扫描剩下的所有字符串知道遇到回车为止。**聪明的你get到了吗? 如果没有,没关系,我们来举个例子,对于如下输入:Scanner sc = new Scanner(System.in);//加入输入原创 2016-06-08 20:12:48 · 8944 阅读 · 0 评论 -
Java Static Block总结
首先要理解Static是对于一个类来说的,包括静态变量,静态方法和静态类。 这里重点介绍一下静态块static blockstatic { }这一部分就是静态块,当类加载器载入类的时候,这一部分代码被执行,常用于对静态变量进行初始化工作。如果去掉static,{ }中的代码则会在创建类对象的时候才执行,(相当于把这部分代码复制到各个构造函数中)这样可以实现块中的内容在多个构造函数中的复用。 举个原创 2016-06-08 22:52:41 · 979 阅读 · 0 评论 -
对比StringBuffer和StringBuilder
这里摘录部分网友的回答: 首先要知道String只是字符串常量而StringBuilder和StringBuffer是字符串变量。所以String的执行速度是最慢的。之所以说String是常量,举个例子来说: String str = “abc”; str = str+d; System.out.println(str); 虽然你看到最后的str的值原创 2016-06-09 14:22:14 · 527 阅读 · 0 评论 -
同样是回文判断,你看看人家怎么一句话搞定的?
回文是指正着读,倒着读都一样的字符串。比如:anan、reviver 假如要求对输入的字符串判断是否为回文,我用Java实现的代码:import java.io.*;import java.util.*;public class Solution { public static void main(String[] args) { Scanner sc=new Scanner原创 2016-06-09 14:40:42 · 746 阅读 · 0 评论 -
Java基本特征
来来来,我们看下面:1.封装——隐藏类的内部信息。将对象的使用者和设计者分开。使用者不需要知道行为实现的细节。2.继承——Java只支持单继承,即一个类只能继承一个父类。(可能是因为多继承的话类的层次关系较为混乱)继承中的子类可以直接调用父类的属性和行为,避免了代码冗余,体现出一般和特殊的关系。即子类自动继承父类的的属性和方法,但又有自己独特的属性和行为。3.多态——“一个对外原创 2016-06-11 14:31:55 · 677 阅读 · 0 评论 -
Java中Object对象的hashCode方法和String对象的hashCode
class A{}public class TestMain { public static void main(String[] args) { A a1 = new A(); A a2 = new A(); String str1 = "abc"; String str2 = new String("abc");原创 2016-07-10 14:03:16 · 567 阅读 · 0 评论 -
Java中Stack类的实现——上源码
/* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * *原创 2016-06-18 18:03:51 · 1028 阅读 · 0 评论 -
Collection集合之Queue集合
Collection集合在Java中被定义为接口,接口主要包含方法如下:public interface Collection<E> extends Iterable<E> {//将指定的对象从集合中移除,移除成功返回true,不成功返回falseboolean remove(Object o);//将指定对象添加到集合中boolean add(E e);//查看该集合中是否包含指定的对象原创 2016-06-19 23:14:56 · 1150 阅读 · 0 评论 -
Java中你必须记住的String方法
String类是我们常用的类,所以它的很多方法需要我们熟练记住:查看API文档1.String类定义 public final class String extends Object implements Serializable, Comparable, CharSequence从此可以看出String类是一个final类型,继承于Object,并且实现了串行化、比较类和字符序列接口(自即翻译的原创 2016-07-08 11:46:47 · 1352 阅读 · 0 评论 -
学会调试
一、前端调试首先F12,用于打开前端调试器,很多浏览器都支持console.log(); 用于在前台显示数据alert();用于弹出一个窗口和console.log()的作用类似二、后端调试学会常用的debug快捷键Ctrl+shift+d 查看对象或变量的值F5 —— step inF6—— step over(常用)F7—— step retur原创 2016-09-12 13:05:17 · 1216 阅读 · 0 评论