Java基础知识整理
Java知识点总结
1环境搭建与开发
1.1 环境变量
JA V A_HOME:Java的安装目录;
CLASSPATH:指定一个路径列表,用于搜索Java在编译或运行时需要用到的类(.class文件);
PATH:指定一个路径列表,用于搜索可执行文件。
1.2 Java SDK应用
编译:Javac 类名.class;
运行:Java 类名;
打包:jar cf test.jar test (把当前目录下的test目录下的所有文件压缩到test.jar文件中)。
2变量与常量
Java中的常量用保留字final来实现。
变量:局部变量(local variable)、实例变量(instance variable)、类变量(class variable);任何变量在使用前都必须初始化,局部变量必须显示初始化,实例变量在类的构造方法被调用时初始化(分配默认值),类变量在类被加载时被初始化。
3标识符
3.1 命名
在Java语言中,标识符的定义规则是以字母、下划线、美元符开始,后面可以跟字母、下划线、美元符、数字。
因为Java语言使用Unicode字符集,所以对字母不仅限于英文,还可以是日文、韩文、阿拉伯文、中文等。
区分大小写,没有字数限制。
3.2 关键字
3.2.1static
static方法中不能有this和super关键字(static方法不是“面向对象”的,而是“面向类”的)。
static方法中只能访问所属类的static方法和变量。
static数据成员的初始化:在第一次生成该类的对象时初始化。
3.2.2final
1)final数据
a)static final
●更加典型的定义方式是public static final;
●占用一段不能改变的存储空间;
●代表编译时常量,即在编译器就能知道其值(如果只声明为final或
者static,是在运行时才知道值)。
●全部用大写字母命名,单词之间用下划线隔开。
b)final数据与final引用
●final数据的值不能被改变;
●final引用是指无法将其指向一个新的对象(数组也是一种引用),对
象本身的值是可以改变的。
c)空白final(声明为final却未赋初始值)
●可以做到根据对象有所不同,又保持恒定不变的特性;
●必须保证使用前已经初始化:在定义处赋值或者在构造器中赋值。
2)final参数
●无法在方法中更改引用所指向的对象。
3)final方法
●禁止覆盖,防止任何继承类修改它的定义;
●private方法都是final的,因此private方法无法覆盖。
4)final类
●不允许继承该类;
●final类中的所有方法都隐式指定为final的。
3.2.3transient
主要作用:防止对象的敏感信息被序列化,保证安全性。
transient用于在一个特定对象的一个域上关闭序列化,当该对象被序列化时,transient型变量不包含在序列化表示中。
原因:对于某些敏感信息(如密码),一经序列化处理,便可以通过读取文件或者拦截网络传输的方式访问到。
4运算符
4.1 算术运算符
4.1.1“/”运算符
如果被除数和除数都是整数,那么商也是整数;
如果被除数和除数中有一个是浮点数,商是浮点数;
当被除数是整数类型时,零不能作为除数(运行时报错);当被除数是浮点型时,除数为0,结果为Infinity。
4.1.2“%”运算符
既可以对整型数据取模,也可以对实型数据取模;
任何整数都不能对0取模;
不管是整型还是实型的取模运算,余数的符号与被除数的符号相同(若a%b,结果的符号与a相同)。
4.2 位运算符
<<:左移
>>:带符号右移(最高位为0则补0,为1则补1)
>>>:无符号右移(补0)
如果对char、byte、short类型的数据进行移位处理,那么在移位进行之前,它们会被转换为int类型,并且得到的结果也是一个int类型的值。
对char、byte、short进行运算时,都会得到一个int结果,必须将其显示地类型转换回原来的类型,在窄化转换的过程中可能会造成信息的丢失。
4.3 赋值运算符
如果赋值运算符两边的数据类型不相同,则需要进行类型转换,即“向左看齐”;
如果这种转换是由小向大的转换,系统将自动进行,如果是由大向小的转换,则需强制类型转换。
5数据类型
new将对象存储在堆里,故用new来创建一个小的对象,特别是小的简单的变量,往往不是很有效,因此,java不用new来创建对象,而是创建一个并非是引用的自动变量,这个变量直接存储值,并置于堆栈中,因此更加高效。
5.1 整型变量
在进行带有byte、short、int三种类型并存的表达式运算时,系统都会将short和byte 都先提升为int类型。
5.2 浮点型变量
●单精度浮点型float:32位;
●双精度浮点型double:64位。
5.3 字符型数据
●反斜杠(\)开头的字符;
●\u后接4位十六进制数字。
6数组
6.1 初始化
Java在声明数组时并不为其分配存储空间,因此在声明数组时不能指定数组的长度。
7字符串
String对象是不可变的,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动。
当把String对象作为方法的参数时,实际上是复制了一份引用。
String:字符串常量
StringBuilder:字符串变量(非线程安全)
StringBuffer:字符串变量(线程安全)
7.1 String
String str = new String(“good”); ——在内存的堆中创建一个”good”字符串对象
String str = “good”; ——在String pool中创建”good”字符串对象
7.2 StringBuffer
String与StringBuffer有什么区别?
String的长度是不可变的,String对象中存放的字符串对象不可修改;StringBuffer 的长度是可变的。因此如果经常需要增加、删除或者修改字符串中的某些字符,用String 就不方便,为了提高效率节省空间,应该使用StringBuffer。
7.3 StringBuilder
8流程控制
8.1 case & switch
跟在case后面的值必须是常量,不能是变量或表达式;
switch(expr)中,expr是一个整数表达式,因此传递给switch和case语句的参数应该是char、short、int。
9异常处理
9.1 常见的运行时异常
9.2 常见的检查时异常
抛出异常的时候,异常处理程序会按照代码的书写顺序找出“最近”的处理程序,找到匹配的处理程序之后,它就认为异常将得到处理,然后就不再继续查找。
查找的时候并不要求抛出的异常和处理程序声明的异常完全匹配,派生类的对象也可以匹配其基类的处理程序。
10内存管理
10.1 垃圾回收
10.1.1垃圾回收的优点
java的垃圾回收机制使得程序员不再需要显示地分配和释放内存,避免了很多潜在的问题,如“内存泄露”。
10.1.2何时垃圾回收
为了提高系统效率,垃圾回收器通常只在满足以下两个条件时才运行:
●有对象可回收;
●系统需要回收。
垃圾回收线程是一种低优先级的线程,只在系统空闲时才有机会运行,但在系统内存量过低的时候,可能会突发地执行来挽救内存资源。
垃圾回收器不可以被强制执行,但程序员可以通过调用System.gc()方法来建议执行垃圾回收器。
10.1.3垃圾回收算法
根集:正在执行的Java程序可以访问的引用变量的集合;
大多数垃圾回收算法都使用了根集(root set)的概念。垃圾收集首先需要从根开始确定哪些是可达的和哪些是不可达的;从根集可达的对象是活动对象,不能作为垃圾被回收;根集通过任意路径都不可达的对象满足被回收的条件。
JVM的垃圾回收机制有多个算法,其中最简单的是引用计数法,是用来判断对象是否已经被抛弃的,其它算法都是用来确定何时回收以及如何回收。
引用计数法没有使用根集:当发现某对象的引用计数为0时,就将该对象列入待回收列表。
10.1.4其它
●垃圾回收只与内存有关;
●对象可能不被垃圾回收。
如果JVM没有面临内存即将耗尽的情形,是不会浪费时间去执行垃圾回收的,即无论是垃圾回收还是finalize都不保证一定会发生,所以不能过分依赖它们。
10.2 finalize()方法
用途:每个对象都有一个继承自Object类的finalize()方法,用于回收除内存之外的系统资源,如文件和网络连接等。
何时被调用:一旦垃圾回收器准备好释放某个对象占用的存储空间,则将首先调用其的finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
finalize()方法可以被明确地调用,但它不能进行垃圾回收;如果某对象的finalize()方法在执行时出现异常,该对象仍然可以被垃圾回收器回收。
11Java I/O系统
11.1 Java NIO
(1)为什么使用NIO?
JDK1.4的java.nio.*包中引入了新的Java I/O类库,其目的在于提高速度;速度的提高来自于所使用的数据结构更接近操作系统执行I/O的方式:通道和缓冲器。
JDK1.4以前,一直使用流的方式完成I/O,所有的I/O被视为单个字节的移动,通过Stream对象一次移动一个字节;NIO与原来的I/O有相同的作用和目的,但是它使用的是块I/O,因此效率更高。
(2)概述
●什么是通道?
通道是对原I/O包中流的模拟,到任何目的地(或者来自任何地方)的数据都必须通过一个Channel对象。
通道与流的不同之处在于通道是双向的,而流只在一个方向上流动,通道可以读、写或者同时读写。
●什么是缓冲区?
缓冲区实质上是一个容器对象;发给一个通道的所有数据必须先放到缓冲区中,同样地,从一个通道中读取的所有数据也必须先放到缓冲区中。
(3)非阻塞技术
关键技术:观察者模式。
监控I/O端口,如果有内容进来,会自动通知,这样就不必开启多个线程死等,实现了流畅的I/O,不阻塞了。
11.2 内存映射文件(RandomAccessFile)
内存映射文件允许我们创建和修改那些因为太大而不能放入内存的文件。有了内存
映射文件,我们就可以假定整个文件都放在内存中,而且可以把它当做非常大的数组来访问。
11.3 对象序列化
Java的对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象。这一过程甚至可以通过网络进行,这意味着序列化机制能够自动弥补不同的操作系统之间的差异。
“持久化”意味着一个对象的生存周期并不取决于程序是否正在执行,它可以生存于程序的调用之间。通过将一个序列化对象写入磁盘,然后在重新调用程序时恢复该对象,就能够实现持久化的效果。
对象序列化的概念主要是为了支持两种特性:一是Java的远程方法调用(Remote Method Invocation, RMI),二是Java Bean。
●序列化的意义如下:
1)对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运
行远程主机上的服务,就像在本地机上运行对象时一样;
2)另外,Java序列化不仅保存一个对象的数据,而且递归保存对象中引用的每个
对象的数据,可以将整个对象层次写入字节流中。
●序列化的步骤:
1)创建OutputStream对象,然后将其封装在一个ObjectOutputStream对象内;
2)调用writeObject()即可将对象序列化,并将其发送给OutputStream。
●反序列化步骤:
1)将一个InputStream对象封装在一个ObjectInputStream对象内,然后调用
readObject();
2)将获得的Object引用向下转型。
12面向对象
12.1 多态
方法的多态性:重载&重写。
12.1.1重载
●一个类中;
●多个相同的方法名;
●参数的个数、顺序、类型不相同。
12.1.2重写
●继承类中;
●子类继承父类的方法;
●子类可以覆盖父类的方法,但是不能降低方法的访问权限。
●不能比父类方法抛出更多的异常(只能比父类抛出的异常少,或者是其子类)。
12.2 向上转型
把对某个对象的引用视为对其基类的引用。
向上转型中,调用的是子类的方法而不是基类的方法。
12.3 动态绑定
java虚拟机调用一个类方法时,它会基于对象应用的类型(通常在编译时可知)来选择所调用的方法。相反,当虚拟机调用一个实例方法时,它会基于对象实际的类型(只能在运行时得知)来选择所调用的方法,这就是动态绑定。
在处理java类中的成员变量时,并不是采用运行时绑定,而是一般意义上得静态绑定,所以在向上转型的情况下,对象的方法是子类的方法,但是属性是基类的属性。
如果试图调用子类的成员变量,可以将其封装成getter的形式。
12.4 Java识别对象和类信息
●RTTI (Run-time Type Identification),运行时类型识别
●反射:允许在运行时发现和使用类型信息
12.4.1运行时类型识别
在java中,所有的转型都会得到检查。即使只是进行一次普通的括弧形式的类型转换,在进入运行期时仍然会对其进行检查,以确保它是我们所希望的类型,如果不是,就会返回一个ClassCastException,这种在运行期间对类型进行检查的行为称作“运行时类型识别”(RTTI)。
●类型信息的表示:Class对象
每个类都有一个Class对象(同名的.class文件)。
●生成Class对象:类加载器
类加载器的工作时机:当程序第一次创建对某个类的静态成员的引用时,就会将该类动态加载到JVM中(构造方法也被当作类的静态方法)。
●为了使用某个类需要做的准备工作
1)加载
由类加载器执行。检查该类的Class对象是否已经加载,如果尚未加载,则在classpath所指定的路径下查找.class文件(字节码);一旦某个类的Class对象载入内存,它就用来创建该类的所有对象。
2)链接
执行验证字节码、为静态域分配存储空间等操作。
3)初始化
首次引用类的静态方法或非常数静态域时,对其初始化。
●获得Class对象的引用的方法
1)Class.forName(类的全限定名)
如果该类还没有被加载,则加载它,并自动初始化。
2)类名.class
不会自动初始化
3)对象.getClass()
●查询对象的类型信息
1)对象instanceof 类名
2)类名.isInstance(对象)
用equals和==来比较Class对象时,不会考虑继承;而用instanceof和isInstance()判断时,会考虑类型信息(即是否从属于该类,是该类还是该类的派生类)。
12.4.2反射
●RTTI和反射的区别:
RTTI:编译器在编译时打开和检查.class文件
反射:.class文件在编译时是不可获取的,在运行时打开和检查.class文件(从本地机器上获得或者从网络获得)。
12.5 继承
继承的几个原则:
●子类方法的访问权限不能弱于基类方法的访问权限;
●子类方法抛出的异常不能大于基类方法抛出的异常;
●private的字段和方法不能被覆盖。
12.6 抽象类与抽象方法
抽象方法是否可以同时为static?是否可以同时为native?是否可以同时为synchronized?
答:因为父类的static方法只能被子类的static方法覆盖,不能表现出多态,因为多态是通过引用来实现的,所以abstract和static不可以同时使用;
native方法是通过引入c/c++或其它本地语言来实现的,但在抽象方法中无法引入不同的实现,所以也不能同时使用;
因为synchronzied同步的是同一对象,而不是不同实现的不同对象,所以synchronized和abstract也不能同时使用。
●当一个类中包含有抽象方法时,该类必须被限定为抽象类;
●继承抽象类的子类必须实现基类中的所有抽象方法,否则便也是抽象类。
12.7 接口
接口的特征:
●接口没有构造方法;
●接口中声明的变量均为final、static、public的;
●接口中定义的方法均为abstract和public的;
●接口中的数据成员必须初始化,而且均为常量。
●接口本身具有public或者包访问权限两种可视性;
●接口中不提供任何方法体;
●接口内所有的域都是static和final的;
●接口内所有元素的可视性都是public。
12.8 类的加载及初始化
类的加载及初始化过程为:
●加载必要的类:先加载超类再加载子类,在加载过程中初始化static数据成员。
●先执行超类的构造器,再执行子类的构造器;在执行构造器之前,初始化数据
成员,对于没有提供初始值的数据成员,将基本类型设为默认初始值,对象引
用设为null。
●即:超类的static成员变量→子类的static成员变量→超类的成员变量→超类
的构造方法→子类的成员变量→子类的构造方法。
12.9 内部类
●在外部类的静态方法或者在外部类以外的地方创建内部类对象:
OuterClassName.InnerClassName
●内部类用于外部类所有元素的访问权限;
●.this用于在内部类中生成对外部类的引用,如OuterClassName.this;
●.new用于在程序中其它地方创建对内部类的引用;必须使用外部类对象创建
内部类对象,如:
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
每个类都有一个.class文件,由此产生Class对象。内部类的.class文件有严格的命名规则,即:
OuterClassName$InnerClassName.class
13容器
13.1 List的选择
最佳做法:将ArrayList做为默认首选,只有当需要额外的功能,或者当程序的性能因为经常从表中间进行插入和删除而变差的时候,才去选择LinkedList。如果元素数量固定,既可以使用List,也可以使用数组。
13.2 Set的选择
Set的特性:
●不保存重复元素,元素必须实现equals()方法;
●不保证维护元素的次序。
13.3 Map的选择
14多线程
14.1 线程的五种状态
●创建状态:new一个Thread对象后,新建的线程对象便处于创建状态;此时它已经有
了内存空间,但是还没有为其分配资源,所以还处于不可运行状态。
●就绪状态:调用start()方法你,线程便由创建状态进入就绪状态;此时,线程进入线程
队列排队,等待CPU为其服务。
●运行状态:被调用并获得CPU等资源时,便进入运行状态,自动调用run()方法。
●阻塞状态:如果发生了以下几种情况中的一种,便说明线程进入了阻塞状态:1,调用
了该线程的sleep()方法;2,调用该线程的wait()方法;3,调用该线程的suspend()方法;
4,该线程正在等待I/O操作完成。当引起阻塞的原因被消除后,线程进入就绪状态。
●终止状态:调用线程的stop()方法或者destroy()方法。
请说明什么是线程?
线程是程序执行过程中,能够执行程序代码的一个执行单位,每个程序都至少有一个线程,即程序本身。
15包和访问控制
16类集框架
17数据库
17.1 JDBC数据库编程
JDBC (Java Database Connectivity)
最新javaweb学习课程总结
总结一:javaweb课程总结刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业以来,一直都是学的理论性、框架性的东西,就没有接触到编程的实质性的部分,终于开始学编程了,感觉蛮兴奋的,也是精神饱满,信心十足,怀着一腔热血来听课。 由于JAVAWEB和JSP两门课是同时上的,而且每次都是一整上午,上课时间很长,老师一直有条不紊的讲着,虽然时间很长,但是每当大家上完课,心中都是有一种充实的感觉,大家都觉得有所收获,所以也就不曾觉得累了。 JAVAWEB这门课让我认识了以前见所未见闻所未闻的专业术语,Web应用程序的概述。我从中了解到Web应用程序的三层体系结构:表示层、业务层、数据存取层。从而想到了学数据库设计时的数据库设计三大范式,它们同是叙述在编写代码时应做的规划和应遵循的规则,这种规划在以后的学习中时有出现,说明编程并不是一味地进行循环判断、死记硬背,而需要在技术上有所加强、在效率上有所提高。做任何事都是如此,事先必须有目标、有计划,有统筹,这样执行时才不会盲目,才不会事倍功半。学习编程对综合能力都是一种培养。 接下来是JSP知识。要学JSP,就必须会HTML,如果HTML学不通,这对以后的学习都是一个瓶颈。基础一定要打扎实,吃透,否则上层建筑的建起就不会很顺利甚至没法起步。然后是JavaBean。以下是个人对JavaBean的一点学习体会。JavaBean里有set()和get()方法,用这些方法能很容易地传值,逻辑上更标准,代码看起来也更规范。但set()和get()方法只是用来对属性进行操作的,所以如果是进行复杂的逻辑或对数据库进行操作等,那么就不要写成set()和get()方法,只用一个有返回值的方法就足以。这样直观方便,且符合规范。总之,set()和get()方法不要没有效率地滥定义。 接着是Servlet。Servlet是一个用Java编写的应用程序,在服务器上运行,用来处理请求和响应,也可以单独做为一个Web页面。然后讲的是标签,包括自定义标签和JSP标准标签库。用一般的Java代码都几乎能实现它们的功能。它们的好处是提高了代码的重用性。 我们需要配置的坏境有JDK,Tomcat,还要用到Myeclips这一基础的编程工具。在学习JSP之前,由于没有网页编程的基础,便学习了HTML这种文本标记语言,自己试着去做简单的静态网站。后来学做JSP动态网站时,就涉及到了多方面的知识,JSP内部对象及内部对象所涉及的方法,JSP与数据库连接,如何去引用数据库。这门课更是巩固了JAVA 这一基础编程语言,要求对JAVA掌握的要透彻,每门语言要学扎实,深入理解,都要花费很大的功夫,不是容易的事情。 Jsp与servlet有一定的区别,Servlet可以看作是HTML的Java代码,而JSP可看作是包含Java代码的HTML。共同点:JSP和Servlet实际上是一回事。JSP页面最终要转换成Servlet,并进行编译,在请求期间执行的实际上是编译后的Servlet。因此,JSP页面不过是编写Servlet的另一种方式。各自应用的范围:Servlet比较适合于做处理任务,如做业务逻辑;JSP适合于表示任务,如网页制作,生成动态网页。 对JAVAWEB和JSP课程的知识就简单介绍到这里,本学期的这两门课程让我对软件工程这门课有了一个全新的认识,我真切的学到了能用的东西,大学里的很多课是浪费时间,而
《JavaWeb程序设计》课程规范标准
《Java Web程序设计》课程标准 1.课程定位 1.1课程定位 《Java Web程序设计》是计算机及相关专业学生的程序设计主修课程。修习本课程的目的是让学生在经过基本程序设计能力训练之后,掌握具有较高应用价值的JavaWeb应用程序设计的能力,掌握Java Web网站应用程序设计的方法。本课程的先修课程是《计算机操作基础》和《Java程序设计》,学生必须掌握基本的计算机操作技能、程序设计基础和Java面向对象程序设计的基本的方法,Java语言程序的编写设计方法,并具备一定SQL数据库语言基础及Java数据库应用能力。本课程是一门专业课程,适用于具备程序设计基础知识及网页设计技能的学生。 2.课程目标 Java Web程序设计是大学期间主要的程序设计类课程,以学生构思、创建一个简单网站的过程为主线,建立和掌握JavaWEB应用程序设计的基本概念和方法。本课程学习的效果如何,对学生在计算机应用设计技能的培养和学习有着重要影响,也对学生毕业后的工作能力有相当的作用。在课程讲授过程中,以不同的WEB数据库应用设计作为应用设计最主要的元素,进行教学驱动,通过递进的方式,把完成JavaWEB网站设计的学习进程及内容进行连贯和衔接,总体目标是:让学生建立WEB网站设计的基本基本概念和方法,掌握WEB数据库应用程序设计的规范和基本方法、同时根据不同的应用,掌握WEB网站设计的基本技巧,能够对现实的的问题进行分析和抽象,设计出一个简单的WEB网站,并通过代码实现网站的基本功能,完成应用程序的编写、调试和运行。
2.1知识目标 (1)掌握Web网站设计基本概念、学会Tomcat服务器安装配置 (2)掌握JSP语法基础、脚本编写及程序的运行方法 (3)掌握JSP程序控制方法 (4)掌握JSP指令元素、动作的基本概念及应用方法 (5)掌握主要的JSP内置对象及这些对象的用途 (6)学会根据实际要求设计表单,实现表单的提交及表单数据的提取 (7)掌握WEB数据库应用设计,能够完成WEB数据库的基本访问操作的设计 (8)掌握JavaBean程序的设计和应用方法,学会使用JavaBean进行程序封 装 (9)了解Java Servlet应用及程序的设计方法 2.2能力目标 2.2.1、专业能力目标 (1)熟练掌握WEB应用开发工具,掌握WEB网站设计的基本方法和过程 (2)能够根据实际网站设计要求,完成一个简单网站的程序结构设计 (3)能够合理设计网站数据库结构 (4)能够设计基本的WEB页面,实现数据库的查询及显示操作 (5)能够准确提取WEB数据,完成数据库的添加、修改和删除操作 (6)理解JavaBean程序概念,设计并通过Java类完成WEB应用 (7)能够使用Bean程序对网站数据库操作进行封装 (8)了解Servlet程序的结构和编写方法,完成简单的Servlet应用2.2.2、方法能力目标 (1)建立WEB应用程序设计的思想和基本方法; (2)具备一定的程序逻辑能力,程序模仿能力,程序设计的思维方法和能力; (3)能够自行查找资料,对于给定WEB应用需求进行基本的分析,构思 WEB网站的程序模块结构 (4)能够根据网站需求设计出合理的数据库结构 (5)掌握JSP基本的应用程序的设计和调试方法。 (6)完成页面表单的设计,并实现表单数据提取 (7)掌握WEB数据库的操作方法,实现数据库的查询、添加、更新、删除 操作
Java基础知识总结(超级经典)
Java基础知识总结 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点(使用注意): 3,该技术怎么使用。demo 4,该技术什么时候用?test。 ----------------------------------------------------------------------------------------------- 一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器; 1994年将Oak语言更名为Java; Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它
两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。 2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin 2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。 classpath的配置: 1):永久配置方式:classpath=.;c:\;e:\ 2):临时配置方式:set classpath=.;c:\;e:\ 注意:在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运
Java基础知识
一、填空题(每题1分,共50分) 1.Java程序可以分为两种基本的类型,分别是_________________和_________________。 2.如果一个类不显示地写上其继承的父类,则它的默认的直接父类是系统类_______________。 3.Java对内存的释放是采用____________________机制。 4.接口的所有成员方法都具有________________和________________属性。 5.设有一个Java应用程序,其源程序文件名为Test.java,则编译该源程序的命令是_________________________,运行该应用程序的命令为_________________________。 6.如果线程类A需要继承类B,而类B不是线程类,则需要通过接口类Runnable构造线程类A,类A的具体定义为 ___________________________________________________。 7.Java系统提供了方法____________________来强制立即回收垃圾。 8.运行以下语句后b的值是__________________。 String s1=“1234”; String s2=new String(“1234”); Boolean b=(s1 = = s2); 9.通过Connection实例对象的_____________________方法可以创建出Statement的实例对象。 10.JAVA小应用程序一般是_____________的子类。 11.JAVA语言通过____________机制简化了程序的内存管理。 12.JAVA字符(char)采用的是___________字符集。 13.面向对象的计算机语言一般应具有3个基本特性:____________、____________和______________。 14.JAVA语言中,捕获异常是通过________________语句结构来实现的。 15.编写线程程序主要是构造线程类,而构造线程类的方式主要有以下两种:(1)____________________________________________ (2)____________________________________________ 16.假设用JAVA语言为清华大学(网址为https://www.360docs.net/doc/9f2676195.html,)编写了图像处理包image,那么按照SUN公司的建议,这个包的名称最好为_________________。 17.JAVA数据类型中,具体包括哪三种引用数据类型:___________、____________、______________。 18.JAVA程序以________为单位进行组织的。 19.如果没有显式的定义类的构造方法,则系统会为该类定义一个默认的构造方法,这个默认的构造方法的作用是_____________________________________。
史上最全Java基础知识点归纳
史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资
深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。
JavaWeb期末总结
第一章Web开发基础知识(简单描述)表单(续) 表单元素