自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 方法的参数传递机制

Java里的方法是不能独立存在的,调用方法必须由类或者对象作为主调者,如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传递给形参的参数值也被称为实参。Java的参数传递只有一种方式:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不受任何影响。下面程序演示了方法参数传递的效果。public class C { private

2015-12-08 00:16:25 1166 1

原创 线程的同步

多线程编程时有趣的事情,它常常容易突然出现“错误情况”,这是由于系统的线程调度具有一定的随机性。即使程序在运行过程中偶尔出现问题,那也是由于我们编程不当引起的。当使用多个线程来访问同一个数据时,非常容易出现线程安全问题。线程安全问题关于线程安全的问题,有一个经典的问题:银行取钱的问题。银行取钱的基本流程基本可以分为如下几个步骤:1、用户输入账户、密码,系统判断用户的

2015-12-07 22:07:41 272

原创 控制线程

join线程Thread提供了让一个线程等待另一个线程完成的方法:join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,知道被join方法加入的join线程完成为止。join()方法通常由使用线程的程序调用,以将大问题划分为许多小问题。如下面程序:[java] view plaincopyp

2015-12-07 22:06:52 198

原创 线程的生命周期

当线程被创建并开启以后,它既不是已启动就进入了状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态.尤其是当线程启动以后,它不能一直“霸占”着CPU独自运行。所以CPU在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。新建和就绪状态当程

2015-12-07 22:06:01 400

原创 线程的创建和启动

Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每条线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java使用run方法来封装这样一段程序流。继承Thread类创建线程类通过继承Thread类来创建并启动多线程的步骤如下:1、定义Thread类的子类,并重写该类的run方法,该run方法的方法体就

2015-12-07 22:05:22 309

原创 线程概述

几乎所有操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。线程和进程几乎所有操作系统都支持进程的概念,所有运行中的任务通常对应一条进程(Process)。当一个程序进入内存运行,即变成进程。进程是处于运行过程中的程序,并且具有一定独立功能,进程是系统进行资源分配

2015-12-07 22:04:07 255

原创 String、StringBuffer和StringBuilder类

字符串是一连串的字符序列,Java提供了String和StringBuffer两个类来封装字符串,并提供了系列方法来操作字符串String类是不可变类,即一旦一个String对象呗创建以后,包含在这个对象的字符串序列是不可改变的,直至这个对象销毁。StringBuffer对象则代表一个字符串序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的

2015-11-29 13:01:26 369

原创 java中的堆、栈和常量池

说到java中堆、栈和常量池,首先还是看看他们各自存放的数据类型吧!堆:存放所有new出来的对象;栈:存放基本类型的变量数据和对象的引用,对象(new出来的对象)本身并不存在栈中,而是存放在堆中或者常量池中(字符串常量对象存放在常量池中);常量池:存放基本类型常量和字符串常量。对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据

2015-11-29 13:00:50 493

原创 系统相关

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。Java提供了System类和Runtime类来与程序的平台进行交互。System类System类代表当前Java程序的运行平台,程序不能创建System类的对象,所以它提供了一些类属性和类方法,运行直接通过System类名来调用这些属性和方法。1、通过System类的get

2015-11-29 13:00:18 335

原创 泛型入门

Java集合有个特点:当我们把一个对象“丢进”集合里后,集合就会“忘记”这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了Obejct类型(其运行时类型没变)。Java集合之所以设计成这样,是因为设计集合的程序员不会知道我们需要它来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对象,只要求具有很好的通用性,但这样做也带来了两个问题:== 集合对元素类型没有任

2015-11-29 12:59:35 271

原创 操作集合的工具类:Collections

Java提供了操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。 排序操作Collections提供了如下几个方法用于对List集合元素进行排序:== static void reverse(List list):反转指定List集合

2015-11-29 12:58:54 389

原创 Map

Map用于保存具有映射关系的数据,因此Map集合里保存这两组值,一组用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。如果把Ma

2015-11-29 12:58:06 333

原创 Queue接口

Queue用于模拟队列这种数据结构,队列通常是指“先进先出”的容器。队列的头部保存在队列中时间最长的元素,队列的尾部 保存在队列中时间最短的元素。新元素插入到队列的尾部,访问元素操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。Queue接口中定义了如下操作方法:== void add(Object e):将指定元素加入此队列的尾部。== Object eleme

2015-11-29 12:57:18 2133

原创 List接口

List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。与Set只提供了一个iterator()方法不同,List还额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法,ListIter

2015-11-29 12:56:32 462

原创 Set集合

前面已经介绍了Set集合类似于一个罐子,一旦对象丢进Set集合,集合里多个对象之间没有明显的顺序。Set集合与Collection基本完全一样,没有提供任何额外的方法。Set集合不允许包含相同的元素,如果试图把两个相同元素加入到同一个Set集合中,则添加失败,add方法返回false,且新元素不会被加入。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,

2015-11-29 12:55:42 11579

原创 Collection、Iterator接口、foreach循环

Collection接口时List、Set和Queue接口的父接口,该接口里定义的方法既可以用于操作Set集合,也可以用于操作List和Queue集合下面程序示范了如何操作Collection集合里的元素[java] view plaincopypackage package1;    import java.util.A

2015-11-29 12:54:44 377

原创 Java集合概述

集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);而集合只能保存对象(实际上也是对象的引用变量,但习惯上认为集合里保存的是对象)。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。如下图是Collection接口和子接口及其

2015-11-29 12:53:39 411

原创 抽象类和接口

当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么该方法都有具体的方法体。但在某些情况下,某个父类只是知道了其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法,例如定义了一个Shape类,这个类应该提供一个计算周长的方法calPerimeter(),但不同Shape子类对周长的计算方法是不一样的,即Shape类方法无法准确知道其子类计算周长的方

2015-11-29 12:53:00 304

原创 final修饰符

final 变量final修饰变量时,表示该变量一旦获得了初始值之后就不可被改变,final既可修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。严格的说final修饰的变量不可被改变,一旦获得初始值之后,该final变量的值就不能被重新赋值。因为final变量获得初始值之后不能被重新赋值,因此final修饰成员变量和修饰局部变量时有一定的不同。f

2015-11-29 12:52:17 360

原创 初始化块

Java使用构造器对单个对象进行初始化操作,使用构造器先把整个Java对象的状态初始化完后才能,然后将Java对象返回给程序,从而让该Java对象的信息更加完整。与构造器作用非常类似的是初始化块,它也可以对Java对象进行初始化操作。初始化块是Java类里可出现的第四种成员(前面依次有属性、方法和构造器),一个类里面可以有多个初始化块,相同类型的初始化块之间有顺序;前面定义的初始化

2015-11-29 12:51:39 373

原创 多态

Java引用变量有两个类型:一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类型决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态。先看下面的程序:[java] view plaincopypublic class BaseClass {                 public

2015-11-29 12:50:58 223

原创 类的继承

1、继承的特点Java的继承通过extends关键字来实现,Java的继承具有单继承的特点,每个子类只有一个直接父类。子类继承父类,将可以获得父类的全部属性和方法。值得指出的是:java的子类不能获得父类的构造器。下面程序示范了子类继承父类的特点,下面是Fruit类的代码:[java] view plaincopypubl

2015-11-29 12:50:17 320

原创 构造器

构造器是一个特殊的方法,这个方法用于创建类的实例。Java语言里构造器是创建对象的重要途径。构造器最大的用处就是在创建对象时执行初始化。当创建一个对象的时候,系统为这个对象默认进行初始化。这种默认初始化把所有的属性设为0(对数值类型)或false(boolean类型),把所有的引用类型属性设置为null。下面是一个Demo:[java] view

2015-11-29 12:49:08 325

原创 隐藏和封装

我们有时候会见到一些程序代码通过某个对象直接访问其属性的情形,这可能引起一些潜在的问题:如将某个Person的age属性直接设为100,这在语法上没有任何问题,但显然违背了现实。因此,Java程序推荐将类和对象的属性进行封装。封装是面向对象三大特征之一(另外两个是继承和多态),它指的是将对象的现状信息封装在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现

2015-11-29 12:48:34 996

原创 成员变量和局部变量

在Java语言中,根据定义变量位置的不同,可以讲变量分为2大类:成员变量和局部变量。成员变量和局部变量运行机制存在较大差异。1.1成员变量和局部变量成语变量指的是在类范围里定义的变量,也就是前面所说的属性;局部变量指的是在一个方法内定义的变量。成员变量分为:实例属性(不以static修饰),类属性(以static修饰)。局部变量分为:形参(方法签名中定义的变量),方法局部变

2015-11-29 12:47:12 381

原创 类和对象

Java支持面向对象的三大特征:封装、继承、多态,java提供了private、protect、public三个访问控制修饰符来实现良好的封装,提供了extends关键字来让子类继承父类,子类继承父类将可以继承到父类的属性和方法,如果访问控制允许,子类实例可以直接调用父类定义的方法。继承是实现类复用的重要手段,除此之外,也可以通过组合关系来实现这种复用,从某种程度上来看,继承和组合具有

2015-11-29 12:45:11 269

原创 Java垃圾回收机制

1. 垃圾回收的意义    在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,

2015-11-17 22:52:25 219

原创 形参长度可变的方法

从JDK1.5之后,Java允许定义形参可变的参数,从而为方法指定数量不确定的形参。如果在定义方法时,在最后一个形参的类型后增加三点(...),则表示该形参可以接受多个参数值,多个参数值被当成数组传入。下面定义了一个形参长度可变的方法 //定义了形参长度可变的方法 public static void test(int a,String ... books){ //books被方程数

2015-06-02 21:11:07 834

原创 数组

1.1 数组类型1.1.1 理解数组:数组也是一种类型java的数组要求所有数组元素具有相同的数据类型。因此在一个数组中,数组元素的类型是唯一的。因为java语言是面向对象语言,能很好的支持类与类之间的继承关系,这样可能产生一个数组里存放多种数据类型的假象:例如一个水果数组,要求每个数组元素都是水果,实际上数组元素可是苹果,也可以是香蕉,但这个数组元素的类型还是唯一的,只能

2015-05-27 23:46:51 547

原创 循环结构

循环结构可以在满足循环条件的情况下,反复执行某一段代码。循环语句可能会包含如下四个部分:初始化语句(init_statements):一条或多条语句,这些代码用于完成一些初始化工作,初始化语句在循环开始之前执行。循环条件(test_expression):这个一个boolean表达式,这个表达式决定是否执行循环体循环体(body_statements):这个部分是循环的主体,如果循环条

2015-05-21 21:18:14 621

原创 分支结构 if...else和switch...case

1.1 顺序结构任何编程语言中最常见的程序结构就是顺序结构,顺序结构就是程序从上到下一行一行的执行。如果mian方法多行代码之间没有任何流程控制,程序总是从上往下依次执行。1.2分支结构java语言提供了两种常见的分支控制结构:if语句和switch语句,其中if语句使用布尔表达式或布尔值作为分支条件来进行分支控制;而switch语句用于对多个整型值进行分配,从而实现分支控制。

2015-05-12 00:07:43 1898

原创 数据类型分类

1.0数据类型分类java语言是强类型(strongly typed)语言,意思是每个变量和每个表达式都有一个在编译时就确定的类型,所以所有变量必须显示声明类型。也就是说所有的变量必须先声明,后使用。类型限制了一个变量能有的值,限制了一个表达式可以产生的值,限制了在这这些值上可以进行的操作,并确定了这些操作的含义。强类型语言可以在编译时进行严格的语法检查,从而减少编译错误。

2015-05-11 23:01:29 509

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除