`
沈冠军
  • 浏览: 111258 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

Java小结

阅读更多
一.继承,多态,重写
1.继承 :降低工作量,降低程序的复杂性,使程序提高可扩展性......
一个类继承另一个类(一个接口继承另一个接口)的关键字是extends,类之间的继承只能一对一,不能继承多个类。
继承的格式:public class 子类名 extends 父类名{}
一个类继承接口的关键字是implements;一个类可以继承多个接口,接口之间用逗号隔开;
继承的格式:public class 类名 implements 接口名,接口名……{}
继承到了什么
子类继承到了父类的所有公有属性和公有方法,构造函数是不能被继承的。
2.多态:多态是指:虽然是同一类型的对象,但在具体的调用时,由于继承和重写机制,方法执行的结果不同。也就是,只有运行时才知道结果是什么,这是Java和其他编程语言的一个不同点。
3.重写:重写是指,在子类中对从父类继承来的方法进行重写,即保持方法定义的不变,但方法内部实现同父类的不同。下面用一个列子来把这三个东东联系起来。
先写一个StudentModle接口
public interface StudentModle{
public void study();
public void play();
}
写一个Student类继承StudentModle接口
public class Student implements StudentModle{
//实现接口中的方法
public void study(){
System.out.println(“我在学习中……”);
}
public void play(){
System.out.println(“我在游戏中……”);
}
}
好了,在写一个UNStudent子类来继承父类Student类
public class UNStudent extends student{
//重写父类的study方法
public void study(){
System.out.println(“我是大学生,我在学习……“);
//子类特有的方法
public void makeGF(){
System.out.println(“我在约会呢……”);
}
}
}
线索已经十分清晰了,UNStudent类的对象可以掉用父类中的所有方法,同时又具有自己独特的方法。
二.数据类型、值传递和引用传递有什么区别,String是什么传递
1. 数据类型:Java中的数据类型分为两大类,即原始数据类型和对象类型(或引用类型),后者是由Java类生成的对象的类型。
其中基本类型包括:byte(1字节),int(4字节),short(2字节),long(8字节),char(2字节),float(4字节),double(8字节),boolean(true/flase)。
2. 值传递:值传递只要指在基本数据类型之间在调用传递时遵守的规则。
即:将目标变量的值重新拷贝一份,传递到新的变量中,这样就形成了两份独立的数据。如果对新的变量的值做任何修改,是不会影响到目标变量的值;反之一样。
3. 引用传递:引用传递:适用于所有的类类型(自定义的类类型) ,创建对象的时候,对象名中保存的是对象实例在内存中的地址,如果对对象名做修改,对象实例是不会受到影响的。
4. Sting的传递:首先,Sting是Java里面的一个特殊的类,而不是一种基本数据类型,它有自己的方法和属性,所以Sting的传递是引用传递。
三.3.Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类
Map中是否可以放入null的key或Vlaue?Set,List呢?
Set是一个接口,不能直接创建对象,它实现的子类有:HashSet<E>、TreeSet<E>、LinkedHashSet<E>、JobStateReasons、EnumSet<E extends Enum<E>>、CopyOnWriteArraySet<E>、ConcurrentSkipListSet<E>、AbstractSet<E>,其中常用的有HashSet<E>、TreeSet<E>两个。它的对象是一个无序的集合,要遍历则得到对象的迭代器,方法为:java.util.Iterator<E> iterator=对象名. iterator(),遍历时的格式为:
while(iterator.HasNext){
for(int i=0;i<对象名.size();i++){
System.out.println(iterator.next());
}
}
List也是一个接口,它实现的子类有:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector,其中,比较常用的有ArrayList,它的遍历方法用for循环来。格式为:
for(int i=0;i<变量名.size();i++){
System.out.println(变量名.get(i));

}
Map 同样是一个接口,它的子类有:AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap。它的遍历比前面两个都复杂。它首先要得到Key的集合。格式为:java.util.Set<E> set = 变量名.keySet();然后再得到set的迭代器:java.util.Iterator<E> iterator = set.iterator();最后通过while循环;
while (iterator.hasNext()) {
E string = iterator.next();
Value值类型 count = map.get(string);
System.out.print(string + "\t" + count + "\n");
}
四. 递归与循环的区别一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。使用递归时应该注意:1) 递归就是在过程或函数里调用自身;
2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。
在很多种情况下,迭代和递归都可以完成相同的功能, 不过递归有些功能迭代就完成不了。 并且代码没有递归简洁,熟练使用递归后能提高代码质量。
循环是指一个过程或函数在其定义或说明中不断地重复某个过程,当不满足条件时退出循环,循环也必须有出口,否则就是死循环。其实递归是循环的一种特殊的形式。

五.I/O流继承体系结构图和分类。文件复制的实现,原始数据类型读写2.文件复制的实现:
源码:

public class ReadFile {
public static void main(String args[]) {
ReadFile rf = new ReadFile();
// 文件的路径
String path = "C:\\Documents and Settings\\Administrator\\桌面\\MATLAB基础教程.pdf";

String dest = "C:\\Documents and Settings\\Administrator\\桌面\\2.pdf";

//得到系统的时间戳
long start = System.currentTimeMillis();
// 写文件
rf.copyFile(path, dest);
long end = System.currentTimeMillis();
long res = end-start;
System.out.println("复制完毕,耗费时间:"+res+"ms");
}

/**
* 文件拷贝
*
* @param src:被拷贝的文件路径
* @param dest:拷贝后的文件路径
*/
public void copyFile(String src, String dest) {
try {
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
int i = fis.read();
while (i != -1) {
// 将读取到的字节写出去
fos.write(i);
// 读取下一个字节
i = fis.read();
}
fos.flush();
fos.close();
fis.close();
} catch (Exception ef) {
ef.printStackTrace();
}
}
}

3. 原始数据读写:
源码:
public class DataText {

public static void main(String args[]) {
DataText text = new DataText();
String path = "C:\\Documents and Settings\\Administrator\\桌面\\保存";
text.saveFile(path);
text.OpenFile(path);
}
public void saveFile(String path) {
try {
java.io.FileOutputStream out = new java.io.FileOutputStream(path);
java.io.DataOutputStream outs = new java.io.DataOutputStream(out);
outs.writeByte(123);
outs.writeInt(123234545);
outs.writeChars("fefsdfsafgrwtq");
} catch (Exception ef) {
ef.printStackTrace();
}
System.out.println("保存成功");
}
public void OpenFile(String str) {
try {
java.io.FileInputStream in = new java.io.FileInputStream(str);
java.io.DataInputStream ins = new java.io.DataInputStream(in);
byte b = ins.readByte();
int c = ins.readInt();
int lenth=ins.available();
} catch (Exception df) {
df.printStackTrace();
}
}
}

六.线程:线程有几种创建方式?线程在程序中有几种状态?1.线程的创建方式:第一种方式:通过继承Thread类创建
第二种方式:通过实现Runnable接口创建
使用第二种方式创建的好处:多个线程共享同一份资源;可以避免由于java单继承性带来的局限性。
2. 线程在程序中的状态:线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。
2) 可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的start()方法后,线程就处于可执行状态,但显而易见的是此时线程不一定正在执行中。
3) 死亡(Dead):当一个线程正常结束,它便处于死亡状态。如一个线程的run()函数执行完毕后线程就进入死亡状态。
4) 停滞(Blocked):当一个线程处于停滞状态时,系统排程器就会忽略它,不对它进行排程。当处于停滞状态的线程重新回到可执行状态时,它有可能重新执行。如通过对一个线程调用wait()函数后,线程就进入停滞状态,只有当两次对该线程调用notify或notifyAll后它才能两次回到可执行状态。3. class Object下常用的线程函数
wait()、notify()和notifyAll()这三个函数由java.lang.Object类提供,用于协调多个线程对共享数据的存取。
3.1 wait()、notify()和notifyAll()1) wait()函数有两种形式:第一种形式接受一个毫秒值,用于在指定时间长度内暂停线程,使线程进入停滞状态。第二种形式为不带参数,代表waite()在notify()或notifyAll()之前会持续停滞。
2) 当对一个对象执行notify()时,会从线程等待池中移走该任意一个线程,并把它放到锁标志等待池中;当对一个对象执行notifyAll()时,会从线程等待池中移走所有该对象的所有线程,并把它们放到锁标志等待池中。
3) 当调用wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。
七.static用法与注意事项,==和equals的区别?1. static用法与注意事项:
static 可以修饰方法,也可以修饰属性
静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法声明为static的方法有以下几条限制:它们仅能调用其他的static 方法。它们只能访问static数据。它们不能以任何方式引用this 或super。 “类名.方法名”,静态方法的使用很简单如上所示。
静态变量 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间.
2. ==和equals的区别
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
equals()方法的默认实现与==运算符相同,都是比较对象在内存中的地址是否相同。例如: Test test1=new Test(); Test test2=new Test(); Test test3=test1; System.out.println(test1.equals(test2)); System.out.println(test3.equals(test1)); System.out.println(test1==test2); System.out.println(test1==test3); 输出为false,true,false,true。
十、自己的学习到的经验,碰到典型的难题及如何解决。经过几个月对Java的学习,我学会了如何使用Java语言来编写一些小项目,也学会了如果解决在编写程序中出现的问题,自己的动手能力有所提升了,学会了独立思考。在编写程序时最常见的经典难题有,空指针异常,还有就是参数的传递,这两个问题是最纠结的,也是每个写程序的人一定遇到的。我刚开始遇到这个问题时,真的不知道怎么解决,只能请教别人,后来也学会了自己解决一些简单的,我想这种东西,不能一遇到不懂得就去问别人,要先自己思考解决的方法,实在不懂时才去请教别人,这样自己才能有所提升。
分享到:
评论

相关推荐

    java小结

    #### 小结 通过以上内容,我们对Java的基础知识有了更深入的理解。了解这些基础知识对于编程非常重要,特别是对于初学者来说。掌握了这些概念后,你可以更好地理解和编写Java代码,同时也能避免一些常见的错误和...

    十分有用的java小结

    十分有用的 Java 小结 在这篇文章中,我们将讨论 Java 编程语言中的一些基础知识和输入输出处理技巧,这些技巧对于 ACM 竞赛和OI竞赛尤其重要。 一、Java 之 ACM 注意点 在 ACM 竞赛中,Java 程序员需要注意以下...

    core java 小结

    ### Java核心知识点详解 #### 一、Java基本数据类型及空间占用 Java是一种强类型语言,这意味着在使用任何变量前必须明确其类型。这不仅帮助程序员管理数据,也确保了程序的安全性和稳定性。以下是Java中8种基本...

    java小结txt文档

    ### Java与JSP知识点解析 #### 一、Java DAO(Data Access Object)设计模式 **概念解析:** 在Java开发中,DAO模式是一种常见的数据库访问层设计模式,它提供了一种将数据访问逻辑封装的方式,使得业务逻辑层可以...

    java集合小结

    ### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...

    Java语言基础小结

    ### Java语言基础小结 #### 一、JDK, JRE, JVM的关系 - **JVM(Java Virtual Machine)**:Java虚拟机是Java程序跨平台运行的核心,它负责执行Java字节码(.class文件),确保Java程序可以在不同的平台上运行而...

    Java 正则表达式小结

    Java正则表达式是Java编程语言中的一个强大工具,它用于在字符串中进行模式匹配和查找、替换等操作。在本文中,我们将深入探讨Java正则表达式的概念、语法以及如何在实际编程中使用它们。 1. **正则表达式基础** -...

    JAVA IO流小结

    JAVA IO流小结 JAVA IO流是指Java语言中用来实现输入/输出操作的机制。IO流是指任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象。他屏蔽了实际的I/O设备处理数据的细节。 一、流的定义和分类 流是...

    Java个人学习小结

    ### Java个人学习小结 #### Java发展史及重要里程碑 - **起源与发展**: Java 的起源可以追溯到 1992 年,当时的 Sun Microsystems 公司开发了一种名为 Oak 的编程语言,最初是为了家用电器的智能化而设计的。然而...

    JAVA 模块知识小结

    JAVA模块知识小结涵盖的内容非常广泛,包含了Java技术栈中的多个重要知识点,从基础的开发工具到框架、数据库以及编程语言本身,以下是对给定文件中提到的各项技术的详细知识点梳理: 1. Hibernate和Ibatis ...

    java异常机制小结

    Java 异常机制小结 Java 异常机制是 Java 语言中一个非常重要的方面,也是程序设计的一大难点。Java 语言在设计的当初就考虑到异常处理的框架的方案,使得所有的异常都可以用一个类型来表示,不同类型的异常对应...

    java异常小结

    在Java编程语言中,异常处理是一个关键的概念,它确保了程序在遇到错误时能够优雅地终止,而不是崩溃。本文主要总结了Java异常处理机制及其相关知识点。 首先,异常机制是Java中用于处理程序运行时错误的框架。当...

    Java基础知识小结

    ### Java基础知识小结 #### 1.1 `getPath()`、`getAbsolutePath()`、`getCanonicalPath()`的区别 在Java中,处理文件路径时经常会用到`getPath()`、`getAbsolutePath()`以及`getCanonicalPath()`这三个方法。它们...

    C#与java相似点和差异小结.doc

    以下是关于这两种语言相似点和差异的小结: 1. **源文件约定**: - **C#** 允许一个源文件(.cs)中包含多个顶级公共类,文件名不必与类名相同。 - **Java** 则要求每个源文件(.java)只能有一个顶级类,且文件名...

    Java继承小结

    Java学习过程中的总结,对于继承部分的总结-----------------------------------------------------------------------------------------------------------------------------------------------

    JAVA日期判断方法小结

    "JAVA日期判断方法小结" 在JAVA语言中,日期判断是非常重要的一部分,以下是常见的日期判断方法的总结: 1. 判断某年是否为润年 判断某年是否为润年是日期判断的基本方法之一。该方法可以使用以下代码实现: ```...

    java调用RMI小结

    RMI(Remote Method Invocation,远程方法调用)是Java平台中用于分布式计算的一种技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法,从而实现跨网络的通信。Java RMI 提供了一种透明的...

    java基础小结

    《Java基础小结》 Java,作为一种广泛应用的编程语言,以其跨平台、面向对象的特点深受开发者喜爱。这篇博文和随附的PDF笔记旨在总结Java的基础知识,帮助初学者巩固理解,同时也为有经验的开发者提供回顾参考。 1...

Global site tag (gtag.js) - Google Analytics