Java随学随记

1.一个Java源文件可包含三个“顶级”要素:

(1)一个包(package)声明(可选)

(2)任意数量的导入(import)语句

(3)类(class)声明

该三要素必须以上顺序出现。即,任何导入语句出现在所有类定义之前;如果使用包声明,则包声明必须出现在类和导入语句之前。

2.Java中关键字的基本含义

(1)abstract:声明类或类中的方法是抽象的

(2)boolean:基本数据类型之一,布尔类型;

(3)break:提前跳出一个块;

(4)byte:基本数据类型之一,字节类型;

(5)case:在Switch语句中,表明其中的一个分支;

(6)catch:用于处理例外情况,用来捕捉异常

(7)char:基本数据类型之一,字符类型

(8)class:类

(9)continue

3.(1)JDK:Java Development Kit(Java开发工具包)

(2)JRE:Java Runtime Environment(Java运行时环境)

4.配置环境变量

(1)JAVA_HOME 配置JDK安装路径

(2)PATH  配置JDK命令文件的位置

(3)CLASSPATH 配置类库文件的位置

5.集成开发环境(IDE)是一类软件。将程序开发环境和程序调试环境集合在一起,提高开发效率。MyEclipse是对Eclipse的扩展,是一个十分游戏的用于开发Java,JavaEE的Eclipse插件集合。

6.类:类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类的特点:类是对象的类型,具有相同属性和方法的一组对象的集合。

类的重要性:所有Java程序都以类class为组织单元。

类的组成:属性和方法

7.什么是对象的属性。。

属性------对象具有的各种特征。每个对象的每个属性都拥有特定值。。

8.使用对象的步骤:

1.创建对象:

类名  对象名=new 类名();

2.使用对象

引用对象的属性:对象名.属性

引用对象的方法:对象名.方法名()

9.成员变量和局部变量

(1)成员变量:在类中定义,用来描述对象将要有什么。

(2)局部变量:在类的方法中定义,在方法中临时保存数据。

(3)区别:

(I)作用域不同:局部变量的作用域仅限于定义它的方法,成员变量的作用域在整个类内部都是可见的。

(II)初始值不同:Java会给成员变量一个初始值,Java不会给局部变量赋予初始值。

(III)在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量。

(IV)就近原则:两类变量同名时,局部变量具有更高的优先级。

10.构造方法:

(1)使用new+构造方法  创建一个新的对象。

(2)构造方法是定义在Java类中的一个用来初始化对象的方法,构造方法与类同名且没有返回值

(3)构造方法的语句格式:

public 构造方法名(){

  //初始化代码

}

注:没有返回值类型,构造方法名与类名相同,()可以指定参数。

(4)通过无参的构造方法可以创建对象。通过有参的构造方法也可以创建对象并给对象中的实例变量赋初始值。

(5)当没有指定构造方法时,系统会自动添加无参的构造方法。

(6)当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

(7)构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

(8)构造方法,不但可以给对象的属性赋值,还可以保证给对象的属性一个合理的值。

11.面向对象三大特性:封装、继承、多态

(1)封装:

(I)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

(II)好处:a.只能通过规定的方法访问数据b.隐藏类的细节,方便修改和实现

12.包的作用:(1)管理Java文件(2)解决同名文件冲突

13.系统中的包

(1)java.(功能).(类)

(2)java.lang.(类)包含Java语言基础的类

(3)java.util(类)包含Java语言中各种工具类

(4)java.io(类)包含输入、输出相关功能的类

14.包的使用

(1)可以通过import关键字,在某个文件使用其它文件中的类

import com.imooc.music.MyClass

(2)java中,包的命名规范是全小写字母拼写。

15.Java中的this关键字

(1)this关键字代表当前对象

this.属性     操作当前对象的属性

this.方法     调用当前对象的方法

(2)封装对象的属性的时候,经常会使用this关键字。

16.继承:

(1)概念:继承是类与类的一种关系,是一种“is a”的关系。Java中的继承是单继承。

(2)继承的好处:子类拥有父类的所有属性和方法,private修饰无效。实现代码复用。

(3)语法规则:class 子类 extends 父类

(4)继承的初始化顺序:a.初始化父类再初始化子类b.先执行初始化对象中属性,再执行构造方法中的初始化。

17.方法的重写

(1)概念:如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。

(2)语法规则:

a.返回值类型b.方法名c.参数类型及个数  都要与父类继承的方式相同,才叫方法的重写。

18.final关键字

(1)使用final关键字做标识有“最终的”含义

(2)final可以修饰类、方法、属性和变量

(3)final修改类,则该类不允许被继承

(4)final修饰方法,则该方法不允许被覆盖(重写)

(5)final修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)

(6)final修饰变量,则该变量的值只能赋一次值,即变为常量

19.super关键字:

(1)在对象的内部使用,可以代表父类对象。

(2)访问父类的属性:super.age

(3)访问父类的方法:super.eat()

(4)子类的构造的过程当中必须调用其父类的构造方法。如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。如果显示的调用构造方法,必须在子类的构造方法的第一行。如果子类构造方法中即没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出差。

20.Object类

(1)概念:Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object。

Object类中方法,适合所有子类。

(2)toString()方法

在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。可以通过重写toString()方法表示出对象的属性。

(3)equals()方法:比较的是对象的引用是否指向同一块内存地址。一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。

21.多态:对象的多种形态

(1)引用多态

父类的引用可以指向本类的对象,父类的引用可以指向子类的对象。

继承是多态的实现基础。

(2)方法多态

创建本类对象时,调用的方法为本类方法。创建子类对象时,调用的方法为子类重写的方法或者继承的方法。

22.应用类型转换

(1)向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

(2)向下类型转换(强制类型转换),是大类型到小类型

(3)instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。

23.抽象类

(1)语法的定义:抽象类前使用abstract关键字修饰,则该类为抽象类。

(2)应用场景:

(I)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

(II)从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

(3)作用:限制规定子类必须实现某些方法,但不关注实现细节。

(4)使用规则

(I)abstract定义抽象类

(II)abstract定义抽象的方法,只是声明,不需要实现。

(III)包含抽象方法的类是抽象类

(IV)抽象类中可以包含普通的方法,也可以没有抽象方法。

(V)抽象类不能直接创建,可以定义引用变量

24.接口:

(1)接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

(2)接口定义:和类定义不同,定义接口不再使用class关键字,而是使用interface关键字。

 接口定义的基本语法:

[修饰符]interface 接口名[extends 父接口1,父接口2……]

{

  零个到多个常量定义……

  零个到多个抽象方法的定义……

}

接口就是用来被继承、被实现的,修饰符一般建议用public 。注意:不能使用private和protected修饰接口。

(3)接口定义:

常量:接口中的属性是常量,即使定义时不添加public static final 修饰符,系统也会自动加上。

方法:接口中的方法只能是抽象方法,总是使用,即使定义时不添加public abstract 修饰,系统也会自动加上。 

(4)使用接口:一个类可以实现一个或多个接口,实现接口使用implements 关键字。Java 中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。

(5)继承父类实现接口的语法为:

[修饰符]class 类名 extends 父类 implements 接口1,接口2……

{

  类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。

}

如果要继承父类,继承父类必须在实现接口之前。

(6)接口在使用过程当中,还经常与匿名内部类配合使用,匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称。

语法格式:

Interface i=new Interface(){

  public void method(){

    system.out.println("匿名内部类实现接口的方式");

  }

}

25.UML

(1)概念:Unified Modeing Language(UML)又称统一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。

(2)常用UML图

(I)用例图(The Use Case Diagram)

用例图能够以可视化的方法,表达系统如何满足所收集的业务规则,以及特定的用户需求等信息。

(II)序列图(The Sequence Diagram)序列图用于按照交互发生的一系列顺序,显示对象之间的这些交互。

(III)类图(The Class Diagram):UML 类图、业务逻辑和所有支持结构一同被用于定义全部的代码结构。

(3)UML建模工具

Visio、Rational Rose、PowerDesign三种建模工具应用最广。

26.数据模型分析

(I)通过对现实世界的事与物主要特征的分析、抽象、为信息系统的实施提供数据存取的数据结构以及相应的约束。

(2)数据结构组成:操作(方法)、属性

27.业务模型分析

(I)在设计应用程序之前,应该明确该应用程序必须执行哪些任务。分析业务需求是应用程序开发中最重要的步骤之一。确认业务需求的目的在于创建一个能同事满足零售商和消费者需求的解决方案。

28.异常简介

(1)阻止当前方法或作用域,称之为异常。

(2)异常处理:

try-catch以及try-catch-finally

try{

  //一些会抛出异常的方法

}catch(Exception e){

  //处理该异常的代码块 

}

如果try 抛出异常将会发生什么呢?

首先是终止执行,然后程序的控制权将被移交给catch块中的异常处理程序。

(3)java中的异常抛出

throw----将产生的异常抛出(动作)

throws ---声明将要抛出何种类型的异常(声明)

public void 方法名(参数列表)

  throws 异常列表{

  //调出会抛出异常的方法或者:

  throw new Exception();

}

(4)自定义异常

class 自定义异常类  extends 异常类型{

}

29.集合:

(1)Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。

(2)集合的作用:(1)在类的内部,对数据进行组织。(2)简单而快速的搜索大数量的条目(3)有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素。(4)有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。

(3)与数组的对比--为何选择集合而不是数组

(I)数组的长度固定,集合长度可变(II)数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。

30.Java集合框架体系结构:

31.Collection接口、子接口以及实现类

Collection接口:(1)是List、Set和Queue接口的父接口(2)定义了可用于操作List、Set和Queue的方法------增删改差

List接口及其实现类-----ArrayList

(1)List是元素有序并且可以重复的集合,被称为序列。

(2)List可以精确的控制每个元素的插入位置,或删除某个位置元素。

(3)ArrayList---数组序列,是List的一个重要实现类

(4)ArrayList底层是由数组实现的。

32.泛型:

(1)集合中的元素,可以是任意类型的对象(对象的引用),如果把某个对象放入集合,则会忽略他的类型,而把他当做Object处理。

(2)泛型则是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型检查,可以直接按指定类型获取集合元素。

(3)泛型集合中的限定类型不能使用基本数据类型。

(4)可以通过使用包装类限定允许存入的基本数据类型。

(5)泛函集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错!

33.Set接口及其实现类-----HashSet

(1)Set是元素无序并且不可以重复的集合,被称为集。

(2)HashSet---哈希集,是Set的一个重要实现类。

(3)Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象(的应用),并且,保留的是第一次添加的那一个。

34.Map接口

(1)Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。

(2)Map中的键值对以Entry类型的对象实例形式存在。

(3)键(key值)不可重复,value值可以

(4)每个键最多只能映射到一个值

(5)Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方式。

(6)Map支持泛函,形式如:Map<K,V>。

35.HashMap类

(1)HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现。

(2)HashMap中的Entry对象是无序排列的

(3)Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)。

36.Arrays类,java.util.Arrays  包含操作数组的各种静态方法。Collections工具类  ,java.util.Collections,是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,sort()(排序)方法。排序顺序:先排数字,再大写字母,然后小写字母。

37.Comparable----默认比较规则。Comparator ---临时比较规则。

(1)Comparable--可比较的

(I)实现该接口表示:这个类的实例可以比较大小,可以进行自然排序。

(II)定义了默认的比较规则

(III)其实现类需要compareTo ()方法

(IV)compareTo()方法返回正数表示大,负数表示小,0表示相等。

(2)Comparator接口---比较工具接口

(1)用于定义临时比较规则,而不是默认比较规则。

(2)其实现类需要实现comparable()方法

(3)Comparator和Comparable都是Java集合框架的成员。

38.File类常用的API

(1)Java.io.File类用于表示文件(目录)

(2)File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。

39.RandomAccessFile 基本操作

(1)RandomAccessFile是Java提供的对文件内容的访问,既可以读文件,也可以写文件。RandomAccessFile支持随机访问文件,可以访问文件的任意位置。

(2)java文件模型:在硬盘上的文件是byte byte byte存储的,是数据的集合。

(3)打开文件: 有两种模式“rw”(读写)     “r”(只读)

RandomAccessFile raf=new RandomAccessFile(file,"rw");

文件指针,打开文件时指针在开头 pointer=0;

(4)写方法

raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

(5)读方法

int b=raf.read()------->读一个字节

(6)文件读写完成以后一定要关闭(Oracle官方说明)

40.paint方法会在以下三种情况下呗系统自动调用

(1)自动程序(2)宽口大小发生变化 (3)运行repaint函数时

41.流:

(1)流是用于连接程序和设备之间的管道,主要用于数据传输。这个管道上有很多的按钮,每个按钮可以实现不同的功能。

(2)四大基本抽象流:输入流、输出流、字节流、字符流

(3)文件流    缓冲流    转换流  数据流  Print流    Object流

(4)read input 是输入流  write output 是输出流

read  write是字符流  input output 是字节流

(5)复制文本文件用字符流,其余格式文件用字节流

(4)数据流案例

import java.io.*;

public class L7_1 {
      public  static void main(String []args )throws Exception
      { 
          ByteArrayOutputStream zjszl=new ByteArrayOutputStream();
          DataOutputStream sjl=new DataOutputStream(zjszl);
          long aa=123456789;
          sjl.writeLong(aa);
          
          byte[]zjsz=zjszl.toByteArray();
          ByteArrayInputStream srl=new ByteArrayInputStream(zjsz);
          DataInputStream sjsr=new DataInputStream(srl);
          long ss;
          ss=sjsr.readLong();
          
          System.out.println("ss=="+ss);
        
          
      }
}
View Code

42.线程

(1)有序严谨的指令集称为程序。

(2)程序的同时多运行称为进程。程序中不同的执行路径称为线程。

(3)多线程编程简单,效率高,易于资源共享。

(4)线程同步是指在一段程序执行过程中,无论成功还是失败,其它程序都会等待这段程序执行完毕,才会转入其它线程。这样可以保证程序的完整性和安全性。

43.图形化用户界面-GUI

(1)组件:以图形化的方式显示在屏幕上的,和用户进行交互的对象,就叫做组件。

(2)组件包括:菜单、标签、文本框(密码框)、滚动条、单选、复选、按钮等等。

(3)容器:组件不能独立的显示出来,只能将组件放在容器里,才能正常显示。

(4)将组件合理有序的排列和分布在容器中,(包括组件的位置,大小)称为布局(Layout)

(5)每个容器都有自己的布局管理器,当某个容器内的组件需要改变其属性时,就需要调用其组件所在容器的布局管理器。Awt中常见的布局管理器有:BorderLayout(边界布局管理器)、FlowLayout(流式布局管理器)、GridLayout(网格布局管理器)

(6)用户登录窗口

import java.awt.*;
import javax.swing.*;
public class L5 extends  JFrame{
    JPanel mb1,mb2,mb3;
    JButton an1,an2;
    JLabel bq1,bq2;
    JTextField wbk;
    JPasswordField mmk;
    public static void main(String[] args) {
            L5 lx=new L5();
    }
    
    public L5()
    {

        
        mb1=new JPanel();
        mb2=new JPanel();
        mb3=new JPanel();
        
        bq1=new JLabel("用户名");
        bq2=new JLabel("密      码");
        
        an1=new JButton("登录");
        an2=new JButton("取消");
        wbk=new JTextField(10);
        mmk=new JPasswordField(10);
        
        this.setLayout(new GridLayout(3,1));//三个面板成3行1列
        
        mb1.add(bq1);mb1.add(wbk);
        mb2.add(bq2);mb2.add(mmk);
        mb3.add(an1);mb3.add(an2);
        
        this.add(mb1);
        this.add(mb2);
        this.add(mb3);
        
    
        this.setTitle("用户登录");
        this.setSize(230,150);
        this.setLocation(300,280);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这句一定要写对,因为这句写的对不对运行时看不出来。
        this.setVisible(true);
    }

}
View Code

44.集合类

(1)集合类是一些特殊的类,专门用来存放其它类对象的“容器”。主要是完成一些数据库和数据结构的功能。

(2)集合类的分类

(I)List结构集合类:ArrayList   LinkedList   Vector   Stack

(II)Map结构集合类:HashMap  HashTable

(III)Queue结构集合类和Queue接口

(3)List集合类与Map集合类的区别:

(I)键值:能唯一标识某一事物的值称为键值。(注意:键值是为了唯一标识事物而单独添加的属性,一定不要用事物本身的属性来做键值)

(II)List没有键值,Map有键值

(III)ArrayList和Vector的区别与HashMap和Hashtable的区别相同,它们是:

(i)ArrayList和HashMap都是线程异步的,所以它们的特点是效率高但是安全性低。

(ii)Vector和Hashtable都是线程同步的,所以他们的特点是效率低但是安全性高。

45.泛型和反射机制

(1)由于类型转换的错误,java虚拟机在编译时不会报错,而在运行时报异常,所以安全隐患非常明显,为此我们需要用泛型来弥补这一问题。有了泛型,我们在集合中添加对象的时候,就不会再强转了。

(II)反射机制是将泛型固定的类的所有方法和成员全部可以显示出来,以供程序员可以确定程序的编写是否有误的机制。    

46.Equals方法

(1)java中一般情况下,不可以再用==来比较是否相等的情况,而是要用Equals方法来比较。

(2)Equals方法属于Object类并且不是final类型,所以任何类都可以继承并且覆盖该方法。

(3)对象之间不可以再用“==”来进行比较,因为这样比较的是对象的内存地址,而不是对象中的具体属性。

原文地址:https://www.cnblogs.com/heisaijuzhen/p/4239996.html