
Java
文章平均质量分 74
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
「已注销」
战斗意志!
展开
-
多线程概述
1、什么是多线程? 首先来明白一个进程概念,一个进程是指一个正在运行的应用程序,而线程就是进程的执行单元,是进程的一条执行路径。进程与线程的关系是:一个进程可以包括多条线程。所以多线程就是指一个应用程序有多条执行路径。 我们经常用的下载器,能够同时执行多个下载任务,这就是多线程,值得注意的是,经常使用的DOS窗口是单线程的,一条指令执行结束后才能执行下一条指令。 值得注意的是:C原创 2015-11-25 17:25:23 · 1083 阅读 · 5 评论 -
反射越过泛型检查
在博客《泛型--前世今生》中,我们了解到像如下:public class ArrayListTest { public static void main(String[] args) throws Exception { ArrayList array = new ArrayList(); array.add(10); //报错 array.add("hello");原创 2015-11-25 12:59:43 · 1348 阅读 · 5 评论 -
反射获取Field和Method对象
1、反射获取Field对象同样,以上篇文章《》中的person类为例,首先获取person类的字节码文件:Class c = Class.forName("cn.itcast_01.Person");然后:(1)获取所有公共成员变量Field[] fields = c.getFields();(2)获取所有成员变量Field[] fields = c.getDeclaredFi原创 2015-11-24 22:37:24 · 2793 阅读 · 3 评论 -
反射获取构造方法并创建对象
1、什么是反射? 反射:在运行状态下,通过class文件对象(Class的对象),去使用构造方法,成员变量,成员方法。 首先创建一个person类:public class Person { private String name; public int age; public Person() { }} 获取class文件对象:有三种方法如下: (1)Ob原创 2015-11-24 21:40:54 · 1470 阅读 · 3 评论 -
可变参数
前言:提到可变参数可以用函数重载来做一个引子,首先来看一个类public class ArgsDemo { public static void main(String[] args) { int a = 10; int b = 20; int result = sum(a, b); System.out.println(result); int c = 30;原创 2015-11-24 19:37:42 · 1120 阅读 · 8 评论 -
用IO流实现文件复制功能
1、计算机复制文件的原理? 原理:计算机中的文件都是以字节为单位的,当复制文件时,首先读取待复制文件,然后将读取到的信息写入到目的文件中去。 方式:IO流中复制文件提供两种方式,字节流和字符流。 (1)字节流输入输出功能:InputStream(输入,用于读取);和OutputStream(输出,用于写出)。主要用来处理字节或二进制流对象(图片、音频、视频等)。 (2)字符原创 2015-11-24 15:57:37 · 3963 阅读 · 4 评论 -
递归解决斐波那契数列
1、什么是递归? 递归:递归是方法定义调用方法本身的现象。递归举例如下:public class DiGuiDemo { //递归方法举例 public void show() { show(); }}2、递归的注意事项?(1)递归一定要有出口。否则就会死递归。 上面举例用的递归就是一个死递归,方法永远都在进行自身调用,最终一定会陷入内存崩溃。所原创 2015-11-24 13:05:51 · 2659 阅读 · 9 评论 -
异常处理:对 finally 的延伸探索
1、finally中的代码真的会永远执行吗? 会永远执行,但是要排除一个特殊情况,就是catch中没有 System.exit(0),如下: private static int method() { int a = 10; try { System.out.println(a / 0); //程序运行到这里将跳转入catch System.out.println("原创 2015-11-24 10:51:14 · 898 阅读 · 6 评论 -
泛型--前世今生
1、什么是泛型? 泛型:任意的类型。是一种把明确数据类型的工作放在了创建对象或者调用方法时候进行的特殊的类型,一般只应用在集合里。 泛型的格式:,举例如下:ArrayList array = new ArrayList();2、为什么有泛型?泛型有什么好处? 为什么有泛型:我们知道,数组只能存储一种数据类型;集合可以存储任意类型的对象,但是我只想让我的存储一种类型,不想让原创 2015-11-23 21:42:39 · 1205 阅读 · 11 评论 -
集合及集合体系
1、什么是集合? 定义:对于面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。 数组可以对多个元素进行存储,但是数组的弊端是长度固定。这样,数组将不能满足长度变化的要求。所以,就出现了集合供我们使用。 特点:长度可以发生改变、只能存储对象、可以存储多种类型对象(但是只存储一种)。2、集合和数组的区别? (1)长度:集合长度可变;数组长度固定。原创 2015-11-22 22:41:28 · 1649 阅读 · 6 评论 -
static 与 final 关键字详解
1、static? (1)静态成员变量 被static修饰的成员变量其实是一个类成员变量,当这个类被虚拟机第一次加载的时候,就会为该变量分配内存空间,当该类创建实例时,不会生成对static变量的拷贝。而是多个该类的实例共享该变量。所有该类的对象都可以操作这块存储空间。 static定义的变量的初始化必须在定义时或者通过静态代码块初始化,并会优先于任何其它非static变量,原创 2015-11-22 19:18:04 · 1351 阅读 · 6 评论 -
匿名内部类
1、什么是匿名内部类? 定义:匿名内部类就是没有名字的内部类,更准确一点,是匿名的局部内部类。 匿名内部类出现的前提:必须存在一个类,抽象类,或者接口,来让匿名内部类继承或实现。 匿名内部类的格式:new 类名或者接口名() { 重写类或者接口中的方法。 也可以自己定义新的方法。 };2、匿名内部类举例并解析?//定义接口,这是匿名内部类出现的前提原创 2015-11-22 17:57:42 · 1095 阅读 · 2 评论 -
内部类详解
1、什么是内部类? 定义:将一个类定义在另一个类的里面,对里面那个类就称为内部类(也称为内置类,嵌套类)。例如,把类B定义在类A里面,B就被称为A的内部类。 示例如下://定义外部类class Outer{ private int num = 10; //定义内部类 class Inner { public void show() { System.ou原创 2015-11-22 16:26:47 · 926 阅读 · 4 评论 -
Java权限修饰符解析
前言:在面向对象编程语言中,我们常用的权限修饰符有四种,分别是:private、public、protected和默认修饰符,那么被这四种权限修饰符修饰的方法在不同的类中调用都有什么特点呢?除了修饰方法,它们还能够修饰什么?1、被权限修饰符修饰的方法调用特点 (1)在本类中。首先我们定义一个fu类,并为它分别用四种修饰符修饰四种方法://定义父类public class Fu{原创 2015-11-22 10:29:37 · 1252 阅读 · 2 评论 -
原码、补码与反码
前言:计算机中的数据都是以补码形式存在的,那么什么是补码呢?1、首先了解原码 计算机只能识别二进制0和1,但是我们日常用的数据是有正负符号的,所以需要使计算机中的二进制数据也能表示符号,这就是原码、反码、补码的出现需求。 有符号的数据表示法为:原码、反码、补码。因为数据是有符号的,所以规定最高位是符号位,其它位是数据位,并且,符号位也是参与运算的。 原码:将一个整数,转换成二原创 2015-10-28 11:08:52 · 1381 阅读 · 23 评论 -
进制介绍与进制之间的转换
1、什么是进制? 进制就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 电脑里边我们经常使用的是二进制、八进制、十进制、十六进制。十进制我们非常熟悉,二进制也知道,那么八进制、十六进制是怎么来的呢?2、八进制、十六进制的由原创 2015-10-28 09:42:34 · 1697 阅读 · 14 评论 -
path、classpath环境变量配置
1、什么是环境变量? 百度百科:一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 个人理解:环境变量有许多种,我们需要了解的path、classpath就是关于路径的环境变量,我们知道,系统要运行一个程序首先要找到程序所在的路径进而找到程序完成对程序的调用。但是当我们要求系统运行一个程序却没有告诉系统所要运行程序所在的完整路径时,系统就会默原创 2015-10-26 16:10:34 · 12672 阅读 · 21 评论 -
正则表达式初识
1、对于正则表达式的理解 正则表达式,顾名思义,“正”,正确的,则,“规则的”,就是符合正确的规则的表达式。其定义为:指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则,有自己特殊的应用。从定义上看,也可以得知,正则表达式的本质就是“符合一定规则的字符串"。2、正则表达式的规则 (1):字符类 [abc]:表示出现a,b或c中的任意一个。原创 2015-10-19 17:18:01 · 1017 阅读 · 4 评论 -
什么是编程?
学了这么久的的计算机,直到现在还不太理解编程, 那么,编程到底是什么呢? 首先要了解一个概念,就是:计算机很笨!那么,计算机笨到什么程度呢?计算机不能知道我们想做什么事情,它只会等待我们给它发布命令,你发布什么命令,它就去做什么事情,我们写程序,也就是让命令被计算机去识别,然后执行,而且只会执行你给它的命令,多余的一点都不会做;计算机也是最诚实的,它会严格的按照你发布的每条命令来执行。原创 2015-10-12 11:13:17 · 1928 阅读 · 10 评论 -
泛型
泛型简介: 泛型是在Java JDK1.5出现的一种安全机制。它的作用是在定义集合时指定向集合中添加的数据类型,而不能添加指定类型之外的类型。当泛型给javac编译器提供集合时,会去掉“类型”信息,保证了运行效率。也正因为编译生成的字节码会去掉泛型的类型信息,因此我们只要能跳过编译器,就可以往泛型集合中加入其它类型的数据,如用反射得到集合,再调用add方法即可。泛型格式: 向中原创 2015-10-10 14:16:20 · 845 阅读 · 6 评论 -
异常处理----Throwable类
前言:在编程中对异常的处理是很重要的,这直接关系到写出程序的健壮性、稳定性,今天我们就来了解一下异常处理中的Throwable类以及它的子类。Throwable是什么? Throwable是Java中专门处理异常的类,是所有错误或异常的超类,隶属于Java.lang包下。当程序错误时,虚拟机就会将其实例抛出,它的两个直接子类分别是Error类和Exception类,分别被用来处理两类异常原创 2015-10-10 11:35:02 · 1879 阅读 · 5 评论 -
为什么接口中只能定义常量?
学习完接口后,知道了接口中只能定义常量,即使你的代码是这样写的:public int a,底层语言也会默认加上public static final int a转为常量,那么这是为什么呢? 我们都知道,接口中不能定义方法的实现,但是抽象类中是可以定义变量、常量以及方法的实现的,所以我们可以将接口看为比抽象类更高层次的抽象,是特殊的抽象类。加入接口可以定义变量,因为接口中的方法都是抽象的,我们无法通过行为,例如set()方法来修改这一属性值。原创 2015-09-25 11:52:08 · 15056 阅读 · 18 评论 -
必备的Java基础知识
Java起源:SUN(全称Stanford University Network,后来被Oracle公司以74亿美金收购)公司的工程师考虑到c++复杂性,于是使用c++开发出了新的平台——Oak(橡树)平台,主要设计师为James gosling,后来oak得到了sun公司首席执行官Scott McNealy的支持,为了更好地进行推广,正式将Oak更名为Java。Java开发的三个方向:原创 2015-08-21 11:55:10 · 1358 阅读 · 12 评论 -
再谈循环嵌套
(1)循环嵌套循环嵌套,就是循环之中还有循环,可以形象的理解为大圈套小圈。例如下面循环:class Demo{public static void main(String[] args){for (int x=0; x{for (int y=0;y4; y++) //内循环4次{System.out.print("*"); }函数封装、函数调用原创 2015-07-27 17:57:08 · 1236 阅读 · 9 评论 -
反射运行配置文件
1、什么是配置文件? 配置文件有很多种,最常用的是XML文件,Java中配置文件后缀名为.properties,内容为“键--值”形式,文件中键是固定的、值是可以修改的,用“#”来标明语句注释。编程中用 Properties 类来读取配置文件信息,Properties类主要方法如下: (1)getProperty ( String key):通过参数 key ,获取 key 所对应的原创 2015-11-25 08:37:57 · 923 阅读 · 5 评论 -
多线程中的锁机制
1、为什么要加入锁机制? 首先看一下单例设计模式中懒汉式(详情请点击博客《设计模式之--单例模式》)的一段代码:public class Student { private Student() { } //声明对象的引用,但是不创建对象 private static Student s = null; //调用公共方法时才创建对原创 2015-11-25 18:55:58 · 4296 阅读 · 5 评论 -
线程核心概念
1、关于锁对象。(1)同步代码块的锁对象是什么? 同步代码块的锁是任意对象(即锁对象,可以选择任意对象)。 (2)同步方法:就是把锁加在方法上 格式:在方法上加synchronized关键字 同步方法的锁对象是谁? this对象 (3)静态方法的锁对象是谁呢? 是当前类的字节码文件对象。 类名.class - Class原创 2015-11-25 20:42:52 · 1236 阅读 · 6 评论 -
网络编程三要素
1、什么是网络编程?网络编程:使用编程语言实现多台计算机的通信。2、网络编程三大要素。(1)IP地址:网络中每一台计算机的唯一标识,通过IP地址找到指定的计算机。(2)端口:用于标识进程的逻辑地址,通过端口找到指定进程。(3)协议:定义通信规则,符合协议则可以通信,不符合不能通信。用生活中的例子说明:假如我要和小明说话,首先我要到小明的住址找到小明(相当于通过IP找到指定计原创 2015-11-26 09:00:08 · 12025 阅读 · 10 评论 -
UDP协议模拟计算机通信
回顾一下UDP协议的特点:(请点这里)需要将数据打包,传输速度快,不用建立连接的,不保证待接收方一定会接收到消息,不可靠。1、首先了解一下Socket服务 Socket包装了IP地址和端口信息,计算机之间进行通信时,数据通过发送端Socket服务发出,通过接收端Socket服务接收,如图:2、创建发送端思路: (1)创建发送端Socket服务对象 (2)接原创 2015-11-26 14:33:05 · 3097 阅读 · 9 评论 -
TCP协议模拟用户登录
首先来回顾一下TCP协议的特点:(请点我),在通信的两台设备之间建立连接通道,因为建立连接,传输可靠一些,但是速度会慢一些。TCP协议又称为三次握手协议,因为建立过程有三步,发送请求、获取反馈、建立连接。需求:通过TCP协议模拟用户登录,服务器端通过验证,则显示“您好,欢迎使用!”;否则返回“用户不存在!请重新输入“1、建立服务器端public class ServerDemo {原创 2015-11-26 17:05:13 · 3386 阅读 · 12 评论 -
从原理剖析自动拆装箱
前言:自动拆装箱是JDK1.5的新特性,这一特性使得基本类型与对应的包装器类型(引用类型)之间能够直接进行互相转换,例如将int类型与Integer类型,我们可以将int类型当做Integer类型来使用。非常方便,但是这样也隐藏了许多细节,那么这些细节是什么,相互转换的原理是什么呢?1、什么是自动拆装箱? 定义:能够使基本类型与其对应的包装器类型之间自动相互转换。对应关系如下:原创 2015-12-13 10:01:41 · 2958 阅读 · 5 评论 -
自定义枚举类
前言:说到枚举类,就要说一下单例模式,单例模式是在类本身只创建出一个实例,且外界不能够创建该类的实例。而枚举类与单例类似,要求类只能本身创建有限个数的实例,同样外界不能创建该类实例,可以称之为“多例模式”(名字是我自己取的,没有权威认证)。1、枚举类的特点。 (1)所有枚举类的公共父类都是Enum。 (2)枚举项必须写在枚举类的最前面,每个枚举项之间用逗号隔开,如果枚举原创 2015-12-13 22:07:57 · 2266 阅读 · 1 评论