java工作总结

java工作总结。

下面小编为您分享的是“java工作总结”,如果这篇文章能为你带来收获请把它收藏起来。工作中需要用到文档地方还是很多,不熟悉写作话题时,可以钻研一下范文模版,阅读范文能够提高我们的思想境界和生命境界。

java工作总结(篇1)

3. 在工作中需要不断的学习,通过项目不断提高自己的各项技能,做到脚踏实地,不怕多

做事、做小事,在点滴实践中完善提高自己。

4. 在工作中可能会遇到一些纠结的小问题,自己可能花很多时间也解决不了,如果多问问

同事可能很快就可以解决问题,所以,不用爱面子,多向同事请教,但也不是有问题就问。

5. 这半年工作时间里,发现和解决问题的能力,个人的技术都有了很大的提高,在项目中

遇到问题,不会再像刚开始不知道从何下手,不知道如何去定位一个问题,而现在都能较快的处理在工作中遇到的问题。

三、工作中主要的问题和不足:

1. 技术水平有待提高。自身的能力提高了,做事的效率也会高一些,不然,许多技术都是

现学现用。会浪费许多工作的时间,可能延迟项目进度。并且刚开始只考虑到如何实现,并未考虑到性能和一些设计层面上的问题。

2. 工作缺乏计划,未及时总结当天完成的任务及学到的新的知识。如果当天不制定计划,

可能会这件事做会,那件事做会,没有目的性,没有时间紧迫感,浪费许多时间,也不明确工作重点,造成事倍功半的效果。工作不及时总结,可能一段时间内不知道自己做了些什么,学到了些什么,自身能力到底提升了多少。

四、对今后工作的思考:

1. 制定详细的学习计划,系统学习一些专业的知识。工作更加细心、仔细,加强责任心,

不断提高自己分析问题和解决问题的能力。

2. 在数据库方面有所突破。

3. 多看源码,弄明白用到技术的原理,让自己软件开发的思想更全面一些。

4. 在工作中要及时向项目经理反应自己的工作情况,包括已完成的任务及工作中存在的问题,提高工作的主动性。

5. 注重团队合作,养成总结与反思的习惯,并有意识地提炼日常工作成果,整理成文档,

以便以后遇到类似问题能够很快解决问题。

相关精彩文章推荐:

1.android程序员试用期个人工作总结

2.程序员试用期转正工作总结

3.程序员个人工作总结自我评价

4.2016程序员个人工作总结

5.java程序员年终总结

6.最新程序员试用期工作总结

7.程序员试用期个人总结3篇

8.程序员年终工作总结范文

9.程序员试用期工作总结

10.2016软件开发程序员年终工作总结

java工作总结(篇2)

泛型总结篇:

1)泛型参数只能是类类型

例如:List// 报错

List// 正确

2)泛型的类型参数可以有多个!

例如:Listlist = new

ArrayList();

3)泛型的参数类型可以使用extends,习惯称“有界类型”,

例如:List,person为list的上界

4)泛型可以使用通配符类型!“?” 相当于“Object”类型,(注意不可逆) 例如:List //定义成这样可以添加Object类型到List里面去 List

; //定义成这样不可以添加String类型到List里面去 List; // 这样就可以互等了!这样还可以设定泛型的上限

5)带泛型的类,构造方法写法不变,其后不可以加泛型!

例如:class Student{

public Student(){} // 构造方法这样写就错了

}

6)List不是 List

的子类!,不可以把前者看成后者的子类,所以不

可以把前者的实例赋给后者

例如: ListSlist = new ArrayList();

Slist.add(new String(“abc”));

List

Olist = new ArrayList

();

Olist.add(“abc”);

Olist = Slist; // 报错!

7)带不同泛型参数的实例可以共享类的静态方法和静态变量,所以静态方法和静态变量

申明的时候不可以使用类型行参

例如:class Cup{

static T info; // 报错!

public static setInfo(T info){}; // 报错!

}

8)带不同泛型参数的类是共享一个字节码文件的!反编译过后泛型参数就被擦除了

例如:ListSlist = new ArrayList();

Slist.add(new String(“aaa”));

ListIlist = new ArrayList();

Ilist.add(new Integer(100));

System.out.println(Slist.getClass()==Ilist.getClass()); 结果为true;

9)当使用定义了泛型参数的接口 和 父类的时候!就不能在带参数了 例如:class Sub extends Father{} // 错误

10)

class T{}

public class typeTest extends T{}//报错

class T{}

public class typeTest extends T{} // 正确 可使用String等基本封装类型

class T{}

class Student{}

public class typeTest extends T{} // 这样也正确

11) 泛型方法 ,泛型方法的参数的作用域仅在本方法,要和方法带泛型区分开! Staticvoid test(ListS_list){} // 泛型参数要放在返回类型前

12)带有泛型的代码转换成没有泛型的代码由javac完成,虚拟机不处理这些事情!

这种技术叫做 “擦除”;

例如:class Food{

T size;

public Food(T size){} //注意构造方法不可以带泛型参数!

public void setSize(){ this.size = size; }

public T getSize(){ return this.size;}

}

public class test{

public static void main(String arg[]){

Fooda = new Food(6);

Ingeger as = a.getSize(); // 返回的是Integer的类型 Food b = a; //把a对象赋给Food变量;泛型参数类型会丢失 即擦除;

Number size1 = b.getSize(); // b只知道size的类型是Number // Integer in = b.getSize(); 这样是编译错误的!

} }

java工作总结(篇3)

这是一个典型的误区:觉得通过看人家的代码能够加快自己的学习。

这个方法对有经验的人来讲是对的,但是对于还在学习期间,没有经验的学员来讲,就是一个认识的误区了。

因为你也许能看懂代码的语法,但根本看不懂代码背后的含义,看不懂代码的设计,看不懂为什么要这么实现,看不懂代码所体现的思想,其实,看了跟没看没有多大区别。

事实上,Java界最不缺的就是代码了,那么多开源软件,小到一个工具,到企业级ERP都有开源的,而且很多都是大师级的作品,说实话比你参考的那些代码质量高多了,但是又有多少人能真正看明白呢,原因就在于达不到那个水平,看不懂代码背后所体现的设计和思想以及为什么要这么做,效果也就不好了。

当然不排除有这样的高人是能够完全能理解和掌握这些大师级作品的,但估计不会是刚开始学习Java开发的学生,所以Java根据多年的培训经验,友情提示:在初学阶段,看一千遍,听一千遍,都不如自己动手写一遍所达到的学习效果。

自己能写出来的功能才是你真正掌握的功能,而不是你看得代码或者是听老师讲的,就算讲过看过,但是自己做不出来,那都不算会。

(3):Java在课堂上除了带领学生去分析设计外,还会分析一些重点、难点功能的实现机制和原理,然后指导学生去实现。

5:真技术

Java在每个项目中,特别会抽取有难度的部分让学生们在老师指导下实现,专门啃硬骨头,那才能真正锻炼学生的开发能力。

比如:在做OA类的项目时,会重点去做工作流、公文收发、在线Office控制等;在做CRM类项目时:会重点去做销售自动化和市场块的业务;在做人力资源类项目的时候会重点去做人力跟踪和人力评测模型等......

Java在每个项目中,都会使用目前企业最新最流行的技术,按照最新的难度去要求,从而让学员能更符合企业的需要。

6:真经验

Java的项目都是企业最新的真实项目,经过开发训练,学员能够积累足够的真实的开发经验,以胜任企业的工作需要。

在进行项目分析时,还会全面讲解项目所要求的业务,让学员从业务和技术上都能充分积累。

7:真实力

作为就业培训,项目的好坏对培训质量的影响非常大,常常是决定性的作用。

这篇文章是关于在学习JAVA软件开发时练习项目的总结,简单总结为以下几点:事实上,不采用有源代码的教学性项目对Java的要求非常高。

试想一下,如果项目分发下去,老师带着分析后,学生都不会做会出现什么样的后果?这对Java的教学质量提出了极高的要求,如果教学质量达不到让学员独立开发的`水平,对依靠质量取胜和口碑发展的Java将是毁灭性的。

另外一个,由于是全真的项目,在开发的过程中,肯定会有很多的问题出现,这些都要老师去解决,由于不像教学项目那样预先做好,又需要老师能很快地解决各个问题,这对老师的真实开发水平有极高的要求,这可是需要真功夫的。

总结

总之,Java通过真实的项目,真实的开发环境和开发流程,指导学员去真正开发,让学员得到真正的锻炼,收获真正的开发能力。

java工作总结(篇4)

1. 什么是泛型?

泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。

因为 Map.get 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:

Map m = new HashMap();

m.put(“key”, “blarg”);

String s = (String) m.get(“key”);

要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。但是有可能某人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException。

理想情况下,您可能会得出这样一个观点,即 m 是一个 Map,它将 String 键映射到 String 值。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。

2. 泛型的好处

Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。这带来了很多好处:

类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

Java 程序中的一种流行技术是定义这样的集合,即它的元素或键是公共类型的,比如“String 列表”或者“String 到 String 的映射”。通过在变量声明中捕获这一附加的类型信息,泛型允许编译器实施这些附加的类型约束。类型错误现在就可以在编译时被捕获了,而不是在运行时当作 ClassCastException 展示出来。将类型检查从运行时挪到编译时有助于您更容易找到错误,并可提高程序的可靠性。

消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

尽管减少强制类型转换可以降低使用泛型类的代码的罗嗦程度,但是声明泛型变量会带来相应的罗嗦。比较下面两个代码例子。

该代码不使用泛型:

List li = new ArrayList();

li.put(new Integer(3));

Integer i = (Integer) li.get(0);

该代码使用泛型:

Listli = new ArrayList();

li.put(new Integer(3));

Integer i = li.get(0);

在简单的程序中使用一次泛型变量不会降低罗嗦程度。但是对于多次使用泛型变量的大型程序来说,则可以累积起来降低罗嗦程度。

潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。

由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

3. 泛型用法的例子

泛型的许多最佳例子都来自集合框架,因为泛型让您在保存在集合中的元素上指定类型约束。考虑这个使用 Map 类的例子,其中涉及一定程度的优化,即 Map.get() 返回的结果将确实是一个 String:

Map m = new HashMap();

m.put(“key”, “blarg”);

String s = (String) m.get(“key”);

如果有人已经在映射中放置了不是 String 的其他东西,上面的代码将会抛出 ClassCastException。泛型允许您表达这样的类型约束,即 m 是一个将 String 键映射到 String 值的 Map。这可以消除代码中的强制类型转换,同时获得一个附加的类型检查层,这个检查层可以防止有人将错误类型的键或值保存在集合中。

下面的代码示例展示了 JDK 5.0 中集合框架中的 Map 接口的定义的一部分:

public interface Map{

public void put(K key, V value);

public V get(K key);

}

注意该接口的两个附加物:

类型参数 K 和 V 在类级别的规格说明,表示在声明一个 Map 类型的变量时指定的类型的占位符。

在 get()、put() 和其他方法的方法签名中使用的 K 和 V。

为了赢得使用泛型的好处,必须在定义或实例化 Map 类型的变量时为 K 和 V 提供具体的值。以一种相对直观的方式做这件事:

Mapm = new HashMap();

m.put(“key”, “blarg”);

String s = m.get(“key”);

当使用 Map 的泛型化版本时,您不再需要将 Map.get() 的结果强制类型转换为 String,因为编译器知道 get() 将返回一个 String。

在使用泛型的版本中并没有减少键盘录入;实际上,比使用强制类型转换的版本需要做更多键入。使用泛型只是带来了附加的类型安全。因为编译器知道关于您将放进 Map 中的键和值的类型的更多信息,所以类型检查从执行时挪到了编译时,这会提高可靠性并加快开发速度。

向后兼容

在 Java 语言中引入泛型的一个重要目标就是维护向后兼容。尽管 JDK 5.0 的标准类库中的许多类,比如集合框架,都已经泛型化了,但是使用集合类(比如 HashMap 和 ArrayList)的现有代码将继续不加修改地在 JDK 5.0 中工作。当然,没有利用泛型的现有代码将不会赢得泛型的类型安全好处。

4. 泛型基础

4.1 类型参数

在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数。形式类型参数与实际类型参数之间的关系类似于形式方法参数与实际方法参数之间的关系,只是类型参数表示类型,而不是表示值。

泛型类中的类型参数几乎可以用于任何可以使用类名的地方。例如,下面是 java.util.Map 接口的定义的摘录:

public interface Map{

public void put(K key, V value);

public V get(K key);

}

Map 接口是由两个类型参数化的,这两个类型是键类型 K 和值类型 V。(不使用泛型)将会接受或返回 Object 的方法现在在它们的方法签名中使用 K 或 V,指示附加的类型约束位于 Map 的规格说明之下。

当声明或者实例化一个泛型的对象时,必须指定类型参数的值:

Mapmap = new Ha

shMap();

注意,在本例中,必须指定两次类型参数。一次是在声明变量 map 的类型时,另一次是在选择 HashMap 类的参数化以便可以实例化正确类型的一个实例时。

编译器在遇到一个 Map类型的变量时,知道 K 和 V 现在被绑定为 String,因此它知道在这样的变量上调用 Map.get() 将会得到 String 类型。

除了异常类型、枚举或匿名内部类以外,任何类都可以具有类型参数。

4.2 命名类型参数

推荐的命名约定是使用大写的单个字母名称作为类型参数。这与 C++ 约定有所不同(参阅 附录 A:与 C++ 模板的比较),并反映了大多数泛型类将具有少量类型参数的假定。对于常见的'泛型模式,推荐的名称是:

K —— 键,比如映射的键。

V —— 值,比如 List 和 Set 的内容,或者 Map 中的值。

E —— 异常类。

T —— 泛型。

4.3 泛型不是协变的

关于泛型的混淆,一个常见的来源就是假设它们像数组一样是协变的。其实它们不是协变的。List

不是 List的父类型。

如果 A 扩展 B,那么 A 的数组也是 B 的数组,并且完全可以在需要 B[] 的地方使用 A[]:

Integer[] intArray = new Integer[10];

Number[] numberArray = intArray;

上面的代码是有效的,因为一个 Integer 是一个 Number,因而一个 Integer 数组是 一个 Number 数组。但是对于泛型来说则不然。下面的代码是无效的:

ListintList = new ArrayList();

ListnumberList = intList; // invalid

最初,大多数 Java 程序员觉得这缺少协变很烦人,或者甚至是“坏的(broken)”,但是之所以这样有一个很好的原因。如果可以将 List赋给 List,下面的代码就会违背泛型应该提供的类型安全:

ListintList = new ArrayList();

ListnumberList = intList; // invalid

numberList.add(new Float(3.1415));

因为 intList 和 numberList 都是有别名的,如果允许的话,上面的代码就会让您将不是 Integers 的东西放进 intList 中。但是,正如下一屏将会看到的,您有一个更加灵活的方式来定义泛型。

4.4 类型通配符

假设您具有该方法:

void printList(List l) {

for (Object o : l)

System.out.println(o);

}

上面的代码在 JDK 5.0 上编译通过,但是如果试图用 List调用它,则会得到警告。出现警告是因为,您将泛型(List)传递给一个只承诺将它当作 List(所谓的原始类型)的方法,这将破坏使用泛型的类型安全。

如果试图编写像下面这样的方法,那么将会怎么样?

void printList(List

l) {

for (Object o : l)

System.out.println(o);

}

它仍然不会通过编译,因为一个 List不是 一个 List

(正如前一屏 泛型不是协变的 中所学的)。这才真正烦人 —— 现在您的泛型版本还没有普通的非泛型版本有用!

解决方案是使用类型通配符:

void printList(List l) {

for (Object o : l)

System.out.println(o);

}

上面代码中的问号是一个类型通配符。它读作“问号”。List 是任何泛型 List 的父类型,所以您完全可以将 List

、List或 List>传递给 printList()。

4.5 类型通配符的作用

类型通配符中引入了类型通配符,这让您可以声明 List 类型的变量。您可以对这样的 List 做什么呢?非常方便,可以从中检索元素,但是不能添加元素。原因不是编译器知道哪些方法修改列表哪些方法不修改列表,而是(大多数)变化的方法比不变化的方法需要更多的类型信息。下面的代码则工作得很好:

Listli = new ArrayList();

li.add(new Integer(42));

List lu = li;

System.out.println(lu.get(0));

为什么该代码能工作呢?对于 lu,编译器一点都不知道 List 的类型参数的值。但是编译器比较聪明,它可以做一些类型推理。在本例中,它推断未知的类型参数必须扩展 Object。(这个特定的推理没有太大的跳跃,但是编译器可以作出一些非常令人佩服的类型推理,后面就会看到(在底层细节一节中)。所以它让您调用 List.get() 并推断返回类型为 Object。 另一方面,下面的代码不能工作:

Listli = new ArrayList();

li.add(new Integer(42));

List lu = li;

lu.add(new Integer(43)); // error

在本例中,对于 lu,编译器不能对 List 的类型参数作出足够严密的推理,以确定将 Integer 传递给 List.add() 是类型安全的。所以编译器将不允许您这么做。

以免您仍然认为编译器知道哪些方法更改列表的内容哪些不更改列表内容,请注意下面的代码将能工作,因为它不依赖于编译器必须知道关于 lu 的类型参数的任何信息:

Listli = new ArrayList();

li.add(new Integer(42));

List lu = li;

lu.clear();

4.6 泛型方法

(在 类型参数 一节中)您已经看到,通过在类的定义中添加一个形式类型参数列表,可以将类泛型化。方法也可以被泛型化,不管它们定义在其中的类是不是泛型化的。

泛型类在多个方法签名间实施类型约束。在 List中,类型参数 V 出现在 get()、add()、contains() 等方法的签名中。当创建一个 Map类型的变量时,您就在方法之间宣称一个类型约束。您传递给 add() 的值将与 get() 返回的值的类型相同。

类似地,之所以声明泛型方法,一般是因为您想要在该方法的多个参数之间宣称一个类型约束。例如,下面代码中的 ifThenElse() 方法,根据它的第一个参数的布尔值,它将返回第二个或第三个参数:

publicT ifThenElse(boolean b, T first, T second) {

return b ? first : second;

}

注意,您可以调用 ifThenElse(),而不用显式地告诉编译器,您想要 T 的什么值。编译器不必显式地被告知 T 将具有什么值;它只知道这些值都必须相同。编译器允许您调用下面的代码,因为编译器可以使用类型推理来推断出,替代 T 的 String 满足所有的类型约束: String s = ifThenElse(b, “a”, “b”);

类似地,您可以调用:

Integer i = ifThenElse(b, new Integer(1), new Integer(2));

但是,编译器不允许下面的代码,因为没有类型会满足所需的类型约束:

String s = ifThenElse(b, “pi”, new Float(3.14));

为什么您选择使用泛型方法,而不是将类型 T 添加到类定义呢?(至少)有两种情况应该这样做:

当泛型方法是静态的时,这种情况下不能使用类类型参数。

当 T 上的类型约束对于方法真正是局部的时,这意味着没有在相同类的另一个方法签名中使用相同类型 T 的约束。通过使得泛型方法的类型参数对于方法是局部的,可以简化封闭类型的签名。

4.7 有限制类型

在前一屏 泛型方法 的例子中,类型参数 V 是无约束的或无限制的类型。有时在还没有完全指定类型参数时,需要对类型参数指定附加的约束。

考虑例子 Matrix 类,它使用类型参数 V,该参数由 Number 类来限制:

public class Matrix{ ... }

编译器允许您创建 Matrix或 Matrix类型的变量,但是如果您试图定义

java工作总结(篇5)

在这次项目之前,因为个人状态和心态的原因,从gui课程开始便基本处于神游的状态,状态上体现在上课精力不能集中犯困,心态上体现在明知道自己没学懂也没有主动去问休息时也没有去练习解决问题。

这样的情况导致项目的第一天我基本都在努力的想要看懂老师给的ui界面,因为我甚至不知道该在哪里插入我的代码!项目的过程中感觉就像一次开荒,遇到的每一个需求基本都要临时去学去请教才能解决,也是这样导致最后没能完成项目的所有需求,但我并没有遗憾或其他什么不安的情绪,因为我已经收获到了我想要的东西:

1.知识点的归纳整理与应用:在实际项目中将本来杂乱无章的知识点从应用的角度整理成自己能理解的体系,并去芜存精,优化提炼自己的知识点。

2:对java编程流程的理解:主要是理解到了三层架构的好处以及在编程架构上的必要性,因为个人有点马虎的原因,经常要改局部代码,如果没有使用三层架构,完全无法想象怎么从一堆代码中找出自己想要的!

3:javadoc的必要性:虽然这一次的项目中我没有做到给所有方法、类注释,但我自己写的方法基本都是先写注释,这样即能先整理一次写方法的思路,又能在后期通过清晰的注释使用或修改方法。

4:自我认识:这次项目开始的时候我曾乐观的认为大部分的功能在代码思路方面都差不多,后期不过是一个堆代码的过程,应该有机会在要求时完成项目。

然而实际写代码才发现纸上得来终觉浅,写的过程中一点很小的过失就能造成无尽的报错,一些自认为掌握了的知识点应用起来才发现漏洞百出,我粗浅掌握的知识点根本不能灵活应用。

5.纠错能力:写到上面才想起,纠错能力也是这次项目暴露的大问题,登陆功能时报的一大堆错就是老师也帮我找了好久才一一解决。

写代码中不报错是不可能的,因此纠错能力也是程序猿生存必不可少的。