- 浏览: 342903 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zy_mensheng:
请问一下 怎么 js没有解析啊 还是钟表图..
调用BIEE提供的web service -
安铁辉:
师兄你很久没更新博客了
Information Dashboard Design读书笔记 -
mojunbin:
很清晰的文章
秒杀相关知识以及技术 -
yanchangjun8102:
楼主你好,我也最近在研究biee的webservice这块,按 ...
调用BIEE提供的web service -
sacredon:
不错,楼主我是看着你的这篇文章写代码调用的BIEE的Web ...
调用BIEE提供的web service
读取properties 文件时出现乱码
如果properties文件里含有中文时不可以用ResourceBundle度取,需先对properties文件进行编码转换
在JDK中提供了native2ascii命令 他能够实现字符编码的转换。
假设message.properties 文件在目录WEB-INF/resource目录下
在命令行模式下进入WEB-INF/resource目录,然后执行如下命令
native2ascii –encoding utf-8 message.properties message_zh_CN.properties
参数-encoding表示要转换成的编码格式
执行以上命令以后将生成message_zh_CN.properties文件 现在就可以用ResourceBundle类进行读取了
mutual exclusion---互斥
Hashtable和HashMap都实现了Map接口。
Hashtable继承Dictionary类。
Properties prop = System.getProperties(); Enumeration en = prop.propertyNames(); while(en.hasMoreElements()){ String key = (String)en.nextElement(); System.out.println(key+"="+prop.getProperty(key)); }
字符串
字符串是常量,他们的值在创建之后就不可以改变了。
String s = "abc"; String b = s; s = s+"d"; System.out.println(b);//abc System.out.println(s);//abcd
String h = new String("test"); String h1 = new String("test");
以上两句代码产生了三个 "test"字符串对象。两个位于堆里,一个位于字符串常量池中。
问题:
public static void main(String[] args) { String s = "abc"; change(s); System.out.println(s); s = test(s); System.out.println(s); } static void change(String str) { str = "abcdefg"; } static String test(String str) { str = "abcdefg"; return str; }
打印输出:
abc
abcdefg
分析:
change方法:
切记,java中是值传递。在change方法中,str是在栈中的一个变量,它一开始和s指向的是同一
个string,即“abc”,在change方法中,str又指向了新的对象,这根本不关s的事。所以s指向的
仍然是“abc”
test方法:
s重新指向了字符串常量池中的另一个字符串,所以打印出“abcdefg”
String s = "abc"; s = s+'d'; System.out.println(s);//输出abcd
分析:string可以直接和char做+运算
。今天才知道。
正则表达式不能嵌套表达
摘自jdk doc
public final class Patternextends Objectimplements Serializable正则表达式的编译表示形式。 指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");//等效于上面的三个语句,尽管对于重复的匹配而言
它效率不高,因为它不允许重用已编译的模式
。
此类的实例是不可变的,可供多个并发线程安全使用
。Matcher 类的实例用于此目的则不安全。
习题:
从键盘输入字符串,回车后按单词反转
Scanner sc = new Scanner(System.in); LinkedList<String> list = new LinkedList<String>(); String str = sc.nextLine(); String[] arr = str.split(" "); for(int i=arr.length-1;i>=0;i--) list.add(arr[i]); for(String s : list){ System.out.print(s); System.out.print(" ");
给你一组字符串:iu2ier343dfjsd,让你编程输出里面的数字。
Scanner sc = new Scanner(System.in); String str = sc.next(); //System.out.println(str); Pattern p = Pattern.compile("(\\d)"); Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.group(0)); }
列出目录和文件:
public class PrintFiles { public static void main(String[] args) { int level = 0; print(new File("D:\\ipMsg"), 0); } public static void print(File f, int level) { if (f.isDirectory() == false) { printSpace(level); System.out.println("[文件]:" + f.getAbsolutePath()); } else { File[] farr = f.listFiles(); printSpace(level); System.out.println("[文件夹]:" + f.getAbsolutePath()); for (File file : farr) { print(file, level + 1); } } } public static void printSpace(int count) { for (int i = 0; i < count; i++) { System.out.print("--"); } } }
HashSet探究
HashSet内部使用到了HashMap。
当你调用HashSet的add方法将对象添加到集合中去时,根据add的返回值判断添加是否成功。
实则是以下操作:
public boolean add(E e) { return map.put(e, PRESENT)==null; //Present是一个私有静态不可变的成员变量,private static final Object PRESENT = new Object(); }
继续查看,map的put方法是如何实现的:
public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key.hashCode()); int i = indexFor(hash, table.length); for (Entry<K,V> e = table[i]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { V oldValue = e.value; e.value = value; e.recordAccess(this); return oldValue; } } modCount++; addEntry(hash, key, value, i); return null; }
分析:
hashMap的put方法,与集合中的Entry一一比较。先判读对象的hashcode是否相等,相等后再调用equals。
static int hash(int h) { h ^= (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4); }
上面这段代码不知用意何在,对于移位一直都感到头疼啊。有人研究出来的通知声哈。
然后后面的indexFor方法也很抽象呢。如何能保证取得索引的唯一性?
补充:
HashMap 是以数组的结构,用哈希函数值跟数组的长度做位与运算,获取对应数组的索引。浏览key值时,不保证顺序。
LinkedHashMap 是以双向列表的结构做实现的,浏览key值时候,可以保证顺序。
LinkedHashMap继承HashMap ,不同的是数据存储结构。
TreeMap 是以二叉树实现的Map接口。Map中的key值按照从小到大的顺序排列。key要实现comparable
同学问我一个问题,做个笔记哈:
Set<Object> set = new TreeSet<Object>(); set.add("dsaf"); set.add(“22”); set.add(3); System.out.println(set.toString());
分析:
编译没有问题,但是在执行到set.add(3);就出现了类型转换异常,因为TreeSet在加入对象时,会将该对象和已有对象进行比较,从而找 到该对象应该存放的位置。加入到该TreeSet中的对象应该实现Comparable接口的compareTo方法,会将新添加的对象和已有元素一一进 行比较,但是Integer的compareTo方法传进来的参数类型是Integer,但已有的却是String类型的实例,所以将string转换为 Integer当然出现了问题。
I/O流概述
概念:
1,为进行数据的输入/输出操作,java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表
述为“流”(stream)
2,Stream是从起源(source)到接收(sink)的有序数据
3,java.io包中定义了多个流类型(类和抽象类)来实现输入/输出功能
4,两种基本的流:输入流和输出流
--输入流:只能从中读取字节数据,而不能向其写出数据
--输出流:只能向其写入字节数据,而不能从中读取数据
5,按照流所处理的数据类型划分,可以分为:
字节流:用于处理字节数据
字符流:用于处理Unicode字符数据
节点流和处理流
处理流:实现对一个已存在的流的连接和封装
,通过所封装的流的功能调用实现数据读写功能的流。处理流也被称为高级流。
flush(),立即刷新输出缓冲区
FileOutputStream的write(int b)的写入效果:
该方法是native的,无法看到源代码,应该是将int的低字节或高字节写到了文件中。经测试发现写入的是int的低8位。如128写入后十六进制表示为80,255写入后为FF,256写入后为00传进去的是int,但是写入的确是个字节,不过和read()方法倒是对称,读出的是个字节,但返回的却是int
特殊的文件输出流
RandomAccessFile是一种特殊的文件流,可以用它在文件的任何地方查找或者插入数据
同时实现了DataInput和DataOutput接口,所以可以用它来读写文件
压缩文件可以直接调用winrar来压缩,也可以利用已有的api来实现压缩。
发表评论
-
【转】hashCode()的作用
2011-05-14 13:41 855http://blog.csdn.net/badboy_blu ... -
AOP
2011-02-24 19:47 1541AOP有三种织入切面的方法:其一是编译期织入,这要求使用特殊的 ... -
code hot swap
2010-08-04 22:54 1301关于code hot swap的说明(即更新部署目录的clas ... -
java基础复习(18)-对象序列化
2009-08-03 01:35 22012009年8月3日 星期一 00时03分对象序列化的深入探究 ... -
java基础复习(16)-字符串数组交集,并集和差集
2009-07-29 15:47 6823求两个字符串数组的交集,并集和差集的程序代码(有其他或更好的方 ... -
java基础复习(15)-多态问题强化
2009-07-27 13:34 1176多态题目: 题一: ... -
java基础复习(14)--java并发
2009-07-26 20:05 1824并发: 冒泡排序: SimpleThreadEx ... -
java基础复习(13)--java泛型
2009-07-26 19:53 1524泛型: public static <T> ... -
java基础复习(12)--类型转换,异常概念
2009-07-26 19:43 1563一个对象只能有一种确 ... -
java基础复习(11)--final关键字和抽象类
2009-07-26 19:40 1170final 关键字 final--用于类,方法,变量前 f ... -
java基础复习(10)--链表实现,单例模式
2009-07-26 19:37 1226类的构造器也可以实现 ... -
java基础复习(9)--继承与多态的理解
2009-07-26 19:34 1009继承与多态 ... -
java基础复习(8)--数组
2009-07-26 19:12 1524java中有包名的类无法引 ... -
java基础复习(7)--值传递和交换变量值(异或)
2009-07-26 19:10 2415对于java中的方法参数传 ... -
java基础复习(6)
2009-07-26 16:18 1029充:java中有包名的类无法引用默认包中的类。但是1.2或1. ... -
java基础复习(5)--考试习题
2009-07-26 16:00 1252今天做练习题,一共有3 ... -
java基础复习(4)
2009-07-26 15:55 998极限编程 测试先行 ... -
java基础复习(3)
2009-07-26 15:51 1001int型整数,a>>b,系 ... -
java基础复习(2)
2009-07-26 15:45 1157java中的TRUE和false不可以 ... -
java基础复习(1)
2009-07-26 15:43 1078java虚拟机对java字节码进行优化(针对特定的平台) j ...
相关推荐
Java 复习资料中的思考题涵盖了Java的基础知识,包括JDK的含义、Java跨平台技术、垃圾收集机制、J2SE、J2ME、J2EE的区别、包的作用、J2SE类库的主要包以及Java编程规范和程序结构。下面将详细解答这些知识点。 1. ...
6. **字符串处理**:String类是Java中的核心类,用于处理字符串。了解其不可变性、常用方法(如length()、charAt()、substring()、indexOf()等)以及StringBuilder或StringBuffer类的使用。 7. **异常处理**:Java...
10. **输入输出流**:Java的I/O流系统广泛应用于文件读写、网络通信。InputStream和OutputStream是所有字节流的基类,而Reader和Writer则是所有字符流的基类。 11. **集合框架**:ArrayList、LinkedList、HashSet、...
- **字符串**:是由零个或多个字符组成的有序集合。 - **子字符串**:是原字符串中的连续字符序列。 #### 2.2 .substring() 方法 `.substring()` 是 Java 和其他许多编程语言中提供的内置方法之一,用于从字符串中...
6. **字符串处理**:String类在Java中扮演重要角色,提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等。 7. **多线程**:Java内置了对多线程的支持,通过Thread类或实现Runnable接口可以创建...
7. **第七章:字符串与输入输出** String类的常用方法,以及I/O流的概念,包括文件读写、网络流和数据流。 8. **第八章:多线程** 理解并发编程的基本原理,线程的创建与同步,包括synchronized关键字、Thread类...
在“硅谷java基础每日复习eDiary”这个资源中,我们涵盖了Java编程语言的基础和高级概念,这将有助于深入理解并提升Java编程技能。以下是基于描述中提到的两个文件——"Java基础每日复习笔记-JavaSE基础阶段.edf"和...
1. `JAVA复习题201004.xls`:这可能是一个2010年4月的Java复习题目集合,可能包含了选择题、填空题、简答题等多种题型,用于帮助考生复习Java的基础知识和进阶概念,如类与对象、继承、多态、异常处理、集合框架、IO...
Java中的字符串由String类表示,String对象不可变,可以使用多种方法进行操作,如获取长度、比较字符串等。 基本数据类型还可以通过其对应的包装类(如Integer、Double等)进行封装,实现与String之间的转换。控制...
- **Java NIO**(New I/O):提供了一种基于缓冲区和通道的新I/O操作方式,支持非阻塞I/O操作,提高了I/O操作的效率。 #### 八、字符流与字节流的区别 - **字符流**:适用于处理文本数据,一次处理一个字符。 - **...
4. **IO与NIO**:Java的输入输出流体系是处理数据传输的基础,而NIO(非阻塞I/O)在高性能网络编程中尤为重要。考生需熟悉流的概念、缓冲区操作、文件读写、套接字编程等。 5. **多线程与并发编程**:Java提供了...
本篇文章将深入探讨Java复习中关于J2SE的基础知识,特别是字符串处理相关的概念。 字符串在Java中扮演着至关重要的角色。Java提供了三种主要的字符串类:String、StringBuffer和StringBuilder。理解它们之间的区别...
本文档为《JAVA复习题目.pdf》,主要内容是关于Java编程语言的复习题目,旨在帮助学习者巩固和加深对Java基础知识的理解。文档中涉及了Java的关键概念,包括Java的基本语法、面向对象的特性、Java的Applet小程序以及...
Java API提供了大量预先定义好的类和方法,涵盖了数学运算、字符串处理、日期时间、网络通信等多个方面。 12. **Java开发工具** - **JDK(Java Development Kit)**:包含了Java编译器、JVM和开发所需的工具。 -...
- `toString()`: 返回对象的字符串表示形式。 - `wait()`, `notify()`, `notifyAll()`: 支持多线程同步控制。 - `clone()`: 实现对象的浅拷贝。 - `getClass()`: 获取对象所属的类。 #### 二十二、Java中的...
### Java编程基础知识点详解 #### 第一章 Java 语言概述 **1. Java 平台的工作机制** Java 是一种能够跨平台运行的语言。其工作机制基于“编写一次,到处运行”的理念。具体而言,Java 源代码文件(.java 文件)...
《Java语言程序设计第十版》是一本广泛使用的Java编程教材,涵盖了从基础语法到高级特性的全面内容。这本书的复习题全答案提供了学习者检验自我理解、深化编程技能的宝贵资源。以下是对每个章节主要知识点的详细概述...
5. **字符串与字符串处理**:String类在Java中扮演着重要角色,复习题可能包含字符串的创建、比较、拼接、查找、替换等操作。同时,StringBuffer或StringBuilder的使用也是常见的考点。 6. **输入/输出流**:Java的...
根据给定的文件信息,我们可以总结出一系列与Java编程语言相关的知识点,这些知识点涵盖了Java的基础概念、语法特性、数据类型、运算符、流操作、事件处理、容器组件、类的声明以及字符串操作等方面。 1. **Java...
2. **填空题**:填空题可能会涉及到语法细节,例如异常处理(try-catch-finally),字符串操作,数组和集合框架的使用,以及方法重载和覆盖的概念。此外,还可能包括线程同步(synchronized关键字)和并发编程的基础...