Java相关知识
画家丶
要有想法,要有行动!
展开
-
mac 下openOffice服务的安装
编辑历史:2018.4.8 小赖 文档初始化1.安装准备安装 Homebrew 及 Homebrew-CaskHomebrew 是一个Mac上的包管理工具。使用Homebrew可以很轻松的安装缺少的依赖。Homebrew-Cask是建立在Homebrew基础上的软件安装命令行工具,最新版本的Homebrew已集成此工具。使用以下命令安装Homebrew/u...原创 2018-04-08 17:50:56 · 5336 阅读 · 0 评论 -
Java 流缓冲区问题
听着张孝祥老师关于缓冲区知识的课,发现还是有一些没有掌握,动手试了一下,果然发现了问题。先讲一下关于java缓冲区的知识,应用程序和IO设备之间存在一个缓冲区,一般流是没有缓冲区的,但是如果存在缓冲区,就会发现很大的问题。错误代码如下:为了确保问题发生,我使用了BufferedOutputStream,使得手动构造出了一个缓冲区。[java] view plai转载 2015-08-12 18:55:23 · 382 阅读 · 0 评论 -
Java I/O 详解
今天总结一下Java I/O文件读写基本类相关知识和概念,对于程序设计者来说,创建一个好的输入/输出系统是一项艰难的任务,其中挑战来源于所有的可能性,不仅存在各种源端与接收端(文件,控制台,网络链接等),而且还需要以各种不同的方式与它们通信(顺序,随机存取,缓冲,二进制,按字符,按行,按字等)。 Java I/O主要包括如下几个层次:1. File(文件特征与管理):用于文转载 2015-08-11 19:48:59 · 391 阅读 · 0 评论 -
Java 容器中的泛型
泛型Generics 所谓泛型,就是变量类型的参数化。 泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能。 在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。 使用泛型时如果不指明参数类型,即泛型类没有参数化,会提示警告,此时类型为Object。转载 2015-07-30 10:18:21 · 440 阅读 · 0 评论 -
Java 容器与泛型
1、容器类JDK API中专门设计用来存储其他对象的类,一般称为对象容器类,简称容器类,这组类和接口的设计结构也被统称为集合框架(Collection Framework)。集合框架中容器类的关系如下图示:Set的三个常用实现类:HashSet类是Set接口实现类之一,使用较广泛,它不保存元素的加入顺序。HashSet类根据元素的哈希码进行存放,取出时也转载 2015-07-30 09:55:25 · 1785 阅读 · 0 评论 -
Java 泛型的详解
1. 概述在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。例如原先的类型List,现在在细分成List, List等更多的类型。注意,现在List, List是两种不同的类型,他们之间没有继承关系,即使String继承了Object。下面的代码是非法的 List ls = new Arra转载 2015-07-30 08:44:38 · 353 阅读 · 0 评论 -
Java 流
首先,流是什么?流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念转载 2015-08-11 20:39:57 · 437 阅读 · 0 评论 -
java 对象的生命周期
在Java中,对象的生命周期包括以下几个阶段:1. 创建阶段(Created)2. 应用阶段(In Use)3. 不可见阶段(Invisible)4. 不可达阶段(Unreachable)5. 收集阶段(Collected)6. 终结阶段(Finalized)7. 对象空间转载 2015-07-18 07:15:19 · 369 阅读 · 0 评论 -
Java 迭代器以及和for循环的比较
迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部.1.IteratorJava提供一个专门的迭代器>Iterator,我们可以对某个序列实现该interface,来提供标准的Java迭代器。Iterator接口实现后的功能是“使用”一个迭代器.转载 2015-07-30 08:39:38 · 4889 阅读 · 0 评论 -
java 如何使用缓冲区对文件进行读写操作
首先,了解下什么是缓冲区: 电脑内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈——就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆——就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自转载 2015-08-12 19:06:29 · 2872 阅读 · 0 评论 -
Android 主要目录及文件简介
build:构建目录,相当于Eclipse中默认Java工程的bin目录。 libs:依赖包 src: main java Java代码 res 资源文件 layout App布局及界面元素配置 menu App菜单配置 values转载 2015-08-14 06:26:18 · 461 阅读 · 0 评论 -
nginx 之 413 Request Entity Too Large(请求实体太大)
编辑历史:2018.3.14 小赖 文档初始化 问题描述:启动tomcat访问上传资源的接口,当上传的资源超过1M时,就会返回:413 Request Entity Too Large问题分析:nginx作为反向代理服务器 , nginx最先收到client请求 ,nginx对于post请求实体的默认限制为1M,超过默认后就会报错 413 Request Entity To...原创 2018-03-14 14:42:55 · 16462 阅读 · 4 评论 -
Java String 对 null 对象的容错处理
Java String 对 null 对象的容错处理最近看到这样一段话: 原生类型会被自动初始化为 0,但是对象引用会被初始化为 null,如果你尝试调用该对象的方法,就会抛出空指针异常。通常,你可以打印一个 null 对象而不会抛出异常。第一句相信大家都会容易理解,这是类型初始化的基础知识,但是第二句就让我很疑惑:为什么打印一个 null 对象不会抛出异常?带着这个疑问,我开始...转载 2018-02-26 18:30:02 · 11865 阅读 · 0 评论 -
Java开发必会的Linux命令
作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用–help查看帮助或者直接通过google搜索学习。1. 查找文件...原创 2018-02-26 17:51:25 · 10946 阅读 · 0 评论 -
Java 线程详解
Java线程:概念与原理一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe转载 2015-08-23 08:00:33 · 494 阅读 · 0 评论 -
java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问ob转载 2015-08-20 20:33:32 · 345 阅读 · 0 评论 -
java join的用法
join的用法,先看几个例子在说。 程序1:public class ThreadTest implements Runnable { public static int a = 0; public synchronized void inc() { a++; } public void run() { for (int转载 2015-08-20 20:38:46 · 527 阅读 · 0 评论 -
Java中关于原子操作和volatile关键字
研究ThreadPoolExecutor的时候,发现其中大量使用了volatile变量。不知为何,因此做了一番查找,研究: 其中借鉴了很多网上资料。 在了解volatile变量作用前,先需要明白一些概念: 什么是原子操作? 所谓原子操作,就是"不可中断的一个或一系列操作" , 在确认一个操作是原子的情况下,多线程环境里面,我们可以避免仅仅为保护这个操作在外围加上性能昂贵的锁,甚至借助于转载 2015-08-21 06:45:51 · 541 阅读 · 0 评论 -
匿名内部类引用外部对象要加final修饰符的原因
为什么在匿名内部类中引用外部对象要加final修饰符呢,因为,在匿名内部类中引用的外部对象受到外部线程的作用域的制约有其特定的生命周期,以线程为例,当外部的变量生命周期已经完结之后,内部的线程还在运行,怎么样解决这个外部生命周期已经结束而在内部却需要继续使用呢,这个时候就需要在外部变量中添加final修饰符,其实内部匿名类使用的这个变量就是外部变量的一个“复制品”,即使外部变量生命周期已经结束,内转载 2015-08-16 10:58:53 · 2057 阅读 · 0 评论 -
Java Collection和Collections的区别
1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 1) 排序(Sort)使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都转载 2015-07-30 08:16:08 · 418 阅读 · 0 评论 -
Java StringBuffer类
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。转载 2015-07-28 09:35:49 · 345 阅读 · 0 评论 -
Java File 类
File(文件类) 尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因转载 2015-08-10 20:04:44 · 384 阅读 · 0 评论 -
成员变量和局部变量
成员变量:作为类的成员而存在,直接存在于类中。所有类的成员变 量可以通过this来引用。局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。 1.成员变量可以被 public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰;两者都可以定义成final型。 2.成员变量存储在堆翻译 2015-06-17 17:23:54 · 555 阅读 · 0 评论 -
组合和继承
继承和组合的概念 在新类里简单地创建原有类的对象。我们把这种方法叫作“组合”,因为新类由现有类的对象合并而成。我们只是简单地重复利用代码的功能。 第二种方法是创建一个新类,将其作为现有类的一个“类型”。我们可以原样采取现有类的形式,并在其中加入新代码,同时不会对现有的类产生影响。这种魔术般的行为叫作“继承”(Inheritance),涉及的大多数工作都是由编译器完成的。对于转载 2015-06-20 15:31:03 · 454 阅读 · 0 评论 -
对于 基类引用指向导出类对象 情况的理解
Java的多态性面向对象编程有三个特征,即封装、继承和多态。 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。 继承是为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢? 方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大转载 2015-06-20 22:04:12 · 480 阅读 · 0 评论 -
Java 什么时候该用static
static 是静态 你不要理解为静态变量因为他不仅仅可以修饰变量还可以修饰 方法 例如:private static void test(){} 分不清的话我告诉你 那东西并不常用。举例:比如 现在有个persion类 类里面有name属性 和 country=“cn”属性 里面有个show方法 这时候你要用这个类 那你自然要new 他 Persion p1 = new Perso转载 2015-06-21 13:12:15 · 4700 阅读 · 0 评论 -
Java接口 和 接口
1.定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。 2.功能: 在J转载 2015-06-20 16:00:49 · 1853 阅读 · 1 评论 -
Java 初始化顺序
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;最后,给你个例子吧。你运行着帮助理解。class Super{public stat转载 2015-06-21 14:21:44 · 428 阅读 · 0 评论 -
关于 i++和++i 以及for循环
1.i与i++的区别是: ++i 是先执行 i=i+1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i=i+1。2.但是如果不了解 for 循环的执行顺序则容易出错。 for循环的执行顺序如下:for(sta1;sta2;sta3){ sta4;}1.进入循环执行sta1;//只是进入的时候执行.2.执行sta2;//条件为真转载 2015-06-19 14:57:40 · 487 阅读 · 0 评论 -
对于 A a = new A(); 的一些理解
为便于说明,我们先定义一个简单的类: class Vehicle { int passengers; int fuelcap; int mpg; } 有了这个模板,就可以用它来创建对象: Vehicle veh1 = new Vehicle(); 通常把这条语句的动作称之为创建一个对象,其实,它包含了四个动作。 1)右边的“new Vehicl原创 2015-06-17 20:19:53 · 3019 阅读 · 0 评论 -
Java 构造器(定义,作用,原理)
首先要注意的是Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。因为构转载 2015-06-21 15:10:54 · 5161 阅读 · 1 评论 -
静态方法中调用非静态方法
public class A{//类A中非静态方法public void func(){ ...... }//类A中静态方法(主函数)public static void main(String[] args){A a=new A();//需实例化A的对象后才可以调用A中非静态方法a.func();}如上面这个简单的例子,静态方法对非静态方法发起调用转载 2015-06-22 15:46:03 · 821 阅读 · 0 评论 -
Java中HashSet要重写equals方法和hashCode方法
Java编程使用HashSet添加对象时,由于要符合Set的特点(没顺序,不重复)所以必须重写equals方法和hashCode方法。为什么要这样呢?请看:Java中关于HashSet添加自定义对象时,自定义类要重写equals方法和hashCode方法的前世今生...第一:Set集合没有顺序,也不允许重复。为什么要这样:模拟现实的集合。这里的重复只是:对象的重复何为对象的重复:指的就是同一个对象转载 2015-08-08 09:32:08 · 4893 阅读 · 1 评论 -
Java class对象的详解
java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class对象,然后再生成Instance。那Class对象的生成方式有哪些呢,以及其中是如何秘密生成的呢?Class对象的生成方式如下:1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+转载 2015-07-27 10:46:54 · 458 阅读 · 0 评论 -
Java类型转换
object对象转换为String的一些总结--------------------------------------------------------------------------------在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.toString(),(Stri转载 2015-06-28 13:51:03 · 438 阅读 · 0 评论 -
Java 装箱和拆箱
Java中的包装类 装箱和拆箱在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,不能作为对象调用其toString()、hashCode()、getClass()、equals()等等方法。 所以在java中,针对8种基本数据类型,提供了针对每个基本数据类型的包装类。如下:INDEX 基本数据类型 包装类1 int In转载 2015-06-29 17:12:27 · 414 阅读 · 0 评论 -
对于return new A();
A a1 = new A();它代表A是类,a1是引用,a1不是对象,new A()才是对象,a1引用指向new A()这个对象。在JAVA里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。JAVA表面上看起来没有指针,但它的引用其实质就是一个指针,引用里面存放的并不是对象,而是转载 2015-06-24 13:46:30 · 4198 阅读 · 1 评论 -
try 和 catch
首先要清楚,如果没有try的话,出现异常会导致程序崩溃。而try则可以保证程序的正常运行下去,比如说:try{int i = 1/0;}catch(Exception e){........}一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错!try{}里边就是会出现异常的代码。而catch转载 2015-06-25 18:41:20 · 610 阅读 · 2 评论 -
异常处理
异常处理:/** *异常: 就是程序在运行时出现不正常情况 *异常由来: 问题也是现实生活中的事物,也可以通过java类的形式进行描述,并进行封装. * *对于问题的划分: * 1: 严重的问题 (Error) : java通过Error类进行描述,一般不编写针对性的代码进行处理 * 2: 非严重的问题 (Exception):转载 2015-06-25 18:34:31 · 431 阅读 · 0 评论 -
再论 new 对象 时 jvm 的工作步骤
//父类class Fu{//父类构造方法Fu(){this.getNum();}public void getNum(){System.out.println("sdasdads");} }//子类class Zi extends Fu{private int num=4;//构造函数public Zi(){转载 2015-06-22 18:43:14 · 1174 阅读 · 0 评论