当前位置:文档之家› java学习笔记

java学习笔记

java学习笔记
java学习笔记

JAVA学习笔记

1.Java中Map的使用

Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象。

Map的接口

Map---实现Map

Map.Entry--Map的内部类,描述Map中的按键/数值对。

SortedMap---扩展Map,使按键保持升序排列

关于怎么使用,一般是选择Map的子类,而不直接用Map类。

下面以HashMap为例。

public static void main(String args[])

{

HashMap hashmap = new HashMap();

hashmap.put("Item0", "Value0");

hashmap.put("Item1", "Value1");

hashmap.put("Item2", "Value2");

hashmap.put("Item3", "Value3");

Set set = hashmap.entrySet();

Iterator iterator = set.iterator();

while (iterator.hasNext()

{

Map.Entry mapentry = (Map.Entry) iterator.next();

System.out.println(mapentry.getkey() + "/" + mapentry.getValue());

}

}

注意,这里Map的按键必须是唯一的,比如说不能有两个按键都为null。

如果用过它,就会知道它的用处了。

又比如:

Map map = new HashMap();

map.put("Order", (Order) obj);

资料:

Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;单独的Map接口中只有HashMap。

java.util中的集合类包含Java 中某些最常用的类。最常用的集合类是List 和Map。List 的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形,其中的数据有顺序且可

以重复。而Set中数据无顺序且不可以重复。

Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将List 看作是具有数值键的Map。而实际上,除了List 和Map 都在定义java.util中外,两者并没有直接的联系。本文将着重介绍核心Java 发行套件中附带的Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用Map。

了解Map 接口和方法

Java 核心类中有很多预定义的Map 类。在介绍具体实现之前,我们先介绍一下Map 接口本身,以便了解所有实现的共同点。Map 接口定义了四种类型的方法,每个Map 都包含这些方法。下面,我们从两个普通的方法(表1)开始对这些方法加以介绍。

表1:覆盖的方法。我们将这Object 的这两个方法覆盖,以正确比较Map 对象的等价性。

equals(Object o) 比较指定对象与此Map 的等价性

hashCode() 返回此Map 的哈希码

Map 构建

Map 定义了几个用于插入和删除元素的变换方法(表2)。

表2:Map 更新方法:可以更改Map 内容。

clear() 从Map 中删除所有映射

remove(Object key) 从Map 中删除键和关联的值

put(Object key, Object value) 将指定值与指定键相关联

clear() 从Map 中删除所有映射

putAll(Map t) 将指定Map 中的所有映射复制到此map

尽管您可能注意到,纵然假设忽略构建一个需要传递给putAll() 的Map 的开销,使用putAll() 通常也并不比使用大量的put() 调用更有效率,但putAll() 的存在一点也不稀奇。这是因为,putAll() 除了迭代put() 所执行的将每个键值对添加到Map 的算法以外,还需要迭代所传递的Map 的元素。但应注意,putAll() 在添加所有元素之前可以正确调整Map 的大小,因此如果您未亲自调整Map 的大小(我们将对此进行简单介绍),则putAll() 可能比预期的更有效。

查看Map

迭代Map 中的元素不存在直接了当的方法。如果要查询某个Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该Map 的“视

图”。有三种可能的视图(参见表3)

所有键值对—参见entrySet()

所有键—参见keySet()

所有值—参见values()

前两个视图均返回Set 对象,第三个视图返回Collection 对象。就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代Collection 对象或Set 对象。要进行迭代,您必须获得一个Iterator 对象。因此,要迭代Map 的元素,必须进行比较烦琐的编码

Iterator keyValuePairs = aMap.entrySet().iterator();Iterator keys = aMap.keySet().iterator();Iterator values = aMap.values().iterator();

值得注意的是,这些对象(Set、Collection 和Iterator)实际上是基础Map 的视图,而不是包含所有元素的副本。这使它们的使用效率很高。另一方面,Collection 或Set 对象的toArray() 方法却创建包含Map 所有元素的数组对象,因此除了确实需要使用数组中元素的情形外,其效率并不高。

我运行了一个小测试(随附文件中的Test1),该测试使用了HashMap,并使用以下两种方法对迭代Map 元素的开销进行了比较:

intmapsize = aMap.size();Iterator keyValuePairs1 = aMap.entrySet().iterator();for (inti = 0; i

Profilers in Oracle JDeveloper

Oracle JDeveloper包含一个嵌入的监测器,它测量内存和执行时间,使您能够快速识别代码中的瓶颈。我曾使用Jdeveloper的执行监测器监测HashMap的containsKey() 和containsValue() 方法,并很快发现containsKey() 方法的速度比containsValue() 方法慢很多(实际上要慢几个数量级!)。(参见图1 和图2,以及随附文件中的Test2 类)。

Object value = entry.getValue(); ...}

此测试使用了两种测量方法:一种是测量迭代元素的时间,另一种测量使用toArray调用创建数组的其他开销。第一种方法(忽略创建数组所需的时间)表明,使用已从toArray调用中创建的数组迭代元素的速度要比使用Iterator 的速度大约快30%-60%。但如果将使用

toArray方法创建数组的开销包含在内,则使用Iterator 实际上要快10%-20%。因此,如果由于某种原因要创建一个集合元素的数组而非迭代这些元素,则应使用该数组迭代元素。但如果您不需要此中间数组,则不要创建它,而是使用Iterator 迭代元素。

表3:返回视图的Map 方法:使用这些方法返回的对象,您可以遍历Map 的元素,还可以删除Map 中的元素。

entrySet() 返回Map 中所包含映射的Set 视图。Set 中的每个元素都是一个Map.Entry 对象,可以使用getKey() 和getValue() 方法(还有一个setValue() 方法)访问后者的键元素和值元素

keySet() 返回Map 中所包含键的Set 视图。删除Set 中的元素还将删除Map 中相应的映射(键和值)

values() 返回map 中所包含值的Collection 视图。删除Collection 中的元素还将删除Map 中相应的映射(键和值)

访问元素

表4 中列出了Map 访问方法。Map 通常适合按键(而非按值)进行访问。Map 定义中没有规定这肯定是真的,但通常您可以期望这是真的。例如,您可以期望containsKey() 方法与get() 方法一样快。另一方面,containsValue() 方法很可能需要扫描Map 中的值,因此它的速度可能比较慢。

表4:Map 访问和测试方法:这些方法检索有关Map 内容的信息但不更改Map 内容。

get(Object key) 返回与指定键关联的值

containsKey(Object key) 如果Map 包含指定键的映射,则返回true

containsValue(Object value) 如果此Map 将一个或多个键映射到指定值,则返回true isEmpty() 如果Map 不包含键-值映射,则返回true

size() 返回Map 中的键-值映射的数目

对使用containsKey() 和containsValue() 遍历HashMap中所有元素所需时间的测试表明,containsValue() 所需的时间要长很多。实际上要长几个数量级!(参见图1 和图2,以及随附文件中的Test2)。因此,如果containsValue() 是应用程序中的性能问题,它将很快显现出来,并可以通过监测您的应用程序轻松地将其识别。这种情况下,我相信您能够想出一个有效的替换方法来实现containsValue() 提供的等效功能。但如果想不出办法,则一个可行的解决方案是再创建一个Map,并将第一个Map 的所有值作为键。这样,第一个Map 上的containsValue() 将成为第二个Map 上更有效的containsKey()。

2.

第一种:

Map map = new HashMap();

Iterator iter = map.entrySet().iterator();

while (iter.hasNext()) {

Map.Entry entry = (Map.Entry) iter.next();

Object key = entry.getKey();

Object val = entry.getValue();

}

效率高,以后一定要使用此种方式!

第二种:

Map map = new HashMap();

Iterator iter = map.keySet().iterator();

while (iter.hasNext()) {

Object key = iter.next();

Object val = map.get(key);

}

效率低,以后尽量少使用!

3.Java中for循环的几种写法

JDK 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。

在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的

时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其它循环常用得多)。

对于遍历数组,这个循环一般是采取这样的写法:

清单1:遍历数组的传统方式

/* 建立一个数组*/

int[] integers = {1,2,3,4};

/* 开始遍历*/

for (int j = 0; j

inti = integers[j];

System.out.println(i);

}

而对于遍历Collection对象,这个循环则通常是采用这样的形式:

清单2:遍历Collection对象的传统方式

/* 建立一个Collection */

String[] strings = {"A","B","C","D"};

Collection stringList = java.util.Arrays.asList(strings);

/* 开始遍历*/

for (Iterator itr = stringList.iterator(); itr.hasNext();) {

Object str = itr.next();

System.out.println(str);

}

而在Java语言的版本――JDK 1.5后,引入了另一种形式的for循环。借助这种形式的for循

环,现在可以用一种更简单地方式来进行遍历的工作。

1. 第二种for循环

不严格的说,Java的第二种for循环基本是这样的格式:

for (循环变量类型循环变量名称: 要被遍历的对象) 循环体

借助这种语法,遍历一个数组的操作就可以采取这样的写法:

清单3:遍历数组的简单方式

/* 建立一个数组*/

int[] integers = {1,2,3,4};

/* 开始遍历*/

for (inti : integers) {

System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */

}

这里所用的for循环,会在编译期间被看成是这样的形式:

清单4:遍历数组的简单方式的等价代码

/* 建立一个数组*/

int[] integers = {1,2,3,4};

/* 开始遍历*/

for (int变量名甲= 0; 变量名甲

System.out.println(integers[变量名甲]);/* 依次输出“1”、“2”、“3”、“4” */

}

这里的“变量名甲”是一个由编译器自动生成的不会造成混乱的名字。

而遍历一个Collection的操作也就可以采用这样的写法:

清单5:遍历Collection的简单方式

/* 建立一个Collection */

String[] strings = {"A","B","C","D"};

Collection list = java.util.Arrays.asList(strings);

/* 开始遍历*/

for (Object str : list) {

System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */

}

这里所用的for循环,则会在编译期间被看成是这样的形式:

清单6:遍历Collection的简单方式的等价代码

/* 建立一个Collection */

String[] strings = {"A","B","C","D"};

Collection stringList = java.util.Arrays.asList(strings);

/* 开始遍历*/

for (Iterator 变量名乙= list.iterator(); 变量名乙.hasNext();) {

Object str = 变量名乙.next();

System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */

}

这里的“变量名乙”也是一个由编译器自动生成的不会造成混乱的名字。

因为在编译期间,JDK 1.5的编译器会把这种形式的for循环,看成是对应的传统形式,所以不必担心出现性能方面的问题。

不用“foreach”和“in”的原因

Java采用“for”(而不是意义更明确的“foreach”)来引导这种一般被叫做“for-each循环”的循环,并使用“:”(而不是意义更明确的“in”)来分割循环变量名称和要被遍历的对象。这样作的主要原因,是为了避免因为引入新的关键字,造成兼容性方面的问题――在Java语言中,不允许把关键字当作变量名来使用,虽然使用“foreach”这名字的情况并不是非常多,

但是“in”却是一个经常用来表示输入流的名字(例如https://www.doczj.com/doc/d22717082.html,ng.System类里,就有一个名字叫做“in”的static属性,表示“标准输入流”)。

的确可以通过巧妙的设计语法,让关键字只在特定的上下文中有特殊的含义,来允许它们也作为普通的标识符来使用。不过这种会使语法变复杂的策略,并没有得到广泛的采用。

“for-each循环”的悠久历史

“for-each循环”并不是一个最近才出现的控制结构。在1979正式发布的Bourne shell(第一个成熟的UNIX命令解释器)里就已经包含了这种控制结构(循环用“for”和“in”来引导,循环体则用“do”和“done”来标识)。

2. 防止在循环体里修改循环变量

在默认情况下,编译器是允许在第二种for循环的循环体里,对循环变量重新赋值的。不过,

因为这种做法对循环体外面的情况丝毫没有影响,又容易造成理解代码时的困难,所以一般并不推荐使用。

Java提供了一种机制,可以在编译期间就把这样的操作封杀。具体的方法,是在循环变量类型前面加上一个“final”修饰符。这样一来,在循环体里对循环变量进行赋值,就会导致一

个编译错误。借助这一机制,就可以有效的杜绝有意或无意的进行“在循环体里修改循环变量”的操作了。

清单7:禁止重新赋值

int[] integers = {1,2,3,4};

for (final inti : integers) {

i = i / 2; /* 编译时出错*/

}

注意,这只是禁止了对循环变量进行重新赋值。给循环变量的属性赋值,或者调用能让循环变量的内容变化的方法,是不被禁止的。

清单8:允许修改状态

Random[] randoms = new Random[]{new Random(1),new Random(2),new Random(3)};

for (final Random r : randoms) {

r.setSeed(4);/* 将所有Random对象设成使用相同的种子*/

System.out.println(r.nextLong());/* 种子相同,第一个结果也相同*/

}

3. 类型相容问题

为了保证循环变量能在每次循环开始的时候,都被安全的赋值,J2SE 1.5对循环变量的类型有一定的限制。这些限制之下,循环变量的类型可以有这样一些选择:

循环变量的类型可以和要被遍历的对象中的元素的类型相同。例如,用int型的循环变量来遍历一个int[]型的数组,用Object型的循环变量来遍历一个Collection等。

清单9:使用和要被遍历的数组中的元素相同类型的循环变量

int[] integers = {1,2,3,4};

for (inti : integers) {

System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */

}

清单10:使用和要被遍历的Collection中的元素相同类型的循环变量

Collection< String> strings = new ArrayList< String>();

strings.add("A");

strings.add("B");

strings.add("C");

strings.add("D");

for (String str : integers) {

System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */

}

循环变量的类型可以是要被遍历的对象中的元素的上级类型。例如,用int型的循环变量来遍历一个byte[]型的数组,用Object型的循环变量来遍历一个Collection< String>(全部元素都是String的Collection)等。

清单11:使用要被遍历的对象中的元素的上级类型的循环变量

String[] strings = {"A","B","C","D"};

Collection< String> list = java.util.Arrays.asList(strings);

for (Object str : list) {

System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */

}

循环变量的类型可以和要被遍历的对象中的元素的类型之间存在能自动转换的关系。JDK 1.5中包含了“Autoboxing/Auto-Unboxing”的机制,允许编译器在必要的时候,自动在基本类型和它们的包裹类(Wrapper Classes)之间进行转换。因此,用Integer型的循环变量来遍历一个int[]型的数组,或者用byte型的循环变量来遍历一个Collection< Byte>,也是可行的。

清单12:使用能和要被遍历的对象中的元素的类型自动转换的类型的循环变量

int[] integers = {1,2,3,4};

for (Integer i : integers) {

System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */

}

注意,这里说的“元素的类型”,是由要被遍历的对象的决定的――如果它是一个Object[]

型的数组,那么元素的类型就是Object,即使里面装的都是String对象也是如此。

可以限定元素类型的Collection

截至到J2SE 1.4为止,始终无法在Java程序里限定Collection中所能保存的对象的类

型――它们全部被看成是最一般的Object对象。一直到JDK 1.5中,引入了“泛型(Generics)”机制之后,这个问题才得到了解决。现在可以用Collection< T>来表示全部元素类型都是T的Collection。

4.Java 数据类型位数

boolen,8位1个字节

int,32位,4个字节

float,32位4个字节

double,64位8个字节

char 16位,2个字节

byte 8位1个字节

short 16位2个字节

long 64位8个字节

《Java学习笔记 良葛格》 fuluA word版

《Java学习笔记良葛格》 fuluA word版 介 Ant 简 A Ant 的全名是 Another Neat Tool,是由 James Duncan Davidson 在觉得Make 工具无法满足他的 Java 构建(Build)需求下所编写出来的工具,目前由Apache Software Foundation 持续进行开发。根据官方网站上的 FAQ 中有关什么是 Apache Ant(What is Apache Ant)中的回答:

Ant is a Java-based build tool. In theory, it is kind of like Make, without Make’s wrinkles and with the full portability of pure Java code. 简单地说,Ant 就像是 Make 工具,一个为 Java 应用程序所量身定做的构建工具。 A.1 Ant 设置 对于没有使用过 Make 工具的初学者来说,想象一下如何管理源代码?如何处理 Classpath 的问题?如何将编译过后的文件指定至某个目录?如何 将.class 包装为 .jar 文件?…… 这一切都可以通过 Ant 来完成!您不必重复地使用 javac、copy、cd 和 java 等指令来达到这些目的,只要编写好一个以 XML 组织的构建文件(buildfile),然后下 ant 指令,上述所有的问题就可轻松地解决。 或许有人会说这些需求一些 IDE 也可以办到,这并不是正确的说法。Ant 并不取代 IDE,它增强了 IDE,也没有 IDE 可以取代 Ant,它们是互补的,不是相互取代的。 简单地归纳一下 Ant 可以自动完成的任务: 编译 Java 源代码 建立 jar、 war、zip 文件

Java课程设计万历

河北科技大学 课程设计报告学生姓名:学号: 专业班级: 课程名称: Java程序设计课程设计 学年学期: 2 014 —2 015 学年第 2 学期指导教师:刘伟 2 0 年月 课程设计成绩评定表

目录 1.课程设计目的................................................................................. .. (1) 2.需求分析................................................................................... (1) 3.总体设计................................................................................... (1) 4.详细设

计................................................................................... (1) 5.软件测试................................................................................... (10) 6.课程设计总结................................................................................... . (11)

一、课程设计目的 (1)熟练使用java语言编写程序,解决实际问题。 (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析 本程序的要求为: 1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 三、总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。 四、详细设计 1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 2.输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import

Java基础学习心得笔记

Java基础学习心得笔记 对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变。面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做的事情抽象成对象,告诉对象去做。所以要想学好java入门,必须知道类和对象的概念。 类是对生活中事物的抽象描述,比如人类,动物类,交通工具类;对象即是对类的具体实例化,比如张三是人,猫是动物,飞机是交通工具(对象-----类)。Java基础入门学习路线可以总结为四步走: 1.java开发环境的搭建; 2.java初级之基础语法学习(80%类似C语言); 3.java中级之面向对象编程学习(重点); 4.java中级之应用编程学习。 第一步:JDK软件开发包时java软件开发环境, 包括jre运行环境和jvm虚拟机,在oricle官网下载javaSE版本JDK包;配置好环境变量就可以使用了。 第二步:java初级语法学习, 1.基本数据类型整形,字符型,字节型,长整形,短整形,浮点型,双精度,布尔型;

2.运算符+,-,*,/,%等; 3.控制流(while,switch,if else); 4.数组的定义方式。 此阶段基本无难度,只要了解练习例题。 第三步:java面向对象学习, 1.类和对象; 2.java语言三大特性,封装、继承、多态; 3.一些关键字学习(static,final,abstract,extends)等。 这是重点,大家根据知识点一步步研究学习才是关键。 第四步:java应用编程, 例如:文件IO,集合(类似C语言数据结构),异常处理,线程,网络,JDBC数据库操作等,都是掌握面向对象以后,在查找不同的类使用类中不同的方法达到应用的效果,所以并不会很难。等基础语法掌握了就可以继续后面框架学习(java web方向,android学习),相信明确思路你会豁然开朗,更有学习动力。 以上没有具体的实例和知识点讲解,分享的只是完全没接触过java的初学者自学java的思路和学习的流程,应该把握的重点,希望大家有所帮助。 如果你想学好Java,找一家靠谱的培训机构,能让你的学习事半功倍。

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

java基础学习心得

java基础学习心得 目录 第一篇:java学习需要什么基础 第二篇:java 基础要点总结学习java必看 第三篇:java学习心得笔记 第四篇:java学习心得 第五篇:关于java学习的一点心得体会 正文 第一篇:java学习需要什么基础 java学习需要什么基础 随着java这种语言的广泛运用,越来越多从事开发的人员开始学习接触这门课程,那么,java学习需要什么基础?java刚刚入门应该接触哪些知识呢?java入门应该学习什么内容呢? 首先要说明的,java有三个大的方向(j2se,j2me,j2ee),走不同的方向可能学的技术和要花费的时间可能有所不同。我是搞web方向的(j2ee),我学java除了以前一些简单的c语言语法外,没有太多的编程基础,我以前一直认为编程要有很强的数学和英语功底,现在看来这也不是必需,只要有一定的逻辑思维能力和掌握一些常见的计算机词汇,还需要具备一定的自学能力,因为软件开发工作是需要不断学习的。

其次,我想说下我的学习过程,我在网上下载了java教学视频,将java基础从头到尾看了一遍,将上面的代码基本上跟着敲了一遍,然后我把java基础的书看了一遍,一本书看完包括上面的习题大概做一遍差不多一个月。这时你对java的语法和基本知识应该都有比较充分的认识和了解了。 然后,再做一些小项目,跟着视频上的步骤做,最好能自己独立再写写,能写多少是多少。一般网上比较新的免费的项目库很不好找,因为项目库是需要实时更新以保证适合市场需要的,而它的升级和更新是需要钱的,所以去报一个培训中心利用它强大的项目库进行实战操作是个很好的选择。 操作一段时间之后,你对java已经有了一定的感觉,就要开始选择你的发展方向了。我选择了j2ee,如果你也是想走这条路,你可以接着看关于j2ee的视频,先是html+js+css,然后jsp+serverlet,再看struts+spring+hibernate等一些框架。同时可以看一些大的培训机构的关于设计模式的视频,最好是it牛人录制的,当然数据库也得学下,然后加上做项目的经验累积,半年就差不多可以出去工作了。 如果你做其他方向的话我不是很了解。再说下我个人的看法, j2me和j2se好像前景没j2ee好,不过我有同事是做android平台开发的,这个不需要j2ee的知识,你可以去买本android的看看,这个方向貌似很有前途,你应该也常听说android平台的手机,如果走这方向可

java课程设计实验报告

一实验目的 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java 程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。 二、实验要求 (1)问题描述准确、规范; (2)程序结构合理,调试数据准确、有代表性; (3)界面布局整齐,人机交互方便; (4)输出结果正确; (5)正确撰写实验报告。 三、设计内容 1、计算器 计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。 2、文本编辑器 可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。

四.实验步骤 (1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 (2)按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。 (3)根据实验结果,写出实验报告。 五. 源代码及运行结果 1.计算器源代码 import .*; import .*; import .*; public class jisuanqi extends WindowAdapter { , "=", "+","n!" ,"关闭" }; static double a, sum=1; static String s, str ;rame(); } public void frame() { etBackground; txt = new TextField(""); (false);ddActionListener(new buttonlistener());ddActionListener(new close()); (this); (new BorderLayout());.计算器运行界面(1)计算器主界面

黑马毕向东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后,会在当前目录下查找要运行的类文件; 如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。 一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。 4,javac命令和java命令做什么事情呢? 要知道java是分两部分的:一个是编译,一个是运行。 javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java 文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。 java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行. 一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数. ----------------------------------------------------------------------------------------------

JAVA框架面试题汇总

1.SpringMVC Framework的理解: 1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成 2、不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3、可以任意使用各种视图技术,而不仅仅局限于JSP 4、支持各种请求资源的映射策略 5、它应是易于扩展的 2.简单的谈一下SpringMVC的工作流程? 流程? 1、用户发送请求至前端控制器DispatcherServlet? 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。? 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。? 4、DispatcherServlet调用HandlerAdapter处理器适配器? 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。? 6、Controller执行完成返回ModelAndView? 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet? 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器? 9、ViewReslover解析后返回具体View? 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。? 11、DispatcherServlet响应用户 3.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入: . .CharacterEncodingFilter . .???? .????????encoding .?????? utf-8

Java学习笔记

Java 程序分类 Java Application:以main()方法作为程序入口,由Java解释器加载执行。 Java Applet:没有main()方法作为程序入口,由浏览器或Appletviewer加载执行。 注释 一行中‘//’后的内容为注释; ‘/*’和‘*/’中的内容是注释; ‘/**’和‘*/’中的内容是注释。 -javac HelloWorld.java 源文件名为HelloWorld.java,由javac编译器编译源程序,产生字节码文件(.class文件)。java HelloWorld由java解释器解释执行。 命名 如果.java 文件包含一个public 类,它必需按该类名命名。Java语言中单词拼写严格区分大小写; 类个数 一个源文件中最多只能有一个public 类。其它类的个数不限。 结构 package 语句//0或1个,必须放在文件开始 import语句//0或多个,必须放在所有类定义之前 public classDefinition //0或1个,文件名必须与该类的类名完全相同classDefinition //0或多个 interfaceDefinition //0或多个

Java开发工具集JDK----Java Development Kits Java编译器 Java运行时解释器 Java应用程序编程接口 Java文档化化工具 其它工具及资源 环境变量 Path ----外部命令搜索路径; CLASSPATH ----类资源位置搜索路径; https://www.doczj.com/doc/d22717082.html,ng----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。 java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 java.applet----包含applet运行所需的一些类。 https://www.doczj.com/doc/d22717082.html,----包含执行与网络相关的操作的类。 java.io----包含能提供多种输入/输出功能的类。 java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。 JDK中提供了一个文档自动生成工具javadoc,在自定义类中public的成员前以/**…*/形式加入的注释内容均可被自动提取到生成的说明文档中。 用法:somepath\javadoc source.java Java分隔符组成 分号--“;”、花括号--“{}”、空格--“”

java基础笔记

1什么是变量? 答:是指代在内存中开辟的储存空间,用于存放运算过程中需要用到的数据。 一个类中不能有2个public以为有pulic要和类名保持一致,有2个的话就不知道是和谁保持一致了,可以用很多类。 2变量的声明 答:当需要使用一个变量的时候,必须要对该变量就行声明,变量的声明包含2点,1是变量的基本数 据类型,2是变量名比如int a ;int是数据类型a是变量名,可以声明多个变量,比如int a,b,c;等 3,变量的初始化 答:有2种初始化方法, 1是在变量声明时初始化,变量类型变量名=初始值,比如int a=0; 2是先声明变量,然后再初始化给变量赋值,,比如int a;a=0; 3.1可以对变量中的值进行存取,操作,变量使用之前,要使用与其变量符合的数据类型。 3.2基本数据类型,8种 1整数类行:byte,short int(常用),long(常用)2浮点类型:float,double(常用)3,boolean 4 char 类型名称字节空间使用场景 ------------------------------------------------------------------------------------------------------------ byte 丨1字节(8位)丨储存字节数据(较少用) --------------------------------------------------------------------------------------------------------------- short 丨2字节(16位)丨兼容性考虑(很少用) ------------------------------------------------------------------------------------------------------------ int 丨4字节(32位)丨存储普通整数(常用) -------------------------------------------------------------------------------------------------------------- long 丨8字节(64位)丨存储长整数(常用) ------------------------------------------------------------------------------------------------------------- float 丨4字节(32位)丨存储浮动数(不常用) ------------------------------------------------------------------------------------------------------------ double 丨8字节(64位)丨存储双精浮点数(常用) ----------------------------------------------------------------------------------------------------------- boolean 丨1字节(8位)丨存储逻辑变量(true,fales)(常用) --------------------------------------------------------------------------------------------------------------- char 丨2字节(16位)丨存储一个字符(常用) ---------------------------------------------------------------------------------------------------------------

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

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后,会在当前目录下查找要运行的类文件; 如果指定了classpath,那么会在指定的目录下查找要运行的类文件。 还会在当前目录找吗?两种情况: 1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目

JAVA课程设计 时钟

辽宁工业大学 JA V A程序设计课程设计(论文)题目:时钟 院(系):软件学院 专业班级:软件技术班 学号: 学生姓名: 指导教师:丁宝柱 教师职称:助教 起止时间: 2009.12.1至2009.12.16

程序设计专题(报告)任务及评语

目录 第1章课程设计的目的与要求 (1) 1.1 课程设计目的 (1) 1.2 课程设计的实验环境 (1) 1.3 课程设计的预备知识 (1) 1.4 课程设计要求 (1) 第2章课程设计内容 (2) 2.1课程设计主要内容 (2) 2.2概要设计 (2) 2.2.1自定义类说明 (2) 2.3详细设计 (3) 2.4测试分析 (16) 2.4.1程序运行情况 (16) 2.4.2程序异常处理 (16) 第3章课程设计总结 (17) 参考资料18

第1章课程设计的目的与要求 1.1 课程设计目的 《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 1.2 课程设计的实验环境 硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。 1.3 课程设计的预备知识 熟悉JAVA语言及ECLIPSE开发工具。 1.4 课程设计要求 按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

Java笔记汇总

2010.3.11.Java笔记 1、定义一个年份判定这个年是否是闰年: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; publicclass near { publicstaticvoid main(String args[])throws IOException{ int year; String str; BufferedReader buf; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Input the year:"); str=buf.readLine(); year=Integer.parseInt(str); if(year%4==0&&year%100!=0||year%400==0) System.out.println("year"+year+"is a leap year."); else System.out.println("year"+year+"is not a leap year."); } } 2、求出1~100之间的奇数: publicclass qishu { publicstaticvoid main(String args[]){ int i,j; for(i=1;i<=100;i++){ if(i%2!=0){ System.out.print(i+" "); } } } } 3、一段刚才长2000米每天截取一半多少天后长度短于5米publicclass day { publicstaticvoid main(String args[]){ int i ,j=0; for(i=2000;i>0;i--){ if(i/2<5) j++;} System.out.print(j+" "); } } 4、求125的所有因子: publicclass yinzi { publicstaticvoid main(String args[]){ int i; for(i=1;i<=125;i++){ if(125%i==0){

百一测评——Java经典面试题 带答案

职业技能题库&在线云笔试平台https://www.doczj.com/doc/d22717082.html, 试卷名称:Java经典面试题带答案 试卷描述:java笔试题目、招聘笔试、微信考试、在线考试 试卷链接:https://www.doczj.com/doc/d22717082.html,/store/open/paperInfo/41651 试卷限时:50分 一.单项选择题 每题分值:2.5分 是否题目乱序:是 是否选项乱序:是 是否可回溯:是 难度:中 1.[单选]Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.[单选]下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确

职业技能题库&在线云笔试平台https://www.doczj.com/doc/d22717082.html, 答案:B 3.[单选]下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.[单选]提供Java存取数据库能力的包是() A.java.sql B.java.awt C.https://www.doczj.com/doc/d22717082.html,ng D.java.swing 答案:A 5.[单选]下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.[单选]执行如下程序代码 a=0;c=0;

职业技能题库&在线云笔试平台https://www.doczj.com/doc/d22717082.html, do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环 答案:C 7.[单选]下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.[单选]下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象

Java学习笔记(必看经典)_New - 共33页

JAVA -------- EVERYTHING IS OBJECT OOP class Student{

New null public int/void addNumber( ) throw Excepion {} public int addNumber(int a,int b){ } int a,int b public Student s=new Student() Student Student “Student()” () Student s Student public student(string name,int a){ } public student(int a,string name){ }

static void changename(student stu){stu.setName “LUCY”} overloading overriding JAVA overriding overloading Overloading overloading overloading overloading public void teach(){}; public void teach(int a){}; public void teach(String a){} Overloading Byte—short—float—int—long—double this student(){}; student(string n){ this();// student() } student(int a) this(int a) this this This Public void printNum(){ Int number=40 System.out.println(this.number); } This.number this.number (this) number

相关主题
文本预览
相关文档 最新文档