java年总结(共9篇)(共9篇)
1.java年总结 篇一 2017年总结
尊敬的领导:
您好!在2017年4月我很荣幸地进入公司,加入了研发部Java技术开发团队,认识了友善严谨的领导、热心和睦且技术优秀的同事,很是开心。在这一年里通过自身的努力,不断完善自己的知识结构,向同事虚心请教开发技术上的问题,较快地熟悉了公司采用的技术框架和业务知识。
通过公司日常培训学习和工作积累我对公司业务也有了一定的了解,在各方面也有了进步。目前在参与项目开发的工作中,我负责XXX功能模块开发。新年伊始,特向过去的一年2015年工作总结汇报如下:
根据公司的安排,项目的需要,通过在XXX项目开发中的锻炼,我成长了,也认识到了自己的不足之处。在自身的努力、领导的帮助,团队的合作下,克服重重技术困难,增长了工作经验,收获颇多。从入公司以来我就开始学习基于代码生成器免费开源的开发框架以及Maven项目管理工具的使用,曾经接触过的框架比较熟悉的有SSH,表现层的实现技术freemaker、JSP。个人优势就是曾在XXX行业针对XXX业务用SpringMVC框架开发管理系统,缺点是没有用过Activity工作流技术。Hibernate框架,没有用到过多表关联动态查询和hql查询。印象较深刻的就是多对多关联表查询需要用到构造函数的方法来查。新接触的项目中我主要涉及到的开发模块有(具体描述功能模块)XXX等功能。工作中的经验总结如下:
1.对业务流程的梳理上,代码没有写活,考虑的问题不全面。后来在讨论时经过同事的指点进行了改造,代码质量和规范才有了明显提高。
2.知识面还不够广博。在开发中遇到不少以前没学过的技术,一个模块功能中,涉及的技术往往有多种,知识多了,就会灵活变通,以后一定要加强这方面的学习。
3.需要加强总结。在工作中,发现因为流程或业务需求的问题而不知道如何下手的情况有点多,包括错误与缺漏还有当时设计考虑不到位的地方,对于这块的控制力度显然不够。平时总是在开发,但说到底对业务很熟悉才是项目很好完成的前提,所以要到遇到过的问题需要进行总结,以便以后能快速定位和解决。今后的计划:
通过今年的实践和学习,明年又是一个新的开始,立足当前的优缺点,肩负起应有的工作和性质。为公司明年的发展尽自己最大的努力,也希望自己明年有更大的收获。随着大数据时代的到来,数据已渗透到各行各业领域,希望明年可以学习到云数据库方面的知识技能。在当前已有关系型数据库方面经验的基础上提升自己。明年自己给自己定的目标是,达到理想的工作状态,顺利的开展公司的工作,掌握更多的技术点。编写高效率的代码。对公司的小建议:
1.部门管理方面:作为研发部的一员,我觉得公司应该要有OA系统。实现员工考勤统计、绩效管理、个人通讯录等办公自动化管理,不仅仅是提高个人的办公效率,也提高公司整体的办公效率,实现资源共享,强化部门管理以及部门之间的沟通。这样就不需要每次都是人工来统计考勤数据。也不必要走线下流程打印补卡单浪费资源和减少不必要的费用支出。
2.企业文化方面:如果条件允许,每周三下午四时可以设立下午茶时间,时间可以是十五分钟,再忙也要学会适当放松自己。也是提高工作效率的另一种方式。
工作计划、今后规划做出以下几点规划:
1.工作要注重实效、注重结果,一切工作围绕着目标的完成; 2 立足大局,勤于沟通,分工合作,提高工作效率; 3.把握一切机会提高专业能力,加强平时知识总结工作; 4.精细化工作方式的思考和实践。
以上为本人粗略的个人工作小结,请领导审阅,如工作上有不到之处,请领导多多包涵,不吝指出,以便本人及时改正,从而能更好地工作。展望2018年,我会更加努力、工作上认真负责,再接再厉,更上一层楼。相信自己会完成新的任务,能迎接新的挑战!
研发部Java开发工程师XX 2018年1月25日
2.java培训总结 篇二 在很多人看来,计算机很复杂,有数不清的代码和程序,可以完成各种各样的任务,功能千变万化,要掌握它是一件难比登天的任务,其实不然。计算机这种复杂性,完全是人赋予的,计算机只是单纯的按照人的指令去完成我们想要完成的事情,从这方面看,计算机是简单的,复杂的只是人们要对它说的话而已。其实计算机正像吴老师所说:“相比与人,我更喜欢和计算机打交道,因为它必须要完成人的指令,而不能有丝毫抗拒。”
在参加java培训的过程中,我感觉其实生活中很多时候与java编程是存在相似点。比如说我们想做一件什么事情,总是要先考虑下这件事的目的,做这件事需要先准备些什么,中间需要哪些步骤,最后怎样实现等等,这与计算机编程思想惊人的相似,所以说,任何事物发展到极致,必然还是在自然的这个圈子中,受自然规律的束缚,计算机就算功能再强大,也是人们赋予的,必然还是会局限再人们自身的思想当中,用人们固有的解决问题的方法来解决问题,所以就这方面来说,其实计算机语言是简单的,在这段时间的学习生活中,我也认识了很多朋友,大家都对未来怀着美好的憧憬,所以学习时也加倍努力,每天十几个小时的学习让我们平时的生活过的无比充实,每个人对幸福的定义不同,就我个人来说,能每天学习一些新知识,认识一些新朋友,吃得饱,睡的香,这就是幸福。在我们前行的道路上,或许有些许坎坷,但其实人生的快乐正是在起起落落间,只要坚信我们前进的方向正确,总会触摸到天堂。
3.java总结 篇三 在子类的构造方法中可使用super(argument_list)语句调用父类的构造方法
如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法
如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错
1public class Person {
3private String name;
4private int age;private Date birthDate;
7public Person(String name, int age, Date d){ 8this.name = name;
9this.age = age;
10this.birthDate = d;
11}
12public Person(String name, int age){ 13this(name, age, null);
14}
15public Person(String name, Date d){ 16this(name, 30, d);
17}
18public Person(String name){
19this(name, 30);}
21// ……
22}
1public class Student extends Person {
2private String school;
4public Student(String name, int age, String s){ 5super(name, age);
6school = s;
7}
8public Student(String name, String s){
9super(name);
10school = s;
11}
12public Student(String s){ // 编译出错: no super()13school = s;
14}
15}
对象构造和初始化细节
分配存储空间并进行默认的初始化
按下述步骤初始化实例变量
1.绑定构造方法参数
2.如有this()调用,则调用相应的重载构造方法,然后跳转到步骤5
3.显式或隐式追溯调用父类的构造方法(Object类除外)
4.进行实例变量的显式初始化操作
5.执行当前构造方法的方法体
==操作符与equals方法
==操作符与equals方法的区别:
引用类型比较引用;基本类型比较值;
equals()方法只能比较引用类型,“==”可以比较引用类型及基本类型;
特例:当用equals()方法进行比较时,对类File、String、Date及封装类(Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个实例;
用“==”进行比较时,符号两边的数据类型必须一致(可自动转换的基本数据类型除外),否则编译出错;
由装箱引发的——Integer比较的来龙去脉
前置知识: 众所周之,java是保留了int,char等基本数据类型的,也就是说int类型的并不是对象,然而有些方法却需要object 类型的变量,所以java使用了装箱机制,我们可一自豪的这样声明一个整型变量:Integer a = new Integer(10);那么整型的a也就是对象了,那这句是什么意思呢:Integer a= 10;java中可以这样声明一个对象吗?当然不是,从jdk1.5后,java实现了自动装箱,也就是自动将Integer a =10 中的int类型的10转化为了 Integer类型。好,有了前面的只是我们且先看一个题目:
Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a==b);
System.out.println(c==d);
答案是什么呢? 如果您回答true,false,那么很遗憾的告诉你,哈哈,其实你答对了!!
那我们晕了就相差1的两个数为啥走向了“反目成仇”的地步呢?凭啥127等于127,我128就不等于128呢?且听我慢慢道来,Integer a =127,Integer a=128。
127,128应该不会造成什么差异吧,难道是自动装箱的过程有猫腻?找下源码看看:
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128)+ 127 + 1];static {
for(int i = 0;i < cache.length;i++)
cache[i] = new Integer(i128);
}
这是用一个for循环对数组cache赋值,cache[255] = new Integer(255-128),也就是newl一个Integer(127),并把引用赋值给cache[255],好了,然后是Integer b= 127,流程基本一样,最后又到了cache[255] = new Integer(255-128),这一句,那我们迷糊了,这不是又new了一个对象127吗,然后把引用赋值给cache[255],我们比较这两个引用(前面声明a的时候也有一个),由于是不同的地址,所以肯定不会相等,应该返回false啊!呵呵,这么想你就错了,请注意看for语句给cache[i]初始化的时候外面还一个{}呢,{}前面一个大大的static关键字大咧咧的杵在哪呢,对静态的,那么我们就可以回想下static有什么特性了,只能初始化一次,在对象间共享,也就是不同的对象共享同一个static数据,那么当我们Integer b = 127的时候,并没有new出一个新对象
来,而是共享了a这个对象的引用,记住,他们共享了同一个引用!!,那么我们进行比较a==b时,由于是同一个对象的引用(她们在堆中的地址相同),那当然返回true了!!
然后我们在看Integer c = 128;Integer d = 128;这两句。现在不用我说就应该能明白了吧,当数据不再-128到127之间时,是不执行return
IntegerCache.cache[i + offset];这句的,也就是不会返回一个static的引用,而是执行了return new Integer(i);于是当 Integer d = 128 时,又会重新返回一个引用,两个不同的引用
在做c==d 的比较时当然返回false了!
下面附上本程序的字节码以供喜欢底层的读者参考:
Compiled from “CompareInteger.java”
public class CompareInteger extends java.lang.Object{
public CompareInteger();
Code:
0:aload_0
1:invokespecial#1;//Method java/lang/Object.“”:()V4:return
public static void main(java.lang.String[]);
Code:
0:bipush 127
2:invokestatic#2;//Method
java/lang/Integer.valueOf:(I)Ljava/lang/Int
eger;
5:astore_1
6:bipush 127
8:invokestatic#2;//Method
java/lang/Integer.valueOf:(I)Ljava/lang/Int
eger;
11: astore_2
12: sipush 128
15: invokestatic#2;//Method
java/lang/Integer.valueOf:(I)Ljava/lang/Int
eger;
18: astore_3
19: sipush 128
22: invokestatic#2;//Method
java/lang/Integer.valueOf:(I)Ljava/lang/Int
eger;
25: astore 4
27: getstatic#3;//Field
java/lang/System.out:Ljava/io/PrintStream;
30: aload_1
31: aload_2
32: if_acmpne39
35: iconst_1
36: goto40
39: iconst_0
40: invokevirtual#4;//Method java/io/PrintStream.println:(Z)V43: getstatic#3;//Field
java/lang/System.out:Ljava/io/PrintStream;
46: aload_3
47: aload4
49: if_acmpne56
52: iconst_1
53: goto57
56: iconst_0
57: invokevirtual#4;//Method java/io/PrintStream.println:(Z)V60: return
}
评论:呵呵,这么想你就错了,请注意看for语句给cache[i]初始化的时候外面还一个{}呢,{}前面一个大大的static关键字大咧咧的杵在哪呢,对静态的,那么我们就可以回想下static有什么特性了,只能初始化一次,在对象间共享,也就是不同的对象共享同一个static数据,那么当我们Integer b = 127的时候,并没有new出一个新对象来,而是共享了a这个对象的引用,记住,他们共享了同一个引用!!
呵呵,博主我被你这句话小小的误导了一下,其实你这里说的原理没错,但是把位置说错了,这段代码只是初始化cache:
static {
for(int i = 0;i < cache.length;i++)
cache[i] = new Integer(i-128);
}
但真正让cache[i]为static变量的是这句代码:
4.java学习总结 篇四 这周从HTML学到了mysql:
1.HTML:Hypertext Markup Language超文本标记语言 后缀名为.html或.htm
由两部分组成:head和body
2.body属性:bgcolor、background、bgproperties、text
3.table表格
属性:table、caption、tr、td、th、bgcolor、background、width、height、border、bordercolor、colspan、rowspan、align、valign
4.from表单:主要功能收集信息
表单标记: 、…… 、
隐藏域:
图像域:
文件域<input type=file name=“ ”>
单选框radio复选框checkbox文字域textarea
5.超链接:
6.移动文字:
……
7.框架:由框架集和框架组成框架集定义窗口中显示的框架数,框架是显示区域
@
@
嵌套框架
8.CSS:Cascading Style Sheets 层叠样式表
CSS在网页中有三种实现方式:在head内、在body内、在文件外调用
利用CSS定位:和
9.HTML对象模型:HTML Document Object model简称HTMLdom
10.Javascript是一种基于对象(object)和事件驱动(Event Driven)并具有安全性能的脚本语言不能单独存在,必须依附于HTML存在通过调入或嵌入主要基于客户端运行的事件(Event):在主页(HomePage)中执行某种操作所产生的动作
Windows对象:open()、close()、alert()、confirm()、prompt()
11.Javascript内置对象:string对象、Math对象、Date对象、Array对象、Event对象
时间对象:getDate、getDay、getHours、getMinutes、getMonth、getSeconds、getTime(以ms为单位)、getYear(以上全为当前对象)、getTimeZone(当前时区偏移信息)
12.Javascript中定义函数格式如下
Function funname(参数表){
执行部分
Return(需要时写)
}
13.Javascript中只有4 中数据类型:数值(整型、实型)、字符串型、布尔型、空值(null)
14.Javascript程序可放在:HTML网页的body中、HTML网页的head中、外部.js文件中
15.静态联编和动态联编
Java采用静态联编--先编再执sun公司
Javascript采用动态联编--边编边执是Netscape公司的产品,其前身是Oak语言
16.正则表达式:regular expression--res
主要用途:数据有效性验证、查找和替换
17.数据库操作步骤
@加载数据库第三方驱动程序--加载数据库连接包
@加载数据库的驱动类
@与数据库建立连接,并拿到这个连接对象
@通过Connection对象拿到数据库的操作对象Statement
@编写sql语句,通过操作对象发送对数据库的操作命令,并返回操作结果
5.java命令总结 篇五 jar
随着JDK安装,在JDK安装目录下的bin目录中存在一个可执行文件,Windows下文件名为jar.exe,Linux下文件名为jar。它的运行需要用到JDK安装目录下lib目录中的tools.jar文件。jar命令行格式为:
jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名
其中{ctxu}是jar命令的子命令,每次jar命令只能包含一个子命令,这些子命令含义如下。
-c:创建新的JAR文件包。
-t:列出JAR文件包的内容列表。
-x:展开JAR文件包的指定文件或者所有文件。
-u:更新已存在的JAR文件包(添加文件到JAR文件包中)。
[vfm0M]中的选项可以任选,也可以不选,它们是jar命令的选项参数。
-v:生成具体报告并打印到标准输出。
-f:指定JAR文件名,通常这个参数是必须的。
-m:指定需要包含的MANIFEST清单文件。(指定manifest文件,而不是自动生成)
-0:只存储,不压缩,这样产生的JAR文件包会比不用该参数产生的体积大,但速度更快。
-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数。(该参数指定后jar中将没有manifest文件)
(注意:在指定v 和 m时 后面跟着的jar文件与manifest文件的顺序要与vf指定的先后顺序保持一致)
[jar-文件]:即需要生成、查看、更新或者解开的JAR文件包,它是-f参数的附属参数。(生成的jar文件扩展名一般为jar,若为其他也可以)
[manifest-文件]:即MANIFEST清单文件,它是-m参数的附属参数。(扩展名没有限制)
以上在指定文件名时,可以同时指定文件目录
[-C 目录]:表示转到指定目录下去执行这个jar命令的操作。它相当于先使用cd命令转到该目录下,再执行不带-c参数的jar命令,它只能在创建和更新JAR文件包的时候使用(要打包的文件的目录)。
文件名:指定一个文件/目录列表,这些文件/目录就是要添加到JAR文件包中的文件/目录。假如指定了目录,那么jar命令打包的时候会自动把该目录中的所有文件和子目录打入包中(可以指定多个文件,用空格间隔)。
使用JDK的jar命令打包,会自动在压缩包中生成一个META-INF目录,其中有一个MANIFEST.MF文件。
jar cvfm myapplication.jar myapplication.mf-C classdir
java
用法:java [-options] class [args...](直接执行一个类)
或: java-jar [-options] jarfile [args...](执行一个jar文件中指定的类)
[-options]包括以下内容:
1-clientto select the “client” VM
2-serverto select the “server” VM-hotspotis a synonym for the “client” VM[deprecated](The default VM is client.)-cp <目录;zip;jar文件,以“;”进行分隔>用来设定classpath,将会覆盖环境变量中设置的class_path,在程序中可以通过System.getProperty(“java.class.path”)来获取
例:java-cp D:bintest.Test(为目录时,最后一个可以省略)
输出System.getProperty(“java.class.path”):D:bin-classpath同-cp-D= 为一个系统属性设值(java已存在的或自定义的,通过System.getProperty(propertyName)可以获取)
例1:java-Djava.class.path=D:bin test.Test(注意等号前后没有空格)
此句话的作用同4,5中设置classpath是一样的Test类中输出System.getProperty(“java.class.path”):D:bin
例2:java-Djava.class.path=D:bin-Daa=tp test.Test
Test类中输出System.getProperty(“aa”):tp
例3:java-Djava.class.path=D:bin-Daa=tp-Djava.ext.dirs=D:extbin test.Test
这样在执行Test类时,指定Extension ClassLoader/扩展类加载器的装载路径
例4:java-Djava.library.path=......这样在执行Test类时,指定搜索库文件的路径
也可以在程序运行期间调用System.setProperty(String key, String value);来设定。-X:
-Xbootclasspath设置和引导类和资源的搜索路径
-Xbootclasspath/a把路径添加到启动类路径的末尾
例3:java-Djava.class.path=D:bin-Xbootclasspath/a:D:toolsjdk1.5lib test.Test
这样在执行Test类时,增加了Bootstrap ClassLoader/启动类加载器的装载路径
-Xbootclasspath/p把路径添加到启动类路径的前面
-X与-D-cp-classpath指定classpath的区别:
要理解区别,就要从jdk的类装载器的装载位置来看:
a, Bootstrap ClassLoader/启动类加载器
主要负责jdk_home/lib目录下的核心 api 或-Xbootclasspath 选项指定的jar包装入工作.b, Extension ClassLoader/扩展类加载器
主要负责jdk_home/lib/ext目录下的jar包或-Djava.ext.dirs 指定目录下的jar包装入工作
c, System ClassLoader/系统类加载器
主要负责java-classpath/-Djava.class.path所指的目录下的类与jar包装入工作.b, User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
6.Java基础总结 篇六
1.class对象
专门用来保存类的信息,所有类都是动态加载到JVM中的,在他们第一次使用的时候,类加载器会首先检查Class对象是否加载,如果没有,那么找到同名的class文件,然后加载字节码文件,验证代码的完整性和安全性,一旦这个类型的class对象加载到内存中,它将会用来创建所有此类的对象。
class对象的生成方式如下:
(1)Class.forName(“类名字符串”)
(2)类名.class
(3)实例对象.getClass()
package Refect;class Demo{ //other code...}class hello{ public static void main(String[] args){ Classdemo1 = null; Classdemo2 = null; Classdemo3 = null; try{demo1 = Class.forName(“Reflect.Demo”); }cathc(Exception e){e.printStackTrace(); } demo2 = new Demo().getClass(); demo3 = Demo.class; } System.out.println(“类名称 ”+demo1.getName());//Reflect.Demo System.out.println(“类名称 ”+demo2.getName());//Reflect.Demo System.out.println(“类名称 ”+demo3.getName());//Reflect.Demo}
2.instanceof
告诉我们对象是不是某个特定类型的实例。
3.反射
RTTI(运行时类型信息)和反射之间真正的区别只在于,对于RTTI来说,编译器在编译时打开和检查.class文件,而对于反射机制来说,.class文件在编译时是不可获取的,所以是在运行时打开和检查.class文件。
反射主要是指程序可以访问、检测和修改它本身或行为的一种能力。
package Reflect;interface China{ public String name = “Rollen”; public int age = 20; public void sayChina(); public void sayHello(String name,int age);}class Person implements China{ private String sex; public Person(){}; public Person(String sex){this.sex = sex;} public getSex(){return sex;} public setSex(String sex){this.sex = sex;} @Override public void sayChina(){ System.out.println(“hello, china”); } @Override public void sayHello(String name,int age){ System.out.println(name+“ ”+age); }}class hello{ public static void main(String[] args){ Classdemo = null; try{demo = Class.forName(“Reflect.Person”) }catch(Exception e){e.printStackTrace();} //保存所有的接口 Classintes[] demo.getInterfaces(); for(int i=0;icons[]= demo.getConstructors(); for(int i=0;i
7.java实训总结 篇七 在这三个月里我学到的知识有Unix/linux 的基本操作命令、SQL、PL/SQL、Core Java、Linux操作系统的基本操作、MyEclipse 6.0.1 在Linux下的开发、MySql 5.0 数据库基本使用。基地对我最为感慨的是给了我一个网络的实验环境,在基地我完成了我以前想完成的网络实验。因为在学校是没有网络实验平台的,这样一来很多的实验都是没有能真真的验证。在这三个月里我学到比知识更重要的是对学习Java有了一个正确的方向,对Java语言有了新的认识。在这三个月内学习知识是现学现用模式,这点是非常值得借鉴的模式。这样有助于对学到的知识点理解、加深、巩固,这样模式会导致不怕你不会,就是怕你不做!只有踏实的跟着知识点做就会学的很好,这是三个月的学习心得我现在C#学得不错,然而Java才是刚刚起步。想放弃自己辛辛苦苦学习的C#去学习Java,但是还是非常的舍不得自己过去的努力。至于对我以后真真的选择Java还是C#?我对自己都没有好大的判断!我最终还是决定在找到工作之前学习以C#为主找到一个好点的工作,然后就顺着需求走吧!我自己也做过些小软件和网站,我从中感觉到做这些做着没有多大的意义,虽然有一定的挑战性,但是我觉得所谓的信息系统、网络软件,即使是大的项目只要把需求很好的搞定,好好的找些专家分析分析,架构师架构架构最终交给程序员+时间就形成一个所谓的大的项目完成。我是不甘心永远的做这样毫无创新的事情,我个人认为利用程序语言+移动设备开发可以带来更具有创新价值的东西。因为思想和想法是移动设备开发的灵魂,如果有一个好的想法+好的市场运作+好的技术最终产生的移动产品就会是人们所接受的产品,也将是一个成功的项目。
这次的实训给了我很大的收获但也给了我一个很深的感触,科技的力量不可小视,IT技术的飞速发展给我们的生活与工作带来了无比的快捷,原来都需要人工来出理的数据,单证,业务,现在都只需要在电脑操作界面上点动鼠标,片刻就能搞定。实训所用的软件中所含有的东西还是比较全面的,整个作业完成下来,确实学到不少东西。从最简单的开始,申请帐号,个人信息的填写,再到后来的商品信息的录入以及一些简单业务的操作,这些看似简单的流程,里面有许多细节问题是要求我们注意的,毕竟将来到真正实际操作过程中很少允许我们出差错的,一个错误的信息的公布出去给公司带来的损失是无法估计的,所以细心,细致是必需的。
8.Java回顾与总结 篇八 a)抽象性
b)封装性 c)继承性
d)多态性
二、基本数据类型和引用数据类型
a)基本数据类型
Java中共有八种基本数据类型(int short long byte float double char boolean)变量单元直接存放数据值
传递参数或赋值的方式是传值,即传递数据副本。通过运算符 “==”比较两个变量的值是否相等。
b)引用数据类型
八种基本数据类型之外的其它数据类型都是引用数据类型。 所有类(包括数组)都是引用数据类型 c)引用数据类型的特点
变量单元存放的是对象的引用
引用型数据在内存中分两处存放 一处存放对象(即数据)
另一处存放对象的引用(对象地址)
变量单元中存放对象的引用,即变量通过引用指向对象。传递参数或赋值的方式是传引用。
通过运算符 “==”比较两个变量是否引用同一个对象(即地址是否相等)。通过equals()方法比较两个对象是否相等。
Object提供的equals方法比较的是地址,此时equals与“==”效果一致。
Object的部分子类重写了equals方法,例如:String类的equals方法比较的是内容。
d)八种基本数据类型,分别对应了八种引用数据类型(Integer Short Long Byte Float Double Character Boolean),这八种类型被称为基本数据类型的包装(器)类,这实际上解决了基本类型的数据对象化的问题。
二、类的成员 a)成员变量 b)成员方法 c)成员内部类
三、局部元素(方法体内或语句块内)a)局部变量定义(包括方法的参数)b)语句 c)局部内部类
四、Java中的包
a)包相当于文件夹为了方便对类的管理,将类放在不同的包中 b)类的全限定名(全称)为包名+类名
c)如果未指定类所在包则该类在默认包中,这种类只能被默认包中的类所调用。
五、访问修饰符、static修饰符和final修饰符
a)访问修饰符(不可用于局部元素)
public 任何类都可以访问 可修饰类和类的成员(方法、属性、成员内部类) 默认
包范围的访问权限 可修饰类和类的成员(方法、属性、成员内部类) protected 包范围和子类
可修饰类的成员(方法、属性、成员内部类) private 本类范围内
可修饰类的成员(方法、属性和成员内部类)b)static修饰符(不可用于(外部)类和局部元素)
仅能用于类的成员(方法、属性、成员内部类),被修饰的成员属于类,而不属于具体的对象,但可以为该类和该类所有对象所共享,不会随对象的创建而创建,即static修饰的类成员仅有一个,不会为每个对象分配一个。
c)final修饰符(可用于类、类的成员和局部元素)
用于类(内部类、外部类)表示该类不可被继承
用于方法表示该方法不可被重写(覆盖)
用于变量(包括成员变量和局部变量)表示该变量的值不可被改变,即final修饰的变量可被看做常量
d)在语法上Java修饰符之间无顺序(包括abstract修饰符在内)
六、类的初始化、对象的初始化和构造方法
七、继承、初始化和构造方法、类型转换、重写(与重载的区别)
八、重载与重写
九、this关键字和supper关键字
十、内部类
a)成员内部类(一切用于成员的修饰符均可使用)
实例成员内部类 静态成员内部类 b)局部内部类
分类
内部类(仅可使用abstract和final关键字)
匿名内部类(必须实现接口或继承父类)
c)内部类与外部类的数据交互
实例成员内部类可以直接访问外部类的成员
静态成员内部类可以直接访问外部类的静态成员
局部内部类可以直接访问所在局部能够直接访问的外部类成员
局部内部类可以访问所在局部定义的final的局部变量
十一、多态 a)静态时多态-重载 b)运行时多态-重写
十二、抽象类和接口
十三、异常处理
十四、集合类 a)Collection接口
List接口
ArrayList LinkedList Vector
Set接口
HashSet TreeSet b)Map接口
HashMap 允许null值和null键 不同步
HashtableProperties
不允许null值和null键 同步
十五、dwr框架 json 等Ajax技术
十六、weblogic的使用
十七、Ioc与AOP
十八、orcale 游标 存储过程 触发器
十九、Jdbc和事务
a)JDBC驱动程序的类型
类型一:JDBC-ODBC Bridge(JDBC-ODBC桥)类型二:JDBC-Native API Bridge(本地API)类型三:JDBC-Middle Ware
(JDBC网络纯Java驱动器) 类型四:Pure JDBC Driver(本地协议纯Java驱动器)b)Jdbc事务
二十、流、序列化、上传下载 二
十一、线程同步 异步二十二、三大框架原理
a)struts是开发web应用的MVC的框架,能够规范和简化基于MVC的开发。
struts的核心部分是控制器,struts提供了一个控制器体系,包括核心控制器ActionServlet、业务控制器Action以及描述控制逻辑关系的配置文件(struts-config.xml)。其中ActionServlet是由struts框架直接提供的一个Servlet,在web.xml中配置即可;Action需要开发者编写,其作用是调用业务模型,并根据业务模型的执行结果返回转向视图的逻辑名;struts-config.xml文件的的内容由开发者编写,其作用是描述Action映射、控制流程。
struts对视图的支持主要体现在:struts提供的一套标签库和ActionForm组件(封装页面表单数据或提交参数)
另外,struts还提供了一套基于服务器端验证的机制。
b)struts2是开发web应用的MVC的框架,能够规范和简化基于MVC的开发。
struts2的核心部分是控制器,struts2提供了一个控制器体系,包括核心控制器(过滤器)、业务控制器Action以及描述控制逻辑关系的配置文件(struts.xml)。
其中核心控制器是由struts框架直接提供的一个过滤器,在web.xml中配置即可;Action需要开发者编写,其作用是调用业务模型,并根据业务模型的执行结果返回
转向视图的逻辑名;struts.xml文件的的内容由开发者编写,其作用是描述Action映射、控制流程。
struts对视图的支持主要体现在:struts提供的一套标签库 另外,struts还提供了一套基于服务器端验证的机制。
c)hibernate是基于对象关系映射模型(ORM)的持久化组件,通过它可以以面向对象的方式进行数据持久化操作,大大简化了对数据库的访问操作。
Hibernate可以通过hql语句(一种面向对象的查询语句)进行数据访问操作,hql书写灵活、功能强大,支持关联查询、分组、排序和子查询等等。此外,hibernate还提供了条件查询和命名查询,在hibernate中还可以使用原生sql。在hibernate3.0后增加了对存储过程的支持,具体是通过原生sql的命名查询进行的。
d)Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,其目的是解决企业应用开发的复杂性,能够使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,容纳和管理了很多对象。
关于Ioc:即控制反转,对象间的依赖关系不是由对象自身建立的,而是由外部容器给定。
关于AOP:即面向切面的编程,就是将系统中多个对象都在使用的某个通用功能提取出来与这些对象进行分离,即与这些对象之间降低了耦合性,而且可以就这个通用功能进行编程,通过容器将通用功能应用于系统中的多个对象。如:日志、声明式事务可以利用AOP实现。
特点:方便解耦,简化开发、AOP编程的支持、声明式事务的支持、方便程序的测试、方便集成各种优秀框架等等。总结起来,Spring有如下优点: 低侵入式设计,代码污染极低 独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
Spring的DI(依赖注入)机制降低了业务对象替换的复杂性
Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
二十三、权限和三大框架的分页 二
9.java考试总结 篇九 一单项选择 24分 每题3分
访问可见性:
1、两个包中的类,一个访问另一个(各种访问属性下的访问权限)
2、同一个包中的连个类可以相互访问
访问属性用 publicprivate protected没有修饰符的默认为friendly类型的,即包访问权限 对于非公有类,其他包中的类无法访问,但同一包中的类可以访问(有时包和文件是同一概念)
同一个包中的两个类必须在同一目录下?不一定。可以在不同目录下,因为classpath可以设置很多
父包和子包在使用上没有任何联系,子包使用父包中的类必须引入
强制类型转换:两个小括号一个都不能少
(父类)子类名.f()×其中f()是父类中的方法
((父类)子类名).f()√
子类转换成父类,不需要强制转化,父类转换成子类,需要强制转化
ArrayList 的使用可变长数组:
它的三个重要方法:
add
get
size
利用这三个函数可以实现很多,比如如何求数组的最后一个元素
可变对象和不可变对象finally用在不同地方的不同含义
不可变对象String例:myString=”old pal”;
myString.replaceAll(“old”,”new”);
System.out.println(myString)=”old pal”
字符串变量 StringBuffer
可变对象Java.awt.Point不是finally类型
myPoint.setLocation(1.0,1.0);→输出为1.0
数组的使用
基本类型的数组
Static int arr[]=new int[10];引用数组,所有数组都是引用
Array[0]=0?正确,arr为对象数组,不能直接这样赋值
数组声明Declare:Circle []circles;
创建数组对象: circles=new Circle[8];
↑创建了引用数组,数组中的每个元素都指向圆,但还没有创建真正的对象
创建真正的对象:
for(int i=0;i<8;i++)
{
circles[i]=new Circle(10+i*10,10,5);
}
override和overload
覆盖和重载
重载:在同一个类中不能出现函数名相同、参数列表相同、但返回值类型不同的函数; 若两个函数一个在父类中,一个在子类中,这两个函数也不能函数名一样、参数列表一样,但返回值类型不一样这种情况。
子类的覆盖方法不能抛出比父类多的异常
如:父类的方法不抛出异常,子类的方法就不能抛出异常
子类覆盖方法的可见性不能比父类窄
如:父类方法是公有,子类方法就只能是公有。
二程序填空题(研究程序)
要求实现一个图形用户界面的applet指定功能
要引入的包 import Java.awt;
………..event;(actionListen函数、actionPerform函数)
一些常用组件:LableTextFieldButton(看计数器代码)
组件上可能发出的事件及各自实现的监听器
以上组件常用的方法如getText()
字符串操作 如字符串长度
指定位置的字符 char At(0)
length()
indexOf()
applet
init()构造函数、初始化、只执行一次
paint()画字符串
start()需画时启动
repaint()当组件发生改变,repaint()调用paint()函数
drawstring画线、画点
Applet的动画实现
四个步骤:
在paint()中,依据一个特定的变量来画图
在一个线程run()中,改变这些变量的值,然后调用applet的repaint()函数 在init()中创建并启动线程,或对按钮作出响应等
例如一个字符从左到右走动,只改变横坐标
多线程实现的两种方式(其中实现runnable接口的特殊用途):
经常用的方法:sleep 静态方法
常用异常、try-catch
三写程序运行结果
第一个题比较字符串,变量常量都要求,参考实验报告上的题
用关系操作函数equals,compareTo
返回值类型方法名(父类对象)
运行时刻的类型识别,(调用的是子类还是父类方法)
函数调用能否改变原来变量的值
Java中变量的类型都是引用
动态绑定
运行时刻类型识别
参数调用
参数是数组、数组元素、对象引用时参数调用后参数值是否改变
内部类:一个类内部中有另一个类
要创建内部类对象,必须先创建外部类对象
四改错
(1)异常
try-catch-finally
抛出异常用throw
声明用throws
用户自定义的异常
(2)多线程
两种多线程机制的不同,处理一些问题时为什么用第二种?(实现runnable接口)
五编程
1、按要求编写类
重写toString()方法,描述调用此函数的对象的属性,编写测试程序main()方法,测试所写的方法是否正确
正确定义构造函数、定义属性、定义如何获取属性、定义方法修改属性
2、写一个类,同一处理多个类(多态)
使用随机函数
利用多态实现多种资源的统一管理
可能用到对象数组
父类自动调用子类的方法