Java基础误区
FashionCodeBoy
这个作者很懒,什么都没留下…
展开
-
线程的各种状态转换
阻塞 ----------新建 就绪 运行 死亡 ———- ———- ———-原创 2016-10-08 18:48:51 · 231 阅读 · 0 评论 -
Map集合及其子类
Map(地图集合):保存具有映射关系的数据,一组用于保存Map集合里面的key,一组用用保存Map里的value,这种关系是键值对,key里面不能允许重复,value里面可以是null。这样看的话Map跟Set很像,把value全部设为null,其实就实现了Set。其子类典型有HashMap、Hashtable(哈希地图),LinkedHashMap(链式哈希地图),TreeMap(树地图)、Enu原创 2016-10-04 16:00:06 · 2242 阅读 · 0 评论 -
集合类的关系
集合:Collection(接口) 列表List:可以重复、有序。实现类:ArrayList(数组列表)、LinkedList(链式列表)、Vector(有向列表)。从数据结构来看,ArrayList和Vector数据结构上来说都是通过数组来实现的,LinkedList数据结构就是链式列表,还实现了Deque接口,意味着能够当成双端队列来操作,既可以当作栈,也可以当作队列,列表。 队列Queue原创 2016-10-04 15:30:04 · 221 阅读 · 0 评论 -
构造器的疑惑
class Address{ String deatil; public Address(String deatil ) { this.deatil=deatil; } }//实现Cloneable接口class User implements Cloneable{ int age; Address address; public User(int age) {原创 2016-06-13 15:48:48 · 210 阅读 · 0 评论 -
标识符的规则?
标识符是干嘛?首先标识符是用于给程序中变量、类、方法命名的符号。具体都Java语言中必须以字母、下画线(_)、美元符(),后面可以跟任意数目的字母、数字、下画线()、美元符(),后面可以跟任意数目的字母、数字、下画线(_)、美元符().原创 2016-10-26 22:06:31 · 458 阅读 · 0 评论 -
一道笔试题,引发我的基础问题的反思
我是这样做这道题的:package 农金圈;//两个线程一个打印a-z,一个线程打印A-Zpublic class ThreadPrint { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Object obj=new Ob原创 2016-10-26 21:53:18 · 394 阅读 · 0 评论 -
Unchecked Exception和Checked Exception的区别
Unchecked Exception:值得是程序的逻辑错误,程序的疵瑕,并且运行的时候无法恢复。 包括Error以及RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException,IllegalArgumentException,IllegalMonitorStateException, NullPointerExcep原创 2016-10-06 20:47:27 · 1031 阅读 · 0 评论 -
进制、位数的区别?
1个byte等于在内存里面占8位byte:8 1个字节 short:16 2个字节 int: 32 4个字节 long: 64 8个字节 char:16 2个字节 float:32 4个字节 double:64 8个字节 Java中自动转byte short char 》》int》》long》》float》》double原创 2016-10-16 22:51:43 · 746 阅读 · 0 评论 -
Overload、Override的区别
方法重写:发生在子类与父类之间,这也称为方法覆盖。 Override:方法返回值必须相同、方法名必须相同。 遵守两同两小一大原则:两同:方法名相同、返回值相同 两小:抛出的异常比父类小或者相同、返回值要比父类小或者相同 一大:修饰符比父类大方法重载:只要方法名相同,其他的都可以全部不同。原创 2016-10-16 22:28:49 · 171 阅读 · 0 评论 -
Java设计模式
Java设计模式中: 创建型模式五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构性模式七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。原创 2016-10-16 21:33:11 · 177 阅读 · 0 评论 -
Math类函数总结
Math.random():随机生成0.0到1.0的小数 Math.abs():绝对值 Math.ceil():天花板值 Math.floor():地板值 Math.round():四舍五入得到的值 Math.pow(double a,double b):返回第一个参数的第二个参数幂的值,就是平方 Math.sqrt(double a):返回正的平方根 Math.cbrt(double原创 2016-10-16 21:14:58 · 283 阅读 · 0 评论 -
1 堆、栈、常量池的区别与异同
栈(Stack):是一种顶端开口结构,只能在栈顶(top)进行操作的数据。堆(Heap):一种树形结构,可以随时存放和取走。常量池(Constant pool):一种存放经常使用的数据。只可以读不可以写,静态区(Static Area):存放static修饰的数据,可读可写。public class Stack { String str="Helloworld";原创 2016-08-31 16:27:39 · 744 阅读 · 0 评论 -
ConcurrentHashmap实现原理?
1ConcurrentHashMap与HashMap相比有哪些区别? 线程:ConcurrentHashMap线程安全,HashMap线程不安全 方法上:ConcurrentHashMap新增了一些方法putIfAbsent(K key, V value) 如果指定键已经不再与某个值相关联,则将它与给定值关联。 优先级:ConcurrentHashMap有了线程优先级的改变方法,在写入的时候弄原创 2016-10-06 18:34:11 · 232 阅读 · 0 评论 -
HashMap的实现原理以及面试官的提问
HashMap:按照特性来说明一下,储存的是键值对,线程不安全,非Synchronied,储存的比较快,能够接受null。按照工作原理来叙述一下,Map的put(key,value)来储存元素,通过get(key)来得到value值,通过hash算法来计算hascode值,根据hashcode值来决定bucket(桶),储存结构就算哈希表。 提问:两个hashcode相同的时候会发生说明? ha原创 2016-10-04 17:45:07 · 6492 阅读 · 0 评论 -
Hashtable与HashMap的区别?
1线程安全方面:Hashtable中有synchronized方法,是线程安全的,HashMap是线程不安全的 2默认容量:Hashtable默认容量是11,增加是*2+2;HashMap是16,增加是*2 3键值对:Hashtable不允许出现null,HashMap可以出现null(key,value)都可以 4遍历:Hashtable用Enumeration进行遍历,HashMap用It原创 2016-10-06 17:14:11 · 140 阅读 · 0 评论 -
Java中多线程的实现方式
一共有三种: A 继承Thread类 步骤:1继承线程类 public class Thread1 extend Thread{ } 2 重写run方法 public void run() { } 3新建线程类 Threa原创 2016-10-08 18:24:16 · 153 阅读 · 0 评论 -
String字符串常用API总结
返回值: int length()字符串长度 char charAt(int i)索引i处的字符 int indexOf(String s)返回指定字符串在字符串中出现的位置 String concat(String s)将字符串拼接在在原字符串的后面 String substring(int i,int j)该字符串原创 2016-10-07 17:43:30 · 361 阅读 · 1 评论 -
数组的4个基本操作:找出最大元素、平均值、复制、反转。
数组的基本操作原创 2016-10-07 15:56:30 · 508 阅读 · 0 评论 -
数据结构的基本概念?
数据:能够被计算机识别的并被计算机程序处理的都是数据。 数据元素:数据的基本单位。 数据项:数据结构讨论中最小的单位,是数据记录中最基本的、不可分割的最小单位。 数据类型:定义一个值的集合以及这个值集合上的操作 逻辑结构:数据之间的逻辑关系包括集合、线性、树、图。 物理结构:数据逻辑结构在计算机中的实现,顺序表、链表、索引、散列(根据函数将数据结构散列到计算机中)。原创 2016-10-07 15:03:49 · 188 阅读 · 0 评论 -
Shell排序误区
视频: 思想:其实就是缩小增量的思想在里面, 步骤:1定义一个增量int h =1,满足hpublic static void Shell(int[] data){ while(h<data.length/3) { h=h*3+1; } while(h>0) { for(int in原创 2016-10-07 12:55:21 · 253 阅读 · 0 评论 -
关于插入排序的逻辑错误和思想
思想:将排序分为排序与未排序,将未排序的数依次向排序数进行比较 步骤:1从第一个数开始(无可置疑这是一个可以被看着排序了的数) 2将下一位的数(从第一个开始后面的数都暂时归类为没有排序的数)A,与第一个数进行比较 3如果第一个数大于A,那么就把A移动一位 4因为第一个数前面没有数了,那么就把A插在一个数的位置上 5此时第一个数与A都已经排好序了 6依次重复编程逻辑错位:这里肯定要定义一个原创 2016-10-07 10:53:42 · 299 阅读 · 0 评论 -
JVM是什么?
从抽象的角度看: Java虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别Java独特的.class文件(字节码),能够将这些文件中的信息读取出来,写入计算机内存。使得Java程序只需要生成Java虚拟机上的bytecode就行,就能够在不同平台上进行操作。 从线程的角度看: 能够在不同操作系统中运行的,一定是个进程。原创 2016-10-06 21:44:09 · 3774 阅读 · 0 评论 -
Class文件是什么及其加载?
Java编译器编译好.class文件后,产生的文件会放入磁盘或者网络。这种.class文件其实是Java独有的字节码(bytecode),只有Java虚拟机才能识别的机器码,Jvm读取.class文件,取出二进制数据,加载到内存中去,解析.class文件信息,生成对应的class对象。 过程如图:原创 2016-10-06 21:26:19 · 353 阅读 · 0 评论 -
Error和Exception的区别
Error:值得是指与虚拟机相关的问题,比如虚拟机崩溃,虚拟机错误,内存空间不足,方法调用栈溢出。 对于这类错误应建议中断。 Exception:是指程序员可以处理的异常,可以捕获并且能够恢复,遇到这类异常,应该尽可能处理异常,使程序恢复。原创 2016-10-06 20:32:32 · 226 阅读 · 0 评论 -
输入输出流简单理解
输入流、输出流到底应该如何理解呢? 输入流:从中读取数据 输出流:从中写入数据 我们应该从内存的角度来进行分析,比如:内存到硬盘,只能讲内存中的数据输出到硬盘中,(数据从内存到硬盘)这就是输出流。再比如:Server到电脑,Server中的内存将数据给到电脑,用的是输出流,电脑段的中的内存从服务器中读取数据,就是输入流。 InputStream/Reader:输入流的基类,前者字节流,后者字原创 2016-10-06 19:23:36 · 3891 阅读 · 1 评论 -
Collection与Collections的区别?
1定义:Collection是一个接口,Collections是一个集合操作类 2功能:Collection是为具体的集合提供最大化的统一操作,Collections是一个工具类服务于Collection框架原创 2016-10-06 18:00:43 · 234 阅读 · 0 评论 -
ArrayList、Vector与LinkedList的区别?
1线程上:Vector有Synchroinzed是线程安全,ArrayList线程不安全,LinkedList也是线程不安全2在扩容上面:ArrayList是50%+1,Vector是直接增加一倍3数据结构上面:ArrayList与Vector都是数组实现,LinkedList是用双向链表实现4实现的接口:ArralList与Vector都是实现List接口,LinkedList不断实现List接口原创 2016-10-06 17:57:46 · 241 阅读 · 0 评论 -
什么是泛型?为什么要用泛型?什么是泛型擦除?泛型擦除的过程?
泛型:本质是参数化类型。 为什么要使用?创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制进行转换。创建集合的时候,我们就指定集合类型,避免这个过程。 泛型擦除?Java的泛型处理过程都是在编译器中进行的,编译器首先会生成bytecode码,这个过程是不包括泛型类型,泛型类型在编译的时候是原创 2016-09-28 21:59:44 · 2870 阅读 · 0 评论 -
进制转换
Java中对进制转换封装好了一下常用的进制转换: Integer String s:Integer.toString(int i,int radix),将第一个数转换为radix进制的数,返回类型是字符串。 Int s:Integer.parseInt(int i,int radix)将第二个数转换为radix进制的数,返回类型是整型。BigInteger: 构造方法: BigIntege原创 2016-10-14 10:33:31 · 166 阅读 · 0 评论 -
Switch后面可以接什么
Switch后面可以接:byte short int char 还可以接String,枚举类型 不能long 还有boolean类型原创 2016-10-23 22:25:38 · 4008 阅读 · 0 评论 -
什么是线程安全?如何保证线程安全?
线程安全:就是多线程访问同一代码,不会产生不确定结果。(比如死锁) 如何保证呢:1使用线程安全的类 2使用synchronized同步代码块,或者用Lock锁 3多线程并发情况下,线程共享的变量改为方法局部级变量原创 2016-10-08 20:34:24 · 5782 阅读 · 0 评论 -
关于Set集合的使用小结
Set是什么?第一点:我们把这个集合想象成一个罐子,他记不住元素的顺序。 第二点:这个集合不允许出现相同的元素。 第三点:这个集合的长度表示方法是size()。接下来从API中找几个常用的方法:摘要 booleanadd(E e) 如果 set 中尚未存原创 2016-09-06 20:51:08 · 422 阅读 · 0 评论 -
Java中|、||、&、&&的区别
|、||都是表达与的意思。&、&&都是表达或的意思。按照|、||的区别来详细说明:I:表示位与||:表示逻辑与位与是什么意思呢?比如:a.equals(method)|b.equals(method)前后都很执行,但是a.equals(method)||b.equals(method),会按照a.equals(method)是否正确进行判断,如果正确,就不会执行后面的部分原创 2016-09-18 19:04:38 · 177 阅读 · 0 评论 -
Java按值传递与按引用传递
概念:Java中按值传递:是指传递值的拷贝,引用传递:传递地址值。基本类型和String类型中的某种模式(String str="我爱大家")是按照值传递,其他类型都是引用传递原创 2016-09-18 18:58:06 · 168 阅读 · 0 评论 -
有关Java.Math的一些注意
Math类的一些坑原创 2016-09-18 17:10:36 · 244 阅读 · 0 评论 -
JDBC基础
JDBC:Java Database Connetivity,即Java数据库连接。SQL:数据库操作语言。按照性质可以分为:DML(Database Manipulation Lanauage):数据库定义语言。我的理解是操作数据库里面的数据,有:select(选择)、delete(删除)、update(更新)、insert插入)。DDL(Database Defination原创 2016-08-19 00:01:49 · 191 阅读 · 0 评论 -
JVM加载一个类实例化的过程
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?正确答案: C A父类B静态代码块->父类B构造函数->子类A静态代码块->父类B非静态代码块->子类A构造函数->子类A非静态代码块B父类B静态代码块->父类B构造函数->父类B非静态代码块->子类A静态代码块原创 2016-09-02 15:29:06 · 1497 阅读 · 0 评论 -
线程中有关wait()和sleep()的区别
有关wait()和sleep()的区别原创 2016-09-14 10:04:16 · 760 阅读 · 0 评论 -
异常体系
要明确异常继承体系,用表格来表示,这样理解的更快Java.lang.Throwable java.lang.Throwable.Error java.lang.Throwable.Exception执行异常(RuntimeException)检查异常(CheckedExce原创 2016-09-02 10:15:01 · 222 阅读 · 0 评论 -
关于数据类型转换的小结
学习Java半年了,来对数据类型装换进行一个小结。主要是4个常见的:First,Automatic:byte、short、char——int——long——float——double,只是Java自己默认转换的。Second:就是强制转换了,如果这个数在这个范围内,我们就强制转换,规则就是(类型);For example:double a=33.5;(int) a=33。Thirdly原创 2016-09-12 20:18:40 · 177 阅读 · 0 评论