java知识难点

问题描述

第一章Java语言简介1.Java语言的平台独立性Java是一种具有平台独立性的编程语言,它在源程序级上保证了其基本数据类型与平台无关,Java源程序编译后产生的二进制代码是一种与具体机器指令集无关的指令集合,通过JVM(Java虚拟机),可以在不同的平台上运行。也就是说,JVM为我们隔离了纷繁复杂的外部网络世界,只要计算机安装了JVM,就可以一致地运行Java程序。第二章Java语法基础1.作用域的一般规则在作用域之内声明的变量对于在该作用域之外的代码不可见。这样,当在作用域中声明的变量,事实上是将它从未授权的访问、修改中保护起来。从某种意义上说,作用域规则提供了封装的基础。注意:尽管块可以被嵌套,但是不能在块内与块外声明具有相同变量名的变量。在这一点上,Java与C/C++不同。第三章Java的面向对象编程基础1.Java中的类类是Java的核心,它是整个Java语言的基本单元,因为在Java看来,一切事物都是类。用Java语句语言进行程序设计就是定义类和使用类的过程。类可以分为两种,一种是系统定义好的类,即Java类库中的类,另一种是用户自定义的类。Java类库是一组由其他开发人员或软件供应商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务。当自己编写Java程序需要完成其中某一功能时,就可以直接利用这些现成的类库,而不需要一切从头编写。因而,是否尽可能多地熟练掌握Java类库,决定了一个Java程序员能力的高低。2.使用类库中系统定义好的类的方法第一种方法:继承系统类,在用户程序里创建系统类的子类。例如:每个Java小应用程序都是java.applet包中的Applet类的子类。第二种方法:创建系统类的对象。例如:在图形界面的程序中接受用户的输入时,就以可创建一个系统类TextField类的对象来完成这个任务。第三种方法:直接使用系统类。例如:在字符界面向系统标准流输出字符串时使用的方法:System.println(),就是使用系统类System的静态属性Out的方法。无论使用那种方法,使用系统类的前提条件是这个系统类对用户程序应该是可见的类。为此用户需要用import语句引入它所用到的系统类或系统类所在的包。3.类的声明与类的对象类的声明是通过关键字class来创建的,它实际上是定义了新的数据类型,今后可以使用该名创建类的对象(实例),类声明仅创建了模板,但并不创建对象。类对象的创建是通过关键字new来创建的,它实际上创建了包含在类中定义的每个变量的一个拷贝。4.Java修饰符小结类修饰类成员public公共类默认abstract抽象类无对象final最终类无子类成员访问控制符public所有其它类皆可访问本包中的类可以访问protected本包中的其它类和所有其它包中的子类本包中的其它类privateprotected仅该类的所有子类可以访问仅该类当前包中的子类private仅该类本身可以访问非法默认本包中的类可以访问成员方法修饰符abstract抽象方法是没有方法体的方法抽象方法必须在抽象类中定义非法final最终方法是不能被覆盖的方法非法 static静态方法是类方法,不能处理非静态的成员变量native本地方法的方法体由其它语言编写,在运行时加载sychronized同步方法在运行前对它所属的类或对象加锁,防止其它线程访问,运行结束前解锁非法修饰符组合abstract与final;abstract与static;abstract与native成员变量修饰符static静态变量是类的成员变量,不专属于某个对象,用类前缀调用final类的成员变量,常与static修饰符同时使用transient系统保留volatile易失变量,可能被其它线程所改变方法局部变量方法的局部变量可以用final来修饰,表示该局部变量为常量4.接口接口(interface)是方法定义(没有实现)和常数的集合,在类等级的任何地方都可以使用接口定义一个行为的协议并实现它。Java不支持直接的多重继承,但通过接口,可以间接地实现多重继承,为编程带来了方便。通常接口就被称为多重继承的替代物,然而多重继承和接口提供非常不同的功能。5.包的作用对象重用是面向对象编程的主要优点之一,在Java语言中,对象是以类的形式体现的,因此对象重用也就体现在类的重用上。一个类如果要在多个场合反复调用,可以把它存放在“包”中,这里的包实际上就是一组类组成的集合,通常更习惯于称之为类库。除系统本身提供的包之外,编程人员还可以自行定义一些包,把相关的类集中存放。如把前面创建的Rectangle(矩形)类和其它相关的类如circle(园)等统一存放在一个Shapes(形状)包内。包的作用是多方面的,它不仅可以方便对类的引用,还可规定类的方法和变量的引用范围。正常情况下,类的成员变量和方法如果不带public、private和pretected等修饰符,就只能由同一包中的类所引用,因此,通过把具有共性的类放到同一个包中,这些类就可以相互访问其它类的变量和方法,同时又不违背面向对象编程封装的特性。6.类引用的方法通常一个类只能引用与它在同一个包中的类,如果需要使用其它包中的非public类,可以使用如下几种方法:1)使用包名、类名前缀一个类要引用其它的类,就是要使用这个类的对象并使用它的属性或调用它的方法。对于同一个包中的其它类,只需在要使用的属性或方法名前加上类名作为前缀即可。对于其它包中的类,则需要在类名前缀的前面再加上包名前缀。2)加载需要的类在上面的方法中,每当使用某一包中的类时,都需要加上包名前缀“包名”,使用起来非常麻烦。解决的办法是在程序文件部分利用import语句将需要使用的整个类加载到当前程序中,这样在程序中需要引用这个类的地方就不需要使用包名前缀了。3)加载整个包上面的方法利用import加载了shapes包中的一个类Rectangle,有些情况下可以直接利用import加载整个包,这种方法更为常用,此时这个包中的所有类都会被加载到当前程序中。加载整个包的语句如下:importshapes.*;7.成员变量的继承与隐藏1)成员变量的继承子类是从父类继承所有非私有的成员变量而不是把父类成员变量的定义部分复制一遍,这样做的好处是减少程序维护的工作量。2)成员变量的隐藏如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。8.方法的继承、重载与覆盖1)方法的继承父类的所有非私有方法都可以被子类继承和直接调用。2)方法的覆盖正如子类可以定义与父类同名的成员变量,实现对父类成员变量的隐藏一样,子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖。当在子类中调用同名的方法时,一般情况下是调用它自己定义的方法,因而实现了对父类方法的覆盖,如果要调用父类的方法,只需在方法名前使用不同的类名或对象名即可。3)方法的重载子类定义同名方法覆盖父类的方法是面向对象方法中多态技术的一种实现。所谓多态就是指同名的不同方法共存,它有助于隐藏对象内部的实现细节,提高程序的抽象程序,是面向对象程序设计中经常使用的方法。实现多态技术的另一种重要手段就是方法的重载。与方法覆盖不同,重载不是子类对父类同名方法的重新定义,而是类对自己已有的同名方法的重新定义。第四章异常处理1.Java的异常处理机制由于Java程序是在网络环境中运行的,安全成为需要首先考虑的重要因素之一,为了能及时有效地处理程序中的运行错误,Java引入了异常和异常类。作为面向对象的语言,异常和其它语言要素一样,也是面向对象规范的一部分,是异常类的对象。Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生了一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其它对操作系统的损害,从而保证整个程序的安全运行,这就是Java的异常处理机制。第五章Java的多线程程序设计1.主线程与多线程每个Java程序都有一个缺省的主线程,对于Application,主线程是main()方法执行的路线,对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象,Java语言使用Thread类及其子类的对象来表示线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,新建的线程在它的生命周期中,总处于某种状态。处于不同状态的线程可进行不同的活动,完成不同的任务。2.线程的五种状态1)新建状态可以用下面的方法创建一个新的线程:ThreadMyThread=newThread();线程在已被创建而未被执行之前,处于新建状态。这时线程实例已被分配了内存空间,它的私有数据已被初始化,但该线程还未被调用。这时可以用start()方法启动它或用stop()方法终止它。新线程一旦被调用,就进入可运行状态。2)可运行状态可以用start()方法来使新创建的线程进入可运行状态。ThreadMyThread=newThread();MyThread.start();使用start()方法后,该线程就进入可运行状态。可运行状态就是线程的就绪状态,表示线程随时可以被调用,可运行状态并不等同于运行状态。由于很多计算机都是单处理器,所以要在同一时刻运行所有处于可运行状态的线程是不可能,Java的运行系统通过调度来使这些线程共享处理器。3)运行状态运行状态表明线程正在运行,该线程拥有了处理器的控制权,将一直运行到完毕,除非运行过程中控制权被更高一级的线程强占。在发生以下四种情况之一时,线程产生阻塞状态:•调用suspend()方法•调用sleep()方法•为等候一个条件变量,线程调用了wait()方法•输入/输出流中发生线程阻塞4)阻塞状态在阻塞状态,一个线程要等它需要的事件发生后,才可以从阻塞行状态回到可运行状态。在以下四种情况下可以使线程由阻塞状态恢复到可运行状态:•通过使用resume()方法使被suspend()挂起的线程恢复到可运行状态;•如果线程由于sleep()方法进入睡眠之中,那么当sleep()方法中参数指定的时间结束时,线程就恢复到可运行状态;•如果线程是等待条件变量,那么要停止等待的话,就需要该条件变量所在的对象调用notify()方法或notifyAll()方法;•如果在输入输出流中发生了线程堵塞,那么就要由特定的输入输出指令来结束当前的阻塞状态。5)死亡状态死亡状态也就是线程的最终状态,处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有以下两种:•正常运行线程完成了它的全部工作,即执行了run()方法的最后一个语句并退出。•线程被强制中止,如调用stop()方法或destroy()方法中止线程。3.创建线程的方法线程的创建有两种方法,第一种是创建Thread类的子类,该子类需要重载run()方法,分配并初始化一个该子类的对象。第二种方法是通过Runnable接口实现声明一个类,并且该类实现了run()方法。分配一个该类的对象,并作为创建Thread对象时的参数。

解决方案

解决方案二:
不知道说啥
解决方案三:
引用1楼yewuqing007的回复:

不知道说啥

+1
解决方案四:
顶多叫java知识重点用难点太抬举了

时间: 2024-10-21 09:32:18

java知识难点的相关文章

Java知识:Web应用下实现定时任务简便方法

web|定时 在WEB应用下实现定时任务的简便方法 在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务: 第一步:创建一个任务管理类,实现ServletContextListener 接口 以下是引用片段: public class TaskManager implements ServletContextListener { /** * 每天的毫秒数 */ public static final

网络资源-黑马程序员Java 知识——精华总结

获取更多资源Java帮帮IT资源分享网 一.黑马程序员-java 概述与基础知识.................................................................................6 1.何为编程?...................................................................................................................6 2.J

Java知识疑难问题

问题描述 在JAVA中eclipse中实行,代码块本身没有报错,却实行不了,为什么? 解决方案 解决方案二:执行不了也得报个错吧?!解决方案三:原因可能很多,LZ得描述你遇到的问题现象才行.还有,LZ帖子里是不是写了些错别字.解决方案四:该回复于2011-01-15 15:34:49被版主删除解决方案五:就是啊,问题可鞥很多,但是看你这应该是初级问题吧代码本身没有问题的话,可能就是包错了或者类名的问题了.解决方案六:JDK安装了没有,如果安装配置好了后,就贴出代码!解决方案七:估计楼主的程序中是

Java Learn Steps

我个人的经验,学习java应分以下几个阶段: java的语法学习 面向对象观念的建立 java基本类库的学习 学习设计模式 应用设计模式 经过大量的实践,可以设计模式 以上六个阶段,其中前三个阶段是针对java的,但java中,在很多设计模式的应用,同时有很多功能都支持设计模式,所以不懂设计模式的人是不会很好的应用java做开发的.第4.5个阶段的学习在前三个阶段的基础上,学习.应用成功的经验.从而进入第六个阶段,在软件设计这个领域尽情发挥.本人受能力所限,还处在第4个阶段的学习过程,所以会对前

我学习使用java的一点体会

2002年初,因为公司的业务需要而学习java,并应用java开发项目.由于项目时间紧,没有充裕的时间系统学习java,对java的学习只能是项目需要用什么,就学什么,这种学习方法的上手快,但不扎实,在以后的工作中,因为java学的不扎实,吃了不少苦头.现在我学习应用java已经有一年半的时间,对java已经有了一定的体会,把自己的体会写出来,供网友分享. 以我个人的经验,学习java应分以下几个阶段: java的语法学习 面向对象观念的建立 java基本类库的学习 学习设计模式 应用设计模式

我们如何学好java

转载:http://www.zhihu.com/question/19945685 马士兵有一篇文章,我觉得写得很好,原文转载如下,希望题主可以好好读读. ------------------------------------------------------------------------------------------------------------ 目录 JAVA自学之路 一: 学会选择............................................

PHP与已存在的Java应用程序集成

程序 PHP功能的另外一个优势是其调用已有Java对象方法的能力.通过此项功能可将PHP集成进已有的基于Java的应用程序.如果你正在工作场合推广PHP ,这项功能尤其显得时髦."Java无处不在." 为实现此功能,你需要在服务器上安装Java虚拟机(JVM).如果你将安装(或已安装)来自Sun.Kaffe.IBM或Blackdown的JDK,则可以迅速开始工作. 当配置PHP时,需要对配置指令增加--with-java参数,然后修改php.ini文件中部分元素.php.ini 中通常

J2EE项目危机【翻译】 -避免这10项J2EE危机来确保你的企业JAVA项目成功

j2ee|项目   在我作为开发者.高级开发者.架构师的经历中,我遇到过好的.差的甚至是丑陋的企业级JAVA项目.当我问自己,是什么使一个项目成功而使另外的失败,我发现很难得到一个完美的答案,就好像很难用成功来定义所有的软件项目.J2EE项目也不例外.因此,项目被分为不同级别的成功或失败.在这篇文章里,我主要想为您--读者朋友--揭示影响企业级JAVA项目的最大的10项危险. 一些危险只是简单的延迟项目进度,一些却是错误的征兆,而还有一些使项目彻底没有成功的希望.尽管如此,如果具有良好的准备,征

Java模式设计之单例模式(四)

不完全的单例类 什么是不完全的单例类 估计有些读者见过下面这样的"不完全"的单例类. 代码清单10:"不完全"单例类 package com.javapatterns.singleton.demos; public class LazySingleton { private static LazySingleton m_instance = null; /** * 公开的构造子,外界可以直接实例化 */ public LazySingleton() { } /**