摘要: Iterator主要遍历Collection集合中的元素,也有称为迭代器或迭代精灵。 boolean hasNext():若被迭代的集合元素还没有被遍历,返回true. Object next():返回集合的下一个元素. void remove():删除集合上一次next()方法返回的元素。(若集合 阅读全文
posted @ 2019-07-04 14:48 樊伟胜 阅读(1937) 评论(0) 推荐(0)
摘要: Iterator:迭代输出 一旦操作集合的遍历输出,首选Iterator接口; ListIterator:Iterator子接口,专门输出List中的元素; Enumeration:古老的输出方式,迭代Vector元素,被Iterator取代; foreach:可输出数组和Iterable对象; 我 阅读全文
posted @ 2019-07-04 14:48 樊伟胜 阅读(4061) 评论(0) 推荐(1)
摘要: 方法: boolean add(Object o):该方法用于向集合里面添加一个元素,若集合对象被添加操作改变了,返回true. boolean addAll(Collection c):把集合c里面的所有元素添加到指定集合里面去,如果集合对象被添加操作改变了返回true. void clear() 阅读全文
posted @ 2019-07-04 14:47 樊伟胜 阅读(167) 评论(0) 推荐(0)
摘要: 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对象。 集合类的特点 阅读全文
posted @ 2019-07-04 14:45 樊伟胜 阅读(190) 评论(0) 推荐(0)
摘要: 有一个数据存储空间,划分为两部分,一部分用于存储人的姓名,另一部分用于存储人的性别; 我们的应用包含两个线程,一个线程不停向数据存储空间添加数据(生产者),另一个线程从数据空间取出数据(消费者); 因为线程的不确定性,存在于以下两种情况: 若生产者线程刚向存储空间添加了人的姓名还没添加人的性别,CP 阅读全文
posted @ 2019-07-04 14:44 樊伟胜 阅读(117) 评论(0) 推荐(0)
摘要: 三种方法: 同步代码块: synchronized(obj) { //obj表示同步监视器,是同一个同步对象 /**..... TODO SOMETHING */ } 同步方法 格式: 在方法上加上synchronized修饰符即可。(一般不直接在run方法上加!) synchronized 返回值 阅读全文
posted @ 2019-07-04 14:43 樊伟胜 阅读(155) 评论(0) 推荐(0)
摘要: 导致安全问题的出现的原因: 多个线程访问出现延迟。 线程随机性。 注:线程安全问题在理想状态下,不容易出现,但一旦出现对软件的影响是非常大的。 我们可以通过Thread.sleep(long time)方法来简单模拟延迟情况。 我的总结: 当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执 阅读全文
posted @ 2019-07-04 14:42 樊伟胜 阅读(193) 评论(0) 推荐(0)
摘要: join方法:调用join方法的线程对象强制运行,该线程强制运行期间,其他线程无法运行,必须等到该线程结束后其他线程才可以运行。 有人也把这种方式成为联合线程 join方法的重载方法: join(long millis): join(long millis,int nanos): 通常很少使用第三个 阅读全文
posted @ 2019-07-04 14:41 樊伟胜 阅读(303) 评论(0) 推荐(0)
摘要: Thread类内部有个public的枚举Thread.State,里边将线程的状态分为: NEW 新建状态,至今尚未启动的线程处于这种状态。 RUNNABLE 运行状态,正在 Java 虚拟机中执行的线程处于这种状态。 BLOCKED 阻塞状态,受阻塞并等待某个监视器锁的线程处于这种状态。 WAIT 阅读全文
posted @ 2019-07-04 14:39 樊伟胜 阅读(201) 评论(0) 推荐(0)
摘要: A extends Thread: 简单 不能再继承其他类了(Java单继承) 同份资源不共享 A implements Runnable:(推荐) 多个线程共享一个目标资源,适合多线程处理同一份资源。 该类还可以继承其他类,也可以实现其他接口。 我的总结: 实现方式,因为避免了单继承的局限性,所以 阅读全文
posted @ 2019-07-04 14:37 樊伟胜 阅读(563) 评论(0) 推荐(0)
摘要: 线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程, 至少需要一个线程。 进程与线程的区别: 阅读全文
posted @ 2019-07-04 14:34 樊伟胜 阅读(229) 评论(0) 推荐(0)
摘要: 1、继承Thread类 子类覆写父类中的run方法,将线程运行的代码存放在run中。 建立子类对象的同时线程也被创建。 通过调用start方法开启线程。 2、实现Runnable接口 子类覆盖接口中的run方法。 通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Th 阅读全文
posted @ 2019-07-04 14:34 樊伟胜 阅读(139) 评论(0) 推荐(0)
摘要: 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。比如在Windows系统中,一个运行的xx.exe就是一个进程。 Java程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程, 阅读全文
posted @ 2019-07-04 14:32 樊伟胜 阅读(330) 评论(0) 推荐(0)
摘要: 处理日期,时间; 大部分的方法已过时,不推荐使用,但是你使用过时的方法也不会报错。 Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 197 阅读全文
posted @ 2019-07-04 14:31 樊伟胜 阅读(218) 评论(0) 推荐(0)
摘要: System 类包含一些与系统相关的类字段和方法。它不能被实例化,类中所有属性和方法都是static,可直接被System调用。 常用方法: static void exit(int status) 终止虚拟机的运行.对于发生了异常情况而想终止虚拟机的运行,传递一个非0数值,对于正常情况下退出系统传 阅读全文
posted @ 2019-07-04 14:31 樊伟胜 阅读(155) 评论(0) 推荐(0)
摘要: String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁; StringBuffer 与 StringBuilder对象则是可变的! 举例说明这两个的好处:(不用每次新建对象,效率高!) package reviewDemo; public class D 阅读全文
posted @ 2019-07-04 14:30 樊伟胜 阅读(155) 评论(0) 推荐(0)
摘要: Math类 public final class Math extends Object 以下X表示double,float,int, long abs(X x):求绝对值 max(X x1,X x2):求最大值 min(X x1,X x2):求最小值 public static double ra 阅读全文
posted @ 2019-07-04 14:30 樊伟胜 阅读(958) 评论(0) 推荐(0)
摘要: String():初始化一个新的 String 对象,使其表示一个空字符序列,并不是返回空(不等于 null)。 String(StringBuffer buffer):根据StringBuffer对象来创建String对象; String(StringBuilder builder):同上 cha 阅读全文
posted @ 2019-07-04 14:26 樊伟胜 阅读(161) 评论(0) 推荐(0)
摘要: 当异常出现在当前方法中,程序只对异常进行部分处理,还有一些处理需要在方法的调用者中才能处理完成,此时还应该再次抛出异常,这样就可以让方法的调用者也能捕获到异常; Eg: public static void buy(String price) throws Exception { try { if( 阅读全文
posted @ 2019-07-04 14:25 樊伟胜 阅读(1983) 评论(0) 推荐(0)
摘要: String String表示字符串,所谓字符串,就是一连串的字符; String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁; 常量池:JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)。 String使 阅读全文
posted @ 2019-07-04 14:25 樊伟胜 阅读(105) 评论(0) 推荐(0)
摘要: 异常的统一出口: 不管try块程序是否异常,也不管哪个catch执行,finally块总会执行。 try语句块或会执行的catch语句块使用了JVM系统退出语句例外;//System.exit(1); try块必须和 catch块或和finally同在,不能单独存在,二者必须出现一个。 不要在fin 阅读全文
posted @ 2019-07-04 14:20 樊伟胜 阅读(764) 评论(0) 推荐(0)
摘要: 自行抛出一个异常对象,抛出异常类的对象; 若throw抛出的是Runtime异常: 程序可以显示使用try...catch来捕获并处理,也可以不管,直接交给方法调用者处理; 若throw抛出Checked异常: 要么放在try里自己处理,要么放在一个throws声明的方法里面,交给调用者处理。 Eg 阅读全文
posted @ 2019-07-04 14:14 樊伟胜 阅读(819) 评论(0) 推荐(0)
摘要: 在可能出现异常的方法上声明抛出可能出现异常的类型: 声明的时候尽可能声明具体的异常,方便更好的处理. 当前方法不知道如何处理这种异常,可将该异常交给上一级调用者来处理(非RuntimeException类型的异常)。 方法一旦使用throws声明抛出方法内可能出现的异常类型, 该方法就可以不再过问该 阅读全文
posted @ 2019-07-04 14:13 樊伟胜 阅读(2419) 评论(0) 推荐(0)
摘要: 异常分类: 编译时被检查异常; > Checked异常 在程序中必须使用try...catch处理; 编译时不被检测的异常; > Runtime异常 可以不使用try...catch处理,但一旦出现异常就将由JVM处理。 异常的分类之Runtime异常 RuntimeException(运行时异常) 阅读全文
posted @ 2019-07-04 14:08 樊伟胜 阅读(231) 评论(0) 推荐(0)
摘要: 声明异常时尽可能声明具体异常类型,方便更好的处理; 方法声明几个异常就对应有几个catch块; 若多个catch块中的异常出现继承关系,父类异常catch块放在最后; 在catch语句块使用Exception类作为异常类型时: 所有子类实例都可以使用父类接收(向上转型),即所有的异常对象都可以使用E 阅读全文
posted @ 2019-07-04 14:07 樊伟胜 阅读(434) 评论(0) 推荐(0)
摘要: 异常处理的5个关键字 try ,catch, finally throw, throws 我的总结: 捕获异常:先捕获小异常再捕获大异常。 程序是调出来的,不是写出来的;多测试是程序员的必修课。 异常处理后,程序不会因为出现异常而退出! 异常处理格式 try{ //可能出异常的代码 } catch( 阅读全文
posted @ 2019-07-04 14:05 樊伟胜 阅读(587) 评论(0) 推荐(0)
摘要: 异常:就是不正常,是指程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对 阅读全文
posted @ 2019-07-04 14:03 樊伟胜 阅读(117) 评论(0) 推荐(0)
摘要: 适合只使用一次的类 不能是抽象类,因为系统在创建匿名内部类的时候,会立即创建匿名内部类的对象。 匿名内部类不能定义构造器,因为匿名内部类没有类名。 格式: new 父类构造器([实参列表]) 或 接口() { //匿名内部类的类体部分 } 阅读全文
posted @ 2019-07-04 12:21 樊伟胜 阅读(140) 评论(0) 推荐(0)
摘要: 使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类; 枚举类的对象是固定的,实例个数有限,不可以再new( ),枚举对象后可以跟()。 枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔。 枚举类的构造方法的权限修饰符默认是private; 一 阅读全文
posted @ 2019-07-04 12:21 樊伟胜 阅读(882) 评论(0) 推荐(0)
摘要: 使用一个现成的类,但是它的接口不完全符合你的需求,我只想要它其中的一个方法,不想覆写其他的方法。 比如,窗体有变大,变小,关闭的行为,但是我现在只需要关闭行为; package reviewDemo; //适配器模式:只想用其中的某一个方法,用适配器作为中间的过渡 interface Windows 阅读全文
posted @ 2019-07-04 11:55 樊伟胜 阅读(183) 评论(0) 推荐(0)
摘要: 相同点: 都位于继承的顶端,用于被其他实现或继承; 都不能实例化; 都包含抽象方法,其子类都必须覆写这些抽象方法; 区别: 抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口只能包含抽象方法; 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java 阅读全文
posted @ 2019-07-04 11:55 樊伟胜 阅读(329) 评论(0) 推荐(0)
摘要: 制定一个标准,让别人去实现或者说满足它! Eg: interface USB{//定义USB标准 void useUSB();//USB有使用USB的行为 } 简单工厂模式 构建一个工厂出来,在里面进行生产,用的时候直接拿 我的总结: 好处:屏蔽不同子类实现的差异,提高代码的可拓展性和可维护性; p 阅读全文
posted @ 2019-07-04 11:54 樊伟胜 阅读(212) 评论(0) 推荐(0)
摘要: 引入:抽象类是从多个类中抽象出来的模板,若要将这种抽象进行得更彻底,就得用到一种特殊的“抽象类”→ 接口; 例子: 生活中听说过的USB接口其实并不是我们所看到的那些插槽,而是那些插槽所遵循的一种规范;而我们看到的那些插槽是根据USB规范设计出来的实例而已,也就说插槽是USB的实例; 对应不同型号的 阅读全文
posted @ 2019-07-04 11:53 樊伟胜 阅读(381) 评论(0) 推荐(0)
摘要: 格式:public class SubImpl extends Super implements IA,IB 接口可以多继承,但是只能继承接口,不能继承类。 实现接口(支持多实现) [修饰符] class 类名 implements 接口1,接口2... 接口的实现必须在 extends 之后; 实 阅读全文
posted @ 2019-07-04 11:53 樊伟胜 阅读(134) 评论(0) 推荐(0)
摘要: 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的行为方式,那么这些方法都有具体的方法体。 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。 抽象方法的定义:通过abstract关键字来修饰的类称为抽象类; 我的总结: 抽象类用pri 阅读全文
posted @ 2019-07-04 11:52 樊伟胜 阅读(190) 评论(0) 推荐(0)
摘要: 抽象类是多个具体子类抽象出来的父类,具有高层次的抽象性;以该抽象类作为子类的模板可以避免子类设计的随意性; 抽象类的体现主要就是模板模式设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行拓展,但是子类在总体上大致保留抽象类的行为方式; 编写一个抽象父类,该父类提供了多个子类的通用方法,并把 阅读全文
posted @ 2019-07-04 11:52 樊伟胜 阅读(506) 评论(0) 推荐(0)
摘要: 目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例。 好比一个国家就只有一个皇帝(XXX),此时每个人叫的“皇帝”都是指叫的XXX本人; 常见单例模式类型: 饿汉式单例:直接将对象定义出来 懒汉式单例:只给出变量,并不将其初始化; 我的总结: 饿汉式,static修饰,随着类的 阅读全文
posted @ 2019-07-04 11:51 樊伟胜 阅读(185) 评论(0) 推荐(0)
摘要: ① final可以修饰类,方法,变量。 ② final修饰类不可以被继承,但是可以继承其他类。 ③ final修饰的方法不可以被覆写,但可以覆写父类方法。 ④ final修饰的变量称为常量,这些变量只能赋值一次。 ⑤ 内部类在局部时,只可以访问被final修饰的局部变量。 ⑥ final修饰的引用类 阅读全文
posted @ 2019-07-04 11:51 樊伟胜 阅读(112) 评论(0) 推荐(0)
摘要: 有的时候我们为了避免外界创建某类的实例,就将某类的构造方法私有化,即将它的构造方法用private修饰: 外界如何用到? 提供get方法!不提供的话外界就没法创建对象!(对反射无效) Eg:package reviewDemo; class Stu{ //将构造方法私有化 private Stu() 阅读全文
posted @ 2019-07-04 11:50 樊伟胜 阅读(565) 评论(0) 推荐(0)
摘要: 代码块指的是使用"{}"括起来的一段代码,根据代码块存在的位置可以分为4种: 普通代码块; 构造代码块; 静态代码块; 同步代码块(线程同步的时候讲解)。 代码块里变量的作用域: 只在自己所在区域(前后的{})内有效; 普通代码块: 普通代码块就是直接定义在方法或语句中定义的代码块: public 阅读全文
posted @ 2019-07-04 11:49 樊伟胜 阅读(140) 评论(0) 推荐(0)
摘要: 所有类的公共父类,一旦一个类没有显示地继承一个类则其直接父类一定是Object。 一切数据类型都可用Object接收 class OOXX extends Object{}等价于class ooXX {} 常见方法 public boolean equals(Object obj):对象比较 pub 阅读全文
posted @ 2019-07-04 11:38 樊伟胜 阅读(181) 评论(0) 推荐(0)
摘要: String → 基本类型,除了Character外所有的包装类提供parseXxx(String s)静态方法,用于把一个特定的字符串转换成基本类型变量; 基本类型 → String,String 类有静态方法valueOf(),用于将基本类型的变量转换成String类型。 String str 阅读全文
posted @ 2019-07-04 11:37 樊伟胜 阅读(591) 评论(0) 推荐(0)
摘要: 把基本数据类型 → 包装类: 通过对应包装类的构造方法实现 除了Character外,其他包装类都可以传入一个字符串参数构建包装类对象。 包装类 → 基本数据类型 包装类的实例方法xxxValue(); // xxx表示包装类对应的基本数据类型 Eg: boolean bool = false; B 阅读全文
posted @ 2019-07-04 11:33 樊伟胜 阅读(1982) 评论(0) 推荐(0)
摘要: Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了。 Integer,Byte,Float,Double,Short,Long 阅读全文
posted @ 2019-07-04 11:32 樊伟胜 阅读(173) 评论(0) 推荐(0)
摘要: 向上转型(子类→父类):(自动完成) 父类名称 父类对象 = 子类实例 ; 向下转型(父类→子类):(强制完成) 子类名称 子类对象 = (子类名称)父类实例 ; 对象名 instanceof 类 判断指定的变量名此时引用的真正类型是不是当前给出的类或子类; 我的总结:对象的类型和类必须有继承关系 阅读全文
posted @ 2019-07-04 11:31 樊伟胜 阅读(275) 评论(0) 推荐(0)
摘要: 表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法。 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另一个重载构造方法用this(参数列表) 子类构造方法调用父类构造方法用super(参数列表) 子类调 阅读全文
posted @ 2019-07-04 11:24 樊伟胜 阅读(3098) 评论(0) 推荐(0)
摘要: 多态:指同一个实体同时具有多种形式 好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以, 这就是说"面"有多种形态,也就是说实体有多种形态; 编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。 如果编译时类型和运行时类型不同,就出现多态。 Eg: 前提 阅读全文
posted @ 2019-07-04 11:24 樊伟胜 阅读(499) 评论(0) 推荐(0)
摘要: 子类不能直接访问父类的私有成员; 但是子类可以调用父类中的非私有方法来间接访问父类的私有成员。 Person类中有私有字段name,Student继承Person new Sudent().name; × new Student().getName(); √ 子类拓展父类(子类是父类的一种特殊情况) 阅读全文
posted @ 2019-07-04 11:23 樊伟胜 阅读(920) 评论(0) 推荐(0)
摘要: 首先有反映一般事物特性的类,然后在此基础上反映出特殊事物的类; 也就是说:继承是一种从一般到特殊的关系; 特点: 1、提高了代码的复用性。 2、让类与类之间产生关系,有了这个继承关系才有了多态的特性。 3、Java语言中只支持单继承(有别于C语言)。 因为多继承容易带来安全隐患(父类多了, 功能相同 阅读全文
posted @ 2019-07-04 11:19 樊伟胜 阅读(174) 评论(0) 推荐(0)
摘要: 分析思路: 根据要求写出类所包含的字段; 所有的字段都必须私有化; 封装之后的字段可通过setter和getter设值和取得; 按需求可添加若干构造方法; 根据需求可添加相应的方法; 类中的所有方法都不要直接处理(输出打印),而是交给调用者去处理。 阅读全文
posted @ 2019-07-04 11:18 樊伟胜 阅读(207) 评论(0) 推荐(0)
摘要: private 类访问权限:本类内部可以访问,不能继承到子类; default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承; protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类; public 公共访问权限: 阅读全文
posted @ 2019-07-04 11:15 樊伟胜 阅读(182) 评论(0) 推荐(0)
摘要: 封装的两个含义: 1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类); 2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段; 封装机制在程序中的体现是:把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保 阅读全文
posted @ 2019-07-04 11:14 樊伟胜 阅读(184) 评论(0) 推荐(0)
摘要: 一个没有名字的对象, 创建了一个对象出来,没有赋给一个变量; 特点: 对方法或字段只进行一次调用时; 可作为实际参数进行传递; 只在堆里面开辟存储区域, 只能使用一次, 使用完就被销毁了; 何时使用?只拿来用一次!! new Person();表示匿名对象,没有名字的对象 new Person(). 阅读全文
posted @ 2019-07-04 11:13 樊伟胜 阅读(130) 评论(0) 推荐(0)
摘要: 特点:this表示当前对象。 当前对象 ←→ 当前正在调用实例成员的对象 换言之:谁调用了方法,谁就是当前对象。 什么时候使用this关键字呢? 方法间的相互调用; this.字段; 构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。 this不能用在static修饰的方法里和s 阅读全文
posted @ 2019-07-04 11:13 樊伟胜 阅读(187) 评论(0) 推荐(0)
摘要: 特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类名调用 使用注意: 静态方法只能访问静态成员 但是非静态成员可以访问静态成员; 静态方法中不可以使用this,super关键字 主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内 阅读全文
posted @ 2019-07-04 11:08 樊伟胜 阅读(195) 评论(0) 推荐(0)
摘要: 构造方法:用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用) 字段:类或对象所包含的数据,对类状态的一种描述; 方法:类或对象的特征或行为 作用: 给类中的字段进行初始化,可以用来创建对象。 特点: 方法名与类名相同 不用定义返回值类型 不需要写return语句 我的总结: 注 阅读全文
posted @ 2019-07-04 11:07 樊伟胜 阅读(203) 评论(0) 推荐(0)
摘要: 类(class)是Java 语言的最小编程单位,也是设计和实现Java 程序的基础,本部分将深入介绍类的相关知识。 类的概念 类是一组事物共有特征和功能的描述。类是对于一组事物的总体描述,是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块。类的概念是抽象的,类似于建筑设计中的图纸,是 阅读全文
posted @ 2019-07-04 11:04 樊伟胜 阅读(162) 评论(0) 推荐(0)
摘要: 面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法。 面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。 面向对象是一个很抽象的概念,它相对面向过程而言。 过程与对象都是一种解决问题的思想。 面向过 阅读全文
posted @ 2019-07-04 11:03 樊伟胜 阅读(1009) 评论(0) 推荐(0)
摘要: 增强for循环 → for-each for (参数类型参数名 : 数组名) { 代码块 } Eg: package reviewDemo; public class Demo6 { public static void main(String[] args) { int []age = {1,2, 阅读全文
posted @ 2019-07-04 11:02 樊伟胜 阅读(158) 评论(0) 推荐(0)
摘要: static int binarySearch(type[] a, type key) 使用二分搜索法来搜索key元素在数组中的索引;若a数组不包括key,返回负数。(该方法必须已按升序排列后调用)。 static int binarySearch(type[] a, int fromIndex, 阅读全文
posted @ 2019-07-04 10:54 樊伟胜 阅读(475) 评论(0) 推荐(0)
摘要: 二维数组:(其实是一个一维数组,它的每一个元素又是一个一维数组), 可以看做是一张表格。 初始化: 动态初始化 int[ ][ ] arr = new int[3][2]; 定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素 静态初始化 int[ ][ ] arr = new int 阅读全文
posted @ 2019-07-04 10:48 樊伟胜 阅读(236) 评论(0) 推荐(0)
摘要: 分配内存空间 数组名=new 数据类型[数组长度]; new关键字用来实现为数组或对象分配内存 (堆内存) 数组具有固定的长度。获取数组的长度: 数组名.length 定义数组+分配内存空间 数据类型[]数组名=new 数据类型[数组长度]; 定义数组时不指定长度,分配空间时指定数组长度;如:Str 阅读全文
posted @ 2019-07-04 10:47 樊伟胜 阅读(2070) 评论(0) 推荐(0)
摘要: Java语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1,依次可以类推。 常见操作: 给数组元素赋值 数组名[索引] = 数组类型的值 ; 访问数组元素 数组类型 变量 = 数组名[索引]; 得到数组的长度 int len = 数组名.length; //len 阅读全文
posted @ 2019-07-04 10:45 樊伟胜 阅读(655) 评论(0) 推荐(0)
摘要: 一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素; 一维数组的声明方式: type varName[]; 或 type[] varName;(推荐) Eg:int age[]; int []age; 数组的长度一旦确定,就不能改变,也就数组是定长的; 我的总结:java语言声 阅读全文
posted @ 2019-07-04 10:44 樊伟胜 阅读(2467) 评论(0) 推荐(0)
摘要: 数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。 备注: 阅读全文
posted @ 2019-07-04 10:43 樊伟胜 阅读(224) 评论(0) 推荐(0)
摘要: 概念: 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。 存在的原因: 屏蔽了一个对象的同一类方法由于参数不同所造成的差异。 特点: 与返回值类型无关,只看参数列表。 以下是方法重载的示例: public void a(int a){} public in 阅读全文
posted @ 2019-07-04 10:42 樊伟胜 阅读(1360) 评论(0) 推荐(0)
摘要: 从java5开始出现了可变参数,这是对java方法及数组的拓展! 方法中可以接受的参数不再是固定个数的,而是随着具体需求传递的多少来决定。 定义格式: 返回值类型 方法名(参数类型 ... 形式参数){ } 可变参数的特点: 只能出现在参数列表的最后; ... 位于变量类型和变量名之间,前后有无空格 阅读全文
posted @ 2019-07-04 10:42 樊伟胜 阅读(469) 评论(0) 推荐(0)
摘要: 它可以实现独立的功能; 必须定义在类里面; 它只有被调用才会执行; 它可以被重复使用; 方法结束后方法里的对象失去引用; 如何定义一个功能,并通过方法体现出来: ① 明确该功能运算后的结果.明确返回值类型; ② 明确在实现该功能过程中是否有未知内容参与运算,确定参数列表; Eg: package r 阅读全文
posted @ 2019-07-04 10:41 樊伟胜 阅读(559) 评论(0) 推荐(0)
摘要: 访问控制符:访问控制符限定方法的可见范围,或者说是方法被调用的范围。方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private。其中无访问控制符不书写关键字即可。具体的范围在后续有详细介绍。 形式参数:在方法被调用时用于接收外界输入的数据。 实参 阅读全文
posted @ 2019-07-04 10:38 樊伟胜 阅读(885) 评论(0) 推荐(0)
摘要: [修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……]) { 执行语句; [return 返回值;]//需要的话 } 参数列表(参数的类型 ,参数的个数,参数的顺序) 我的总结:只要上述有一个不一样,那么这个参数列表就不一样!对于方法而言,即使同名也不是同一个方法,也就 阅读全文
posted @ 2019-07-04 10:37 樊伟胜 阅读(873) 评论(0) 推荐(0)
摘要: 方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个: ①:结构化代码 将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。 ②:减少代码重复 一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对应的功能代码。 阅读全文
posted @ 2019-07-04 10:36 樊伟胜 阅读(2472) 评论(0) 推荐(0)
摘要: break语句、 continue语句; break:终止该层循环; continue:跳过该层循环 注: ①:若这两个语句离开应用范围,存在是没有意义的。 ②:这个两个语句后面都不能有语句,因为执行不到。 ③:continue语句是跳过本次循环,继续下次循环。 ④:标签的出现,可以让这两个语句作用 阅读全文
posted @ 2019-07-04 10:24 樊伟胜 阅读(103) 评论(0) 推荐(0)
摘要: 嵌套循环:循环里套循环 假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。 Eg:利用for循环语句的嵌套打印出乘法口诀表 class break1 { public static void main(String[] args) { for(int i= 阅读全文
posted @ 2019-07-04 10:23 樊伟胜 阅读(836) 评论(0) 推荐(0)
摘要: 用于处理需要重复执行的操作; 根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体; while:事先不需要知道循环执行多少次; do while:同上,只是至少要执行一次(先做,后判断); for:需要知道循环次数; 循环结构(while & do while) while 阅读全文
posted @ 2019-07-04 09:48 樊伟胜 阅读(1131) 评论(0) 推荐(0)
摘要: 顺序结构 分支结构(条件结构) 循环结构 控制循环结构 顺序结构: 如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。 if语句: 基本语法:if(表达式){方法体}else if(表达式){方法体}else(方法体) 几种形式: 三种格式: 阅读全文
posted @ 2019-07-04 09:47 樊伟胜 阅读(521) 评论(0) 推荐(0)
摘要: 是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列; a + b 3.14 + a (x + y) * z + 100 boolean b= i < 10 && (i%10 != 0) 表达式的类型和值: 对表达式中操作数进行运算得到的结果是表达式的值。 表达式值的数据类型即为表 阅读全文
posted @ 2019-07-04 09:46 樊伟胜 阅读(8643) 评论(0) 推荐(0)
摘要: 运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种: 算术运算符(+ 、— 、* 、/ 、%) 赋值运算符(= 、+=、-=、*=、/=,、%=) 关系运算符(>、>=、<、<=、!=) 条件运算符(&&、||、!&、|、^) 位运算符(&、|、^、~、>>、<<、<<<、>>>) 阅读全文
posted @ 2019-07-04 09:45 樊伟胜 阅读(159) 评论(0) 推荐(0)
摘要: 向上转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型; byte,short,char → int → long → float → double byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型 阅读全文
posted @ 2019-07-04 09:44 樊伟胜 阅读(2976) 评论(0) 推荐(0)
摘要: 在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这些类型的值来代表一些简单的状态。 Java 语言的基本数据类型总共有以下8 种,下面是按照用途划分出的4 个类别: 定点类型: 整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从4 种类型中挑选合适的,如果没 阅读全文
posted @ 2019-07-04 09:43 樊伟胜 阅读(193) 评论(0) 推荐(0)
摘要: 局部变量:不是声明在类体括号里面的变量; 局部变量使用前必须初始化值; 局部变量没有默认初始化值; 局部变量的作用域是从定义开始到定义它的代码块结束; 成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量;(其实Java中没有全局变量,由于Java是面向对象语言,所有变量都是类成 阅读全文
posted @ 2019-07-04 09:41 樊伟胜 阅读(167) 评论(0) 推荐(0)
摘要: 变量的概念: 占据着内存中的某一个存储区域; 该区域有自己的名称(变量名)和类型(数据类型); 该区域的数据可以在同一类型范围内不断变化; 为什么要定义变量: 用来不断的存放同一类型的常量,并可以重复使用; 使用变量注意: 变量的作用范围, 初始化值 定义变量的格式: 数据类型 变量名 = 初始化值 阅读全文
posted @ 2019-07-04 09:40 樊伟胜 阅读(141) 评论(0) 推荐(0)
摘要: 可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。 命名规则: (1) 由字母、数字、下划线、$组成,不能以数字开头 注意:此处的字母还可以是中文,日文等; (2) 大小写敏感 (3) 不得使用java中的关键字和保留字 (4) 别用Java API里面的类名作为 阅读全文
posted @ 2019-07-04 09:39 樊伟胜 阅读(562) 评论(0) 推荐(0)
摘要: 1.单行注释 //: //后到本行结束的所有字符会被编译器忽略; 2.多行注释 /* */: /* */之间的所有字符会被编译器忽略 3.文档注释 /** */: 在/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档); 我的总结:多行和文档注释都不能嵌套使用。 阅读全文
posted @ 2019-07-04 09:38 樊伟胜 阅读(7491) 评论(0) 推荐(0)
摘要: 任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了。 代码都定义在类中,类由class来定义,区分 public class 和 class; 代码严格区分大小写,如main 和 Main 是不一样的; Java中的标识符与关键字; 注释; main方法的作用: 阅读全文
posted @ 2019-07-04 09:22 樊伟胜 阅读(400) 评论(0) 推荐(0)
摘要: Java语言拼写上严格区分大小写; 一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类; 若源文件中包括了public类,源文件必须和该public类同名; 一个源文件中包含N个Java类时,编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件, 阅读全文
posted @ 2019-07-04 09:21 樊伟胜 阅读(127) 评论(0) 推荐(0)
摘要: Java Virtual Machine ,简称JVM; 它是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一,JVM读取并处理编译过的与平台无关的字节码(class)文件。 Java编译器针对JVM产生class文件,因此是独立于平台的。 Java解释 阅读全文
posted @ 2019-07-04 09:20 樊伟胜 阅读(159) 评论(0) 推荐(0)
摘要: JRE:(Java Runtime Environment),java运行环境。包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。 JDK:(Java Development K 阅读全文
posted @ 2019-07-04 09:19 樊伟胜 阅读(2748) 评论(0) 推荐(0)
摘要: 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。 我的总结:Ja 阅读全文
posted @ 2019-07-04 09:18 樊伟胜 阅读(5981) 评论(0) 推荐(0)
摘要: #!/bin/sh # # rc.firewall - Initial SIMPLE IP Firewall script for Linux 2.4.x and iptables # # Copyright (C) 2001?Oskar Andreasson <bluefluxATkoffeinD 阅读全文
posted @ 2019-07-04 08:50 樊伟胜 阅读(311) 评论(0) 推荐(0)
摘要: 需求说明:此服务器用作网关、MAIL(开启web、smtp、pop3)、FTP、DHCP服务器,内部一台机器(192.168.0.254)对外提供dns服务,为了不让无意者轻易看出此服务器开启了ssh服务器,故把ssh端口改为2018.另把proxy的端口改为60080 eth0:218.28.20 阅读全文
posted @ 2019-07-04 08:48 樊伟胜 阅读(622) 评论(0) 推荐(0)
摘要: 环境:redhat9 加载了string time等模块 eth0 接外网──ppp0 eth1 接内网──192.168.0.0/24 #!/bin/sh # modprobe ipt_MASQUERADE modprobe ip_conntrack_ftp modprobe ip_nat_ftp 阅读全文
posted @ 2019-07-04 08:47 樊伟胜 阅读(608) 评论(0) 推荐(0)
摘要: #!/bin/bash export PATH=/sbin:/usr/sbin:/bin:/usr/bin #加载相关模块 modprobe iptable_nat modprobe ip_nat_ftp modprobe ip_nat_irc modprobe ip_conntrack modpr 阅读全文
posted @ 2019-07-04 08:45 樊伟胜 阅读(185) 评论(0) 推荐(0)
摘要: iptables -F? # -F 是清除的意思,作用就是把 FILTRE TABLE 的所有链的规则都清空 iptables -A INPUT -s 172.20.20.1/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #在 FILTE 阅读全文
posted @ 2019-07-04 08:42 樊伟胜 阅读(422) 评论(0) 推荐(0)
摘要: -j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下: ACCEPT: 将封包放行,进行完此处理动作后,将不再匹配其它规则,直接 阅读全文
posted @ 2019-07-04 08:41 樊伟胜 阅读(2643) 评论(0) 推荐(0)
摘要: 命令 -A, --append 范例 iptables -A INPUT ... 说明 新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。 命令 -D, --delete 范例 iptables -D INPUT --dport 80 -j DROP iptables -D INPUT 阅读全文
posted @ 2019-07-04 08:39 樊伟胜 阅读(378) 评论(0) 推荐(0)
摘要: 参数 -p, --protocol 范例 iptables -A INPUT -p tcp 说明 匹配通讯协议类型是否相符,可以使用 ! 运算符进行反向匹配,例如: -p !tcp 意思是指除 tcp 以外的其它类型,如udp、icmp ...等。 如果要匹配所有类型,则可以使用 all 关键词,例 阅读全文
posted @ 2019-07-04 08:39 樊伟胜 阅读(3476) 评论(0) 推荐(0)
摘要: -t 参数用来,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。个规则表的功能如下: nat:此规则表拥有 PREROUTING 和 POSTROUTING 两个规则链,主要功能为进行一对一、一对多、多对多等网址转换工作(SNAT、D 阅读全文
posted @ 2019-07-04 08:38 樊伟胜 阅读(3675) 评论(0) 推荐(0)
摘要: iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载 使用命令iptables-save来保存规则。一般用 iptables-save > /etc/sysconfig/iptables 生成保存规则的文件 /etc/s 阅读全文
posted @ 2019-07-04 08:37 樊伟胜 阅读(6091) 评论(0) 推荐(0)
摘要: 工作环境:上层代理192.168.60.6(4480),只授予教师机(192.168.62.111)使用该代理的权限 目标:不使用squid代理上网,而是使用NAT的方式上网 方法: 1) 确保停止教师机(192.168.62.111)的squid或其它代理服务 2) 客户端网关、DNS均指向192 阅读全文
posted @ 2019-07-04 08:32 樊伟胜 阅读(291) 评论(0) 推荐(0)
摘要: 一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0、eth1,eth0连接外网,IP为202.96.134.134;eth1连接局域网,IP为192.168.62.10 1. 先在内核里打开ip转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forwar 阅读全文
posted @ 2019-07-04 08:23 樊伟胜 阅读(989) 评论(0) 推荐(0)