java 关键基础

来源:互联网 发布:淘宝刷好评 编辑:程序博客网 时间:2024/05/01 03:26

文件流操作
获取键盘的输入
scanner类。
import java.util.Scanner;

Scanner sc = new Scanner(System.in);sc.hasNextXxx();//是否输入Xxx类型的数据。sc.nextXxx();//返回读取到的对应数据类型内容。sc.hasNext();sc.next();sc.hasNextLine();sc.nextLine();next() 与 nextLine() 区别.。都是读取一行字符串。next():• 1、一定要读取到有效字符后才可以结束输入。• 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。• 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。• next() 不能得到带有空格的字符串。nextLine():• 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。• 2、可以获得空白。

读写文件

FileInputStream
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
有多种构造方法可用来创建对象。
可以使用字符串类型的文件名来创建一个输入流对象来读取文件:
InputStream f = new FileInputStream(“C:/java/hello”);
也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:
File f = new File(“C:/java/hello”);
InputStream out = new FileInputStream(f);
创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。
序号 方法及描述
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public int read(int r)throws IOException{}
这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。
4 public int read(byte[] r) throws IOException{}
这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。
5 public int available() throws IOException{}
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

Java File类
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

Java FileReader类& FileWriter类
FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据
异常
throw跟throws的区别:
public void test thorws Exception(){
throw new Exception();
}
从上面这一段代码可以明显的看出两者的区别。throws表示一个方法声明可能抛出一个异常,throw表示此处抛出一个已定义的异常(可以是自定义需继承Exception,也可以是java自己给出的异常类)。

类的继承格式
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
类的继承格式
class 父类 { }
class 子类 extends 父类 implements 接口1,接口2 { }

继承的特性
• 子类拥有父类非private的属性,方法。
• 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
• 子类可以用自己的方式实现父类的方法。
• Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。
• 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。super()是调用父类的构造方法,super.go();是调用父类的go()方法,当子类的go方法覆盖父类方法时候可以用。
this关键字:指向自己的引用。
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

构造器
子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

Override和Overload
重写(Override)
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
• (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
• (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
• (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现

•  重载反映的是"随机应变". 同样一项功能, 根据数据类型的不同, 采用不同的处理方式. 比如, 同样是吃饭, 去高档餐厅吃西餐, 你会西装革履, 但是去吃火锅, 穿便装就比较合适.• 重写反映的是"父子差异". 你"继承"了父亲吃火锅的爱好, 但是吃同一份鸳鸯锅(注意, 数据类型相同) , 你喜欢涮红汤, 你父亲喜欢涮清汤.

多态
多态就是同一个接口,使用不同的实例而执行不同操作

多态存在的三个必要条件
• 继承
• 重写
• 父类引用指向子类对象

抽象
抽象方法会造成以下两个结果:
• 如果一个类包含抽象方法,那么该类必须是抽象类。
• 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。

抽象类总结规定
• 1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
• 2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
• 3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
• 4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
• 5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

Java 接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口与类相似点:
• 一个接口可以有多个方法。
• 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
• 接口的字节码文件保存在 .class 结尾的文件中。
• 接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
• 接口不能用于实例化对象。
• 接口没有构造方法。
• 接口中所有的方法必须是抽象方法。
• 接口不能包含成员变量,除了 static 和 final 变量。
• 接口不是被类继承了,而是要被类实现。
• 接口支持多继承。
接口特性
• 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
• 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
• 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别
• 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
• 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
• 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
• 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

接口的声明语法格式如下:
[可见度] interface 接口名称 [extends 其他的类名] { // 声明变量 // 抽象方法 }

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

一个接口能继承另一个接口,这和类之间的继承比较相似。接口允许多继承。继承之后,实现该接口的类要实现包括该接口继续的类

集合接口
集合框架定义了一些接口。本节提供了每个接口的概述:
序号 接口描述
1 Collection 接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
2 List 接口
List接口是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,而且允许有相同的元素。
3 Set
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
4 SortedSet
继承于Set保存有序的集合。
5 Map
将唯一的键映射到值。
6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。
7 SortedMap
继承于Map,使Key保持在升序排列。
8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。
集合实现类(集合类)
Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一些是抽象类,提供了接口的部分实现。
标准集合类汇总于下表:
序号 类描述
1 AbstractCollection 
实现了大部分的集合接口。
2 AbstractList 
继承于AbstractCollection 并且实现了大部分List接口。
3 AbstractSequentialList 
继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。
4 LinkedList
该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:
Listlist=Collections.synchronizedList(newLinkedList(…));
LinkedList 查找效率低。
5 ArrayList
该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。
6 AbstractSet 
继承于AbstractCollection 并且实现了大部分Set接口。
7 HashSet
该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
8 LinkedHashSet
具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。
9 TreeSet
该类实现了Set接口,可以实现排序等功能。
10 AbstractMap 
实现了大部分的Map接口。
11 HashMap 
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。
12 TreeMap 
继承了AbstractMap,并且使用一颗树。
13 WeakHashMap 
继承AbstractMap类,使用弱密钥的哈希表。
14 LinkedHashMap 
继承于HashMap,使用元素的自然顺序对元素进行排序.
15 IdentityHashMap 
继承AbstractMap类,比较文档时使用引用相等。

字符串转int  Integer.parseInt(string, 10);
原创粉丝点击