Sunday, May 10, 2009
韩信点兵
韩信是怎么计算出来的,你能用程序验证出来吗?
public class Main{
public static void main(String[] args){
for(int i=1000;i<1100;i++){
if(isPassed(i,3,2) && isPassed(i,5,3) && isPassed(i,7,2)){
System.out.println(i);
}
}
}
public static boolean isPassed(int count,int m,int n){
return count % m==n;
}
}
求一百以内的质数和
现要求编写一个程序,将一百以内的质数总和求出。
int sum=0;
for(int i=2;i<100;i++){
if(isZhiShu(i)){
sum=sum+i;
}
}
System.out.println(sum);
public static boolean isZhiShu(int num){
for(int i=2;i< num/2+1;i++){
if(num%i==0)
return false;
}
return true;
}
找出10000以内的所有回文数
131是回文数
141是回文数
2992是回文数
3003是回文数
3113是回文数
3223是回文数
3333是回文数
int flag=0;
String s;
for(int n=0;n<10000;n++){
s="";
s=s+n;
flag=0;
for(int m=0;m< s.length();m++){
if(s.charAt(m)!=s.charAt(s.length()-m-1)){
flag=1;
}
}
if(flag==0){
System.out.println(s+" 是回文数");
}
}
鸡兔同笼问题
请用程序计算出来鸡和兔各多少只?
for(int j=0;j<=35;j++)
for(int i=0;i<=94/4;i++)
if(j*2+i*4==94 && i+j==35)
System.out.println("兔子:"+i+" "+"鸡:"+j);
ABCDE=4*EDCBA
int a,b,c,d,e;
for(int i=10000;i<100000;i++){
a=i/10000;
b=(i-a*10000)/1000;
c=(i-a*10000-b*1000)/100;
d=(i-a*10000-b*1000-100*c)/10;
e=i%10;
int sum=40000*e+4000*d+400*c+40*b+4*a;
if(sum==i){
System.out.println(i);
}
}
结果:87912
Saturday, May 9, 2009
马克思手稿中的数学题
设x,y,z分别代表男人、女人和小孩。按题目的要求,可得到下面的方程:
x+y+z=30 (1)
3x+2y+z=50 (2)
用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得:
2x+y=20 (3)
由(3)式可知,x变化范围是0~10
public class Main{
public static void main(String[] args){
int x,y,z;
for(x=0;x<=10;x++){
y=20-2*x;
z=30-x-y;
if(3*x+2*y+z==50){
System.out.println("男人数目为:"+x+"女人数目为:"+y+"小孩数目为:"+z);
}
}
}
}
Friday, May 1, 2009
类加载器
J2EE关于类加载的规范已经 成为了J2EE的标准之一。 类加载是java语言提供的最强大的机制之一,但所有的编程人员都应该了解其工作机制,明白如何做才能让其满足我们的需要。 这能有效节省我们的编码时间,从不断调试ClassNotFoundException的工作中解脱出来。
类与数据
一个类代表要执行的代码,而数据则表示其相关状态。状态时常改变,而代码则不 会。当我们将一个特定的状态与一个类相对应起来,也就意味着将一个类事例化。尽管相同的类对应的实例其状态千差万别,但其本质都对应着同一段代码。在 JAVA中,一个类通常有着一个.class文件,但也有例外。在JAVA的运行时环境中(Java runtime),每一个类都有一个以第一类(first-class)的Java对象所表现出现的代码,其是java.lang.Class的实例。我 们编译一个JAVA文件,编译器都会嵌入一个public, static, final修饰的类型为java.lang.Class,名称为class的域变量在其字节码文件中。因为使用了public修饰,我们可以采用如下的形 式对其访问: 一旦一个类被载入JVM中,同一个类就不会被再次载入了(切记,同一个类)。这里存在一个问题就是什么是“同一个类”?正如一个对象有一个具体的状态,即标识,一个对象始终和其代码(类)相关联。同理,载入JVM的类也有一个具体的标识,我们接下来看。 在JAVA中,一个类用其完全匹配类名(fully qualified class name)作为标识,这里指的完全匹配类名包括包名和类名。但在JVM中一个类用其全名和一个加载类ClassLoader的实例作为唯一标识。因此,如 果一个名为Pg的包中,有一个名为Cl的类,被类加载器KlassLoader的一个实例kl1加载,Cl的实例,即C1.class在JVM中表示为 (Cl, Pg, kl1)。这意味着两个类加载器的实例(Cl, Pg, kl1) 和 (Cl, Pg, kl2)是不同的,被它们所加载的类也因此完全不同,互不兼容的。那么在JVM中到底有多少种类加载器的实例?下一节我们揭示答案。
类加载器
在JVM中,每一个类都被java.lang.ClassLoader的一些实例来加载.类ClassLoader是在包中java.lang里,开发者可以自由地继承它并添加自己的功能来加载类。 无论何时我们键入java MyMainClass来开始运行一个新的JVM,“引导类加载器(bootstrap class loader)”负责将一些关键的Java类,如java.lang.Object和其他一些运行时代码先加载进内存中。运行时的类在JRE\lib \rt.jar包文件中。因为这属于系统底层执行动作,我们无法在JAVA文档中找到引导类加载器的工作细节。基于同样的原因,引导类加载器的行为在各 JVM之间也是大相径庭。 同理,如果我们按照如下方式: 来获取java的核心运行时类的加载器,就会得到null。 接下来介绍java的扩展类加载器。扩展库提供比java运行代码更多的特性,我们可以把扩展库保存在由java.ext.dirs属性提供的路径中。 (注:java.ext.dirs属性指的是系统属性下的一个key,所有的系 统属性可以通过System.getProperties()方法获得。在编者的系统中,java.ext.dirs的value是” C:\Program Files\Java\jdk1.5.0_04\jre\lib\ext”。下面将要谈到的如java.class.path也同属系统属性的一个 key。) 类ExtClassLoader专门用来加载所有java.ext.dirs下的.jar文件。开发者可以通过把自己的.jar文件或库文件加入到扩展目录的classpath,使其可以被扩展类加载器读取。 从开发者的角度,第三种同样也是最重要的一种类加载器是AppClassLoader。这种类加载器用来读取所有的对应在java.class.path系统属性的路径下的类。 Sun的java指南中,文章“理解扩展类加载”(Understanding Extension Class Loading)对以上三个类加载器路径有更详尽的解释,这是其他几个JDK中的类加载器 java.lang.Thread,包含了public ClassLoader getContextClassLoader()方法,这一方法返回针对一具体线程的上下文环境类加载器。此类加载器由线程的创建者提供,以供此线程中运 行的代码在需要加载类或资源时使用。如果此加载器未被建立,缺省是其父线程的上下文类加载器。原始的类加载器一般由读取应用程序的类加载器建立。
●java.security.SecureClassLoader
●java.rmi.server.RMIClassLoader
●sun.applet.AppletClassLoader
类加载器如何工作?
除了引导类加载器,所有的类加载器都有一个父类加载器,不仅如此,所有的类加载 器也都是java.lang.ClassLoader类型。以上两种类加载器是不同的,而且对于开发者自订制的类加载器的正常运行也至关重要。最重要的方 面是正确设置父类加载器。任何类加载器,其父类加载器是加载该类加载器的类加载器实例。(类加载器本身也是一个类)
使用loadClass()方法可以从类加载器中获得该类。我们可以通过java.lang.ClassLoader的源代码来了解该方法工作的细节,如下:
|
第一种方式较为常用,因为通常不建议在构造方法里调用getClass()方 法,因为对象的初始化只是在构造方法的出口处才完全完成。因此,如果父类加载器被正确建立,当要示从一个类加载器的实例获得一个类时,如果它不能找到这个 类,它应该首先去访问其父类。如果父类不能找到它(即其父类也不能找不这个类,等等),而且如果findBootstrapClass0()方法也失败 了,则调用findClass()方法。findClass()方法的缺省实现会抛出ClassNotFoundException,当它们继承 java.lang.ClassLoader来订制类加载器时开发者需要实现这个方法。findClass()的缺省实现方式如下:
|
在findClass()方法内部,类加载器需要获取任意来源的字节码。来源可 以是文件系统,URL,数据库,可以产生字节码的另一个应用程序,及其他类似的可以产生java规范的字节码的来源。你甚至可以使用BCEL (Byte Code Engineering Library:字节码工程库),它提供了运行时创建类的捷径。BCEL已经被成功地使用在以下方面:编译器,优化器,混淆器,代码产生器及其他分析工 具。一旦字节码被检索,此方法就会调用defineClass()方法,此行为对不同的类加载实例是有差异的。因此,如果两个类加载实例从同一个来源定义 一个类,所定义的结果是不同的。
JAVA语言规范(Java language specification)详细解释了JAVA执行引擎中的类或接口的加载(loading),链接(linking)或初始化(initialization)过程。
图一显示了一个主类称为MyMainClass的应用程序。依照之前的阐 述,MyMainClass.class会被AppClassLoader加载。 MyMainClass创建了两个类加载器的实例:CustomClassLoader1 和 CustomClassLoader2,他们可以从某数据源(比如网络)获取名为Target的字节码。这表示类Target的类定义不在应用程序类路径 或扩展类路径。在这种情况下,如果MyMainClass想要用自定义的类加载器加载Target类,CustomClassLoader1和 CustomClassLoader2会分别独立地加载并定义Target.class类。这在java中有重要的意义。如果Target类有一些静态的 初始化代码,并且假设我们只希望这些代码在JVM中只执行一次,而这些代码在我们目前的步骤中会执行两次——分别被不同的 CustomClassLoaders加载并执行。如果类Target被两个CustomClassLoaders加载并创建两个实例Target1和 Target2,如图一显示,它们不是类型兼容的。换句话说,在JVM中无法执行以下代码:
Target target3 = (Target) target2;
以上代码会抛出一个ClassCastException。这是因为JVM把他 们视为分别不同的类,因为他们被不同的类加载器所定义。这种情况当我们不是使用两个不同的类加载器CustomClassLoader1 和 CustomClassLoader2,而是使用同一个类加载器CustomClassLoader的不同实例时,也会出现同样的错误。这些会在本文后边 用具体代码说明。

图1. 在同一个JVM中多个类加载器加载同一个目标类
关于类加载、定义和链接的更多解释,请参考Andreas Schaefer的"Inside Class Loaders."
为什么我们需要我们自己的类加载器
原因之一为开发者写自己的类加载器来控制JVM中的类加载行为,java中的类 靠其包名和类名来标识,对于实现了java.io.Serializable接口的类,serialVersionUID扮演了一个标识类版本的重要角 色。这个唯一标识是一个类名、接口名、成员方法及属性等组成的一个64位的哈希字段,而且也没有其他快捷的方式来标识一个类的版本。严格说来,如果以上的 都匹配,那么则属于同一个类。
但是让我们思考如下情况:我们需要开发一个通用的执行引擎。可以执行实现某一特 定接口的任何任务。当任务被提交到这个引擎,首先需要加载这个任务的代码。假设不同的客户对此引擎提交了不同的任务,凑巧,这些所有的任务都有一个相同的 类名和包名。现在面临的问题就是这个引擎是否可以针对不同的用户所提交的信息而做出不同的反应。这一情况在下文的参考一节有可供下载的代码样 例,samepath 和 differentversions,这两个目录分别演示了这一概念。
图2 显示了文件目录结构,有三个子目录samepath, differentversions, 和 differentversionspush,里边是例子:

在samepath 中,类version.Version保存在v1和v2两个子目录里,两个类具有同样的类名和包名,唯一不同的是下边这行:
|
V1中,日志记录中有Version.fx(1),而在v2中则是Version.fx(2)。把这个两个存在细微不同的类放在一个classpath下,然后运行Test类:
|
类的加载与查看
1. Java在真正需要使用一个类时才会加以加载,而不是在程序启动时就加载。所谓真正需要通常指的是要使用指定的类生成对象时(或是用户指定要加载类时:Class.forName()、loadClass());声明并不导致类加载。
2.默认在类第一次被加载时会运行静态区域块
3. Class.forName(String name)(静态方法)实现动态加载类
4.static Class forName(String name,boolean initialize,ClassLoader loader)将initialize设置为false时,在加载类时并不会立即运行静态区块,而会在应用类建立对象时才运行静态区块。
5. Class对象表示所加载的类,取得Class对象之后,就可以取得与类相关联的信息
eg:
package 反射;
import java.lang.reflect.*;
public class SimpleClassViewer {
/**
* @param args
*/
public static void main(String[] arg) {
// TODO Auto-generated method stub
String args[]=new String [1];
args[0]="输入输出.CharArrayReaderWriterDemo";
try{
Class c=Class.forName(args[0]);
//取得包代表对象
Package p=c.getPackage();
System.out.printf("package %s;%n",p.getName());
//取得类型修饰,像class、interface
int m=c.getModifiers();
System.out.print(Modifier.toString(m)+" ");
//if is interface
if(Modifier.isInterface(m)){
System.out.print("interface ");
}
else{
System.out.print("class ");
}
System.out.println(c.getName()+" {");
Field[] fields=c.getDeclaredFields();
for(Field field:fields){
//显示权限修饰
System.out.print("\t"+Modifier.toString(field.getModifiers()));
//显示类型名称
System.out.print(" "+field.getType().getName()+" ");
//显示域成员名称
System.out.println(field.getName()+" ");
}
//取得声明的构造函数代表对象
Constructor[] constructors=c.getDeclaredConstructors();
//显示修饰权限
for(Constructor constructor:constructors){
System.out.print("\t"+Modifier.toString(constructor.getModifiers()));
//显示构造函数名称
System.out.println(" "+constructor.getName()+"();");
}
//取得声明的方法成员代表对象
Method[] methods=c.getDeclaredMethods();
for(Method method:methods){
//显示权限修饰
System.out.print("\t"+Modifier.toString(method.getModifiers()));
//显示放回类型名称
System.out.print(" "+method.getReturnType().getName()+" ");
//显示方法名称
System.out.println(method.getName()+"();");
}
System.out.println("}");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("没有指定类");
}
catch(ClassNotFoundException e){
System.out.println("找不到指定类");
}
}
}
《潜伏》在办公室
| 《潜伏》并不是间谍片,而是一部不可多得的职场教程。余则成的经历,有绝对的现实意义,他用亲身体验,教导我们如何在险恶的职场生存。 而现今的职场,比余则成面临的环境更糟糕,我们都是在狂涛骇浪里潜伏的小人物。 所以,研究专家“余则成”是怎么说,怎么做的吧。 1、办公室里只有两种人,主角和龙套。 在《潜伏》里,每个角色都有个性。只龙套非但没性格而且还专业送死。 职场上也一样,想要过的轻松,不想往上爬,那就只能做一辈子的龙套。 作龙套的坏处就是:送死你先去,功劳全没有,裁员先考虑。 现在的职场绝不是养懒人的地方,你要比别人生存的好,就唯有当主角,让别人去做龙套。 你不能踩着别人肩膀,就只能做他人垫背。 2、每个人都要有大志,就算要毁灭世界也可以。 胸怀大志是做主角的首要条件。 譬如余则成的信仰,站长的贪钱,马奎和陆桥山要当副站长,李涯为了党国事业,这些都是大志,而有理想存在才能为此奋斗。 在职场上,你若没有一个奋斗目标,就不可能进取的往上爬,到最后只能沦为龙套,成为别人的牺牲品。 所以不管毁灭世界,还是成为第一首富,你都必须心存志向,以此为目标。 3、别被理想忽悠,理想是需要的,但不是别人的理想,而是你自己的。 当提起大志时,有人会想到企业目标,想到企业文化,想到老板慷慨激昂的演说。 忘了那些吧,老板的理想只是老板的,而职场上,你是独立的。要保持清醒头脑,不能被轻易忽悠。 《潜伏》里,不管站长还是戴笠,甚至是余则成自己都会提到党国的事业。而实际上,他们心里都清楚的很,一切都该以自己为先,自己的大志才是可奋斗的目标。 不管别人有什么理想,要牢牢记住自己的大志,这才是立命之根本。 4、如果真的没大志,那就为钱奋斗。 《潜伏》里,站长说过一句话。每个人都有解甲归田的时候,如果不是为了钱,谁要当这个官呢。 所以赚钱是人最主要的追求。职场上很危险的局面,就是老板用理想笼络人,想让人不拿钱白干活。 但真的肯不要钱干活,那你就是没价值的,既然没价值,还有什么存在的必要呢? 金钱是唯一衡量你价值的东西。你真的一无所求的话,那就为赚钱而奋斗。 5、你可以不聪明,但不可以不小心。 《潜伏》里似乎每个人都聪明,其实翠平也很聪明,可为什么她就状况不断,最后还暴露身份。 就因为她不够小心。 职场与此一样,你可以不聪明,但不可以不小心。 不聪明的人,最多笨拙一些,事情做的差一些。而在职场上,这不是很大的罪过。 但不小心就随时会触犯到别人的利益,犯下得罪人这个职场大忌。 到那时,穿小鞋都不晓得是为什么穿的。 管牢嘴,能风花雪月的时候就少议论同事,能说人好话时就别说坏话。 这就是余则成的生存之道。 6、你说的每句话,老板都会知道。所以要好好想想该说什么,不该说什么。 别奢望你私下说的话老板就听不到。老板能知道一切,这是真理。 就像余则成给左蓝写信,自以为夹在书里没人知道,而实际上,他落下的每个文字,每句话都有人注意。 在职场上完全相同,只要你不是一个人自言自语,就得担心谈话对象会把话传出去。 而经验告诉我们,每一句对公司的议论,最后都会传到老板耳朵里。 所以你跟任何人说话时,都要好好想想,该说什么,不该说什么。 不该说的绝对不能说,可说可不说的也闭嘴。 7、偶尔对老板交心是必要的,但要有的放矢。 余则成和站长关系亦师亦友,可谓是站长的铁杆亲信,两人之间时不时有促膝长谈。 记住,促膝长谈是种手段,而不是真的让你什么都说。偶尔的交心,说些无关紧要的私己话,能让老板觉着你贴心。 而事实上,从没一个上司会对你真的交心。 切忌一热泪盈眶,就把心窝子都交出去。 被出卖的,永远是交心的那个。 8、不管什么时候,装傻总是最不易犯错。 在《潜伏》里,余则成看起来傻傻的。当别人问起一些紧要问题时,都会装傻,罔顾左右而言它。 这实在是很高明的生存术。 金庸也曾经说过,他年迈耳背后,该听见的话就能听见,不该听见的话就听不见。 当有人要你当面表态站队,要你选择事情的方向,不管你怎么选都是错的。 那么装傻就是最好的选择,这是没选择时最不易犯错的方法。 别担心装傻的样子很拙劣,即使每个人都看出你在装傻,可他们依旧拿你没办法。 真正倒霉的是那些明确表态的人,有这些龙套牺牲,怎么也轮不到你。 9、把自己当成最聪明的人,往往是最笨的。 在刚开始时,余则成向左蓝隐瞒自己是军统特务,向吕宗芳隐瞒左蓝是激进分子。余则成觉得自己能掌控大局,可实际上,他才是对方棋盘上的棋子。 左蓝和吕宗芳早就决定把他发展成共产党了。 在职场上,总把自己当最聪明的人,一定是做龙套的命。 真正聪明的高手,是大智若愚,该精明时精明,不该精明时装傻。 10、一定要有靠山,但比靠山还可靠的,是让自己有价值。 余则成向来是有靠山的人,一开始的吕宗芳,后来的站长,甚至是戴笠。正是这些靠山的存在,才让余则成多次转危为安,不引人怀疑。 但比靠山更重要的,是余则成本身的价值。 如果没有军统背景,吕宗芳绝不会拉拢他。如果没有立下大功,戴笠也不会青眼相加。如果他不能帮站长弄钱,也不可能获得庇护。 所以在职场中,和上司们搞好关系是一门必须的功课,为自己找好靠山很重要。 而比此更重要的,是让自己有足够的价值,以致于每个上司都必须拉拢你。 11、你是上司的人,上司却不一定是你的人,这层意思一定要明白。 当一个上司对你说,你是他的人时,心里一定要清楚,上司并不是你的人。 你是他的,他是他自己的。 在潜伏里,马奎曾经是毛人凤的侍卫,按说有此大靠山该有恃无恐才对。但马奎一出事情,毛人凤立刻就躲了。 当你的事情与上司的利益有冲突时,他们会毫不犹豫的出卖你。 无论何时都要记住,你是你自己的,只有你才能对自己负责。 别相信上司故作亲近的话,那随时都会是陷阱。 12、上司说他对你很放心,事实可能正好相反。 站长经常对余则成说,我对你很放心。可事实上,站长对余则成的试探调查从没停过。 如果上司真的对你放心,他根本不用经常提及。 真正的信任,是通过行动表现的。当上司愿意把害人的事情,把职场斗争的事情和你一起做,那才是信任的表现。 而上司口头说对你放心,则反而要当心了,很可能你做了什么,让上司产生你不忠的怀疑。 13、站在上司立场上想问题,站在自己立场上办事情。 当上司相信你,让你做一些事情时,心里必须要有本帐,别傻兮兮的什么都做。 你要站在上司立场上去考虑问题,了解上司为什么要做,能达到什么目的。然后再以自己的立场抉择,有些做,有些推脱。 就算是象余则成这样看似对站长忠心耿耿的人,也不是什么都会做的。 选择符合自己利益的事情去做,不符合利益的想法推搪。 用做了的事情取悦上司,而不做的事情则让上司知道,你已经完全尽力了。 14、上司突然垮台,不要惊慌,独自完成任务,然后借此再找到新的靠山。 《潜伏》里,余则成和吕宗芳被派去南京刺杀叛徒。而吕宗芳突然牺牲,余则成并没有慌张,反而独立完成任务,成为军统大功臣,完成了事业转折。 在职场里,经常发生上司突然垮台的事情。 如果你不幸遇见,千万别惊慌,独自完成手上的工作,而且要做的漂亮精彩。 而这就是你将来安身立命的资本,你可以借此找到新的靠山。 还是那句话,必须要让自己有价值,这比有人罩着你还重要。 15、做事做的好,干活干到老。 余则成并非总是聪明的,他与党组织相比就是弱者。余则成不懂得“做事做的好,干活干到老”这个道理,所以他从一开始做潜伏工作,一直到大陆解放后还必须做下去。 甚至与翠平生离死别,没有得到个人最佳结局。 “做事做的好,干活干到老”和“让自己有价值”这两句话间并没有矛盾。 价值是体现在关键处,是一个至关重要的地方才要突然爆发的。而无关痛痒时,尤其是做些没功劳只有苦劳的活,别做太好。 永远干得好,就会一直干下去。若让人觉得,你只有做庸碌工作的才能,就算干到累死,你也没有爬上去的那一天。 16、一定要有缺点。 在职场,一定要有缺点。即使象余则成这样,也并非完美,他会故意暴露一些缺点给人看,譬如感情,譬如贪财等。 一个完美而毫无缺点的人,为遭人嫉恨,会被人敬而远之。如果连上司都对你敬而远之,那职场之路就危险了。 所以聪明人会故意暴露些缺点,尤其是无关痛痒的缺点,让上司以为他能拿捏住你,那才是最安全的境地。 但缺点绝不可致命,却不能是你真正的短处,只可以是风花雪月时谈起的余兴节目,和人套近乎有余,想以此要挟则没门。 17、高你半级的人,往往是最危险的,同级的是天然敌人。 如果已经有一官半职,那对这句一定感同身受。 象余则成那样,比他高半级的马奎、陆桥山甚至李涯都十分危险,处处拿他当假想敌。 因为高你半级的人会有危机感,怕你随时都可能与他们平起平坐,所以有机会他们就会打击你。而不管高半级还是一级,都是上司,他们给你穿小鞋就危险万分了。 而同级的人是必然的敌人,只要你们的上司不是傻瓜,就一定会挑拨手下争斗。 这是中国五千年来的帝王术,是国粹。 18、十句里要有九句真话,这样说一句假话才有人信。 这是《潜伏》里很明显的情景。余则成说话并不总是假的,反倒有九句是真话。正是这样,他才能得到站长的信任,以致于连去台湾都要带着他。 职场中,九真一假也是最佳法则。一个满嘴跑火车的人是得不到上司信任的,只有忠心耿耿,几乎不说谎的人,才能够在最关键的时刻骗到所有人。 你要当老实人,老实人才能取信于人,没有别人的信任就没有关键时的谎言。 说谎只需要在最最关键的时刻,能少说一句就少说一句。 狼来了的故事,大家都应该听过。 19、把每个慌话都当成性命攸关,这样说谎就不会内疚。 职场上很关键的难关,就是怎么过自己心理关口。有些人天生不会说谎,一说谎就内疚。 这时候,就需要想起你的大志了。当一个人有志向,有理想,有信仰的时候,他就可以做任何事情。 余则成为了完成任务说过谎,杀过人,也做过很多坏事。这完全因为他有信仰在支撑,所以并不会内疚。 而你也要记住,每个谎言都可能是性命攸关,如果过不了自己的心,就可能实现不了自己的理想。 如果这么想了,你还会内疚么? 20、每个人都站在恶的那一面,因为各人有各人的善。 最后讲一句关于理想的道理。每个人都有自己的理想,而有利于自己理想的则是善,不利于别人理想的则是恶。 因人们各有各的立场,有不同的需求。所以在别人眼里,你必然站在恶的那面。 你永远都是自己的善,别人的恶。 但怎么样才是真正的大善,怎么样才是大恶呢? 为实现理想说一句谎,这是恶,但不是大恶。 而如果你的理想是毁灭世界,那才是大恶。 譬如你以事业红火,同事幸福为理想,那么就算为这个理想做了坏事,也不过小恶。 行大善而为小恶,历来被圣人们不齿。 可圣人自己也这么做。如此的圣人可以从孔子、孟子、王阳明一直排到更近更近。 儒教里有知行合一的法门,就是要你明白,只要理想大善,便可无所不为。 然而, 你必须真的确信自己的志向是善的。 就像余则成一样善。 |
Wednesday, April 29, 2009
Microsoft's Kumo
Microsoft has reportedly put up a clock in one of its buildings with a 40-day countdown to the launch of its next-generation search engine, code-named Kumo.
Enthusiast site LiveSide noted on Sunday that a reader on Neowin, another enthusiast site, said that Microsoft had a TV in one of its search buildings with the countdown clock.
The software maker has been testing its search engine internally since last month, but has not said exactly when the service would launch. The countdown appears to roughly coincide with a speech from newly minted online boss Qi Lu, who is slated to speak at the SMX Advanced event on June 3. The timing also seems to coincide with reports that Microsoft plans a big ad campaign for its search engine starting this summer.
Microsoft declined to comment on the clock or its plans for Kumo.
Although Microsoft is testing the search engine under the Kumo name, executives have said that is just one of several names the company is considering.
The stakes for Microsoft are high. The software maker has remained a distant third in the search market behind Google and Yahoo, a position that makes it tough for the company to get the scale it needs to make money in the business. Even inside its own walls, Microsoft has struggled to get the use of its search engine where it would like.
Early screenshots of Kumo, seen by CNET News, show that the revamped search engine focuses on a couple of areas, including an attempt to break down a search query into a couple more detailed options. When searching, say, for the term "Audi," Kumo breaks things down into an initial result with facts such as price and fuel economy pulled out in bold, followed by general Web results, then results by category, such as Audi parts, used Audis, and Audi accessories.
Tuesday, April 28, 2009
(最新整理)国内网页设计网站网址大全【转】
1. 蓝色理想 http://www.blueidea.com
2. 网页设计师联盟 http://www.68design.net
3. 网页设计大本营 http://www.code-123.com
4. 我爱设计网 http://www.52design.com
5. 视觉中国 http://www.chinavisual.com
6. 设计在线 http://www.dolcn.com
7. 网易学院 http://tech.163.com/school
8. 天极设计在线 http://art.yesky.com
二、图象处理类
1. 设计中国(中国PHOTOSHOP联盟) http://www.chinaddu.com
2. 图像谷 http://www.pstxg.com
三、动画设计类
1. 闪客帝国 http://www.flashempire.com
2. 闪吧 http://www.flash8.net
3. 闪盟在线 http://www.flashsun.com
四、网页素材类
1. 桌面城市 http://www.deskcity.com
2. 素材精品屋 http://www.sucaiw.com
3. 站酷(ZCOOL) http://www.zcool.com.cn
4. E库素材 http://www.iecool.com
5. 中国站长素材 http://sc.chinaz.com
五、程序开发类
1. CSDN开发者网络 http://www.csdn.net
2. MSDN 中文网站 http://msdn.microsoft.com/zh-cn/default.aspx
3. 动网先锋 http://www.cndw.com
4. 编程中国 http://www.bc-cn.net
六:网站源码类
1. 代码中国 http://download.csdn.net
2. 天新网源码下载 http://www.21tx.com/src
3. 源码之家 http://www.mycodes.net
4. 站长下载 http://down.chinaz.com
[转]国内WEB设计资源、教程、素材、站长资讯交流类网站汇集
以下排列不分先后
**************************************
WEB设计资源(素材、代码、特效类):
**************************************
http://www.zcool.com.cn
站酷(ZCOOL),素材分享与设计交流,为您提供矢量素材,psd,png,gif,icon,psd分层素材,酷站等素材资源……
http://sc.chinaz.com/
素材 图片下载 网页模板 图标下载 酷站欣赏 QQ表情 矢量素材 音效下载 桌面壁纸 网页素材 素材下载-中国站长站
http://sc.52design.com/
52design.com 素材、模板素材、矢量素材、flash源码素材、专业素材网
http://bolm.cn/
卜咯米Web设计交流社区是Web设计爱好者的家园,这里提供了精彩实用的Web设计相关教程和资源…
http://www.momii8.com/
末米吧提供丰富的背景图片、墙纸资源素材,并提供在线的演示功能,^0^设计师的好帮手!~
http://www.sccnn.com/
素材中国,关于各类设计素材的收集下载
http://www.lanrentuku.com/
懒人图库专注于提供网页素材下载,其内容涵盖网页素材、设计图库,小图片、网页背景、导航菜单、矢量图等,让任何一个网页设计师都能找到自己想要的素材!
http://www.ivsky.com/
天堂图库-专注的素材图片库,提供风景图片、生活图片、设计素材、商务图片、建筑园林图片、装饰家居图片、人物图库、动物植物图片和精美壁纸等超过80000张的图片素材。
http://cssrain.cn/
(前端技术)–读者的进步速度远大于博客的进步速度。 - cssrain,兔子,peter,笨笨,痕,区区,清夜无雨,重生,Deeka,亦飞,没剑,蚂蚁…
http://www.jzpu.com/
建站铺是一个完全免费的源码论坛,这里拥有丰富的建站源码资源,欢迎您的光临!
http://www.wzsky.net/
中国优秀综合设计门户网站.提供平面设计,广告设计,插画,室内设计,包装等作品,还有技术文章教程,网页模板,网页制作,素材下载服务,为站长及设计师提供最新最全的设计资讯与学习教程。
**************************************
网站建设讨论(站长交流、综合、咨询等):
**************************************
http://community.csdn.net/
CSDN社区中心
http://bbs.blueidea.com/
专业的设计与技术支持,为您提供 网站设计与网络技术支持、商业网站开发。DREAM TEAM 系列软件的技术支持。
http://www.admin5.com/
站长信息,联盟信息,网络赚钱信息中心,站长故事,个人网站发展经验技巧大全。
http://www.chinaz.com/
中国站长网,为站长提供及时全面的站长资讯
http://www.jz123.cn/
中国建站为中国站长提供及时全面的站长资讯以及建站源码和建站资源
http://www.itcaogen.cn/
草根网—用心营造IT人脉平台 欢迎光临 草根网 (http://www.itcaogen.cn)。草根是一群乐于分享、交流的互联网从业人员!欢迎加入草根的大家庭。
http://www.iresearch.com.cn/html/Default.html
艾瑞市场咨询集团
http://www.techweb.com.cn/
TechWeb.com.cn - 操作比理念更重要
http://www.donews.com/
DoNews.COM - IT 社区 媒体平台
http://www.im286.com
落伍者站长论坛
http://bbs.phpchina.com/
PHPchina,中国开源之路
http://www.51js.com/
无忧脚本 -//体验编写HTML代码的乐趣
**************************************
WEB教程及手册类(设计教程、网页编程等):
**************************************
http://www.knowsky.com/
动态网站制作指南
http://www.itwis.com/
IT知道网
http://www.webjx.com/
网页教学网–中国网页设计,网页制作第一站
http://www.jcwcn.com/
中国教程网-中国教程网
http://www.52css.com/
CSS Web Design 我爱CSS-Web标准化 Div+css教程
http://edu.chinaz.com/
中国站长学院,ASP,PHP,JSP,XML,SQL,FLASH,CSS,ASP.NET
http://www.dw8.cn/
Dreamweaver暨Web技术站
http://www.div-css.com/
Web标准化
http://www.google.cn/support/webmasters/
网站管理员/站长 帮助
**************************************
常用工具类(查询工具,统计工具):
**************************************
http://tool.chinaz.com/
中国站长网,查询工具大全
http://www.webmasterhome.cn/
中国站长之家提供网站综合信息查询,搜索引擎收录查询,网站收录查询,百度收录查询,Google收录查询,PageRank查询,反向链接查询, PR查询,IP地址查询,站长工具站全心全意为站长服务链接。
http://www.linkhelper.cn/
友情链接批量检查工具,本工具可以批量查询友情链接在百度的收录情况,快速获知哪些友情链接在百度收录数量为0,同时能查询友情链接的PR、以及对方是否有链接本站,即时了解哪些友情链接私自撤下链接。
http://www.vdoing.com/
维度,维度统计,下一代流量统计
http://www.51.la/
我要啦免费统计
http://www.cnzz.com/
中国站长广告联盟 - 免费网站流量统计,商业媒体统计
http://tongji.cn.yahoo.com/
雅虎统计 免费网站流量统计分析系统。
**************************************
酷站鉴赏类(设计类酷站):
**************************************
http://www.sj63.com/
::设计路上::酷站收藏大全,酷站欣赏,韩国网站欣赏,欧美网站,国内网站欣赏,设计欣赏,网页设计,网站建设,平面设计,韩国矢量素材下载
http://www.yi2.net/
依儿酷站,网站设计欣赏,网页设计,优秀网站欣赏,个人网站欣赏
http://main.68design.net/cool/
酷站-网页设计师加油站
http://www.webshu.net/cool/
叶子树-酷站欣赏
http://bolm.cn/special/cssgallery/
DIV+CSS设计酷站网址大全
http://www.3lian.com/cool/
酷站欣赏 -国内外酷站欣赏
http://www.kecola.com/
可酷啦—酷站欣赏|设计素材,精彩网站齐分享
http://www.zcool.com.cn/coolsite/index.html
酷站欣赏 - 站酷(ZCOOL)-素材分享与设计交流
继续收集中,大家有好的请补充。
原文链接
Sunday, April 26, 2009
字符流
例:BIG5 &ASCII
package 输入输出;
import java.io.*;
public class ReaderDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test.txt";
try{
PushbackInputStream pushbackInputStream=
new PushbackInputStream(new FileInputStream(arg));
byte[] array=new byte[2];
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(array);
//reader会从已读的位数组中取出数据
InputStreamReader reader=new InputStreamReader(byteArrayInputStream);
int tmp=0;
int count=0;
while((count=pushbackInputStream.read(array))!=-1){
//两个字节转换为整数
tmp=(short)((array[0]<<8)|(array[1] tmp="tmp&0xffff;">=0xA440 && tmp<0xffff){
System.out.println("BIG5:"+(char)reader.read());
//重置ArrayInputStream的读取光标
//下次reader才会重新读取数据
byteArrayInputStream.reset();
}
else{
//将第二个字节推回流
pushbackInputStream.unread(array, 1, 1);
//显示ASCII范围的字符
System.out.println("ASCII:"+(char)array[0]);
}
}
pushbackInputStream.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
对InputStream和OutputStream进行字符处理
例:文件复制
package 输入输出;
import java.io.*;
public class StreamReaderWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test2.txt";
try{
InputStreamReader inputStreamReader=
new InputStreamReader(
new FileInputStream(arg));
OutputStreamWriter outputStreamWriter=
new OutputStreamWriter(
new FileOutputStream("backup_"+arg));
int ch=0;
while((ch=inputStreamReader.read())!=-1){
System.out.print((char)ch);
outputStreamWriter.write(ch);
}
System.out.println();
inputStreamReader.close();
outputStreamWriter.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
字符的转换会根据系统默认的编码
(若要指定编码,使用InputStreamReader & OutputStreamWriter)
例:
package 输入输出;
import java.io.*;
public class FileReaderWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test.txt";
try{
FileReader fileReader=new FileReader(arg);
FileWriter fileWriter=new FileWriter(arg+".txt");
int in=0;
char[] wlnChar={'\r','\n'};
while((in=fileReader.read())!=-1){
if(in=='\n'){
//写入"\r\n"
fileWriter.write(wlnChar);
}
else
fileWriter.write(in);
}
fileReader.close();
fileWriter.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
例:
package 输入输出;
import java.io.*;
public class BufferedReaderWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test.txt";
try{
BufferedReader bufReader=new BufferedReader(
new InputStreamReader(System.in));
BufferedWriter bufWriter=new BufferedWriter(
new FileWriter(arg));
String input=null;
//每读一行进行写入动作
while(!(input=bufReader.readLine()).equals("quit")){
bufWriter.write(input);
//newLine()方法写入与操作系统相依的换行字符
bufWriter.newLine();
}
bufReader.close();
bufWriter.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
package 输入输出;
import java.io.*;
public class StreamWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test.txt";
try{
//"简体中文"四个字的GB2312编码
byte[] sim={
(byte)0xbc,(byte)0xf2,
(byte)0xcc,(byte)0xe5,
(byte)0xd6,(byte)0xd0,
(byte)0xce,(byte)0xc4
};
//数组作为流来源
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(sim);
InputStreamReader inputStreamReader=new InputStreamReader(byteArrayInputStream,"GB2312");
//PrintWriter接受Writer实例作为变量
PrintWriter printWriter=
new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(arg),"GB2312"));
int in=0;
printWriter.print("PrintWriter:");
//写入数组内容
while((in=inputStreamReader.read())!=-1){
printWriter.print((char)in);
}
printWriter.println();
printWriter.close();
byteArrayInputStream.reset();
//PrintStream接受OutputStream实例作为变量
PrintStream printStream=new PrintStream(
new FileOutputStream(arg,true),true,"GB2312");
printStream.print("PrintStream: ");
//写入数组内容
while((in=inputStreamReader.read())!=-1){
printStream.print((char)in);
}
printStream.println();
inputStreamReader.close();
printStream.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
例:
package 输入输出;
import java.io.*;
import java.util.*;
public class CharArrayReaderWriterDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test.txt";
try{
File file=new File(arg);
BufferedReader bufInputReader=
new BufferedReader(
new FileReader(file));
//将文件读入字符数组
CharArrayWriter charArrayWriter=new CharArrayWriter();
char[] array=new char[1];
while(bufInputReader.read(array)!=-1){
charArrayWriter.write(array);
}
charArrayWriter.close();
bufInputReader.close();
//显示字符数组内容
array=charArrayWriter.toCharArray();
for(int i=0;i< array.length;i++)
System.out.print(array[i]+" ");
System.out.println();
//让用户输入位置与修改内容
Scanner scanner=new Scanner(System.in);
System.out.print("输入修改位置:");
int pos=scanner.nextInt();
System.out.print("输入修改字符:");
char ch=scanner.next().charAt(0);
array[pos-1]=ch;
//将字符数组内容存回文件
CharArrayReader charArrayReader=new CharArrayReader(array);
BufferedWriter bufWriter=
new BufferedWriter(
new FileWriter(file));
char[] tmp=new char[1];
while(charArrayReader.read(tmp)!=-1){
bufWriter.write(tmp);
}
charArrayReader.close();
bufWriter.flush();
bufWriter.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
二级语法190
1 体言の|たあげく(に) 最后,结果是~~~ 往往用于不好的结果
例:いろいろ考えたあげく、学校をやめることにした(经过多方面考虑最后决定退学)。
長い苦労のあげく、とうとう死んでしまった。(长期辛劳最后终于死了)
2体言の|用言連体形+あまり 因过于~~~ 往往用于造成不好的结果
例:嬉しさのあまり、彼は泣いた(他因过于高兴而流下了眼泪)。
3である|用言連体形+以上(は) 既然~~~就~~~
例:約束した以上はまもらなければならない(既然约好了就得守约)
学生である以上、よく勉強すべきだ(既然是学生就应该好好学习)。
4 ~~~一方(では)~~~ 一方面~~~另一方面~~~
例:情熱も大切である一方、冷静(れいせい)な判断(はんだん)も必要です(热情很重要,另一方面冷静的判断也很需要)。
5用言連体形+一方だ 一直~~~,越来越~~
例:人口は増える一方だ(人口一直在增加)。
これからは寒くなる一方だ(今后将会越来越冷了)。
6体言の|用言連体形+うえに 而且,又
例:道に迷った上に雨に降られた(他迷了路,而且又被雨淋了)。
彼女は美人で、そのうえやさしい(他即漂亮又温柔)。
7体言の+うえで(は) 在~~~方面
例:健康の上では別に問題はない(在健康方面没有什么问题)。
8体言の|たうえで ~~~之后
例:詳しいことはお目にかかった上で、またご相談いたしましょう(详细情况等见了面再商量吧)。
9たうえは 既然~~~就~~~
例:こうなったうえはしかたがない(事情既然到了这种地步就没有办法了)。
10 うちに 趁~~~ (趁着现在的状态未变~~~)
例:熱いうちに、召し上がってください(请趁热吃)。
11動詞未然形+う|ようではないか(じゃないか)让我们一起~~~吧(向大家发出呼吁号召)
例:もう一度よく考えてみようではありませんか(让我们一起再好好考虑一下吧)。
お茶でも飲もうか(让我们一起去喝点茶什么的吧)。
12動詞連用形+得る(うる)|得ない(えない)可能,会|不可能,不会
例:それはあり得ることだ(那是可能有的事)。
そんなことはあり得ない(那种是不可能有)。
13名詞の|用言連体形+おかげで(おかげだ)托~~的福,多亏 (用于好的结果)よい結果の理由
例:傘を借りたおかげで、雨に濡れずにすんだ(多亏借了把伞才没被雨淋着)。
あの人のおかげで、私も合格した(托他的福我也及格了)。
14~~~恐れがある(おそれがある)恐怕~~,有~~~的可能|危险
例:努力しなかったら、落第する恐れがある(如果不用功的话,恐怕会考不上)。
15用言連体形+かぎり 只要~~~就~~~
例:私が生きている限りは、あなたに苦労はさせません(只要我活着就不让你受苦)。
16用言連体形+かぎりでは 在~~~范围内,据~~~所~~~
例:われわれの知っているかぎりでは、其の製品は国内でしか生産していない(据我所知,那种产品只在国内生产)。
17動詞連用形+かける ①刚~~(表示动作刚刚开始);②还没~~~完(表示动作进行到中途)③“就要~~~”表示动作即将开始。
例:①この肉は腐りかけているようだ(这种肉好像已经开始腐烂了)
②仕事をやりかけのまま、出かけたらしい(好像工作还没做完就出去了)。
③火が消えかけている(火就要灭了)
18動詞連用形がたい(難い) 难~~~ 表示第一人称的感觉
例:今度の体験は忘れがたいものだ(这次体验真是难忘)
19名詞|動詞連用形+がち 容易,常常 一般用于不好或者消极的场合
例:その病気になってから、私は忘れがちになった(得了那场病之后我变得容易忘事了)。
20~~~かと思うと|思ったら ~~~思うと|思ったら 以为是~~~却~~;刚~~~就
表示刚完成前项,紧接着进行或出现后项。 (三P241)
例:故障かと思ったら、停電だった(我以为发生了故障原来是停电了)。
家の子は困ったものだ。学校から帰ってきたかと思うと、すぐ遊びに出ていってしまうんだから(我家的孩子真让人为难,刚从学校回来就
出去玩了)。
21~~~か~~ないかのうちに 刚要~~~就~~~
例:ドアをノックするかしないかのうちに、内側からドアが開かれた(刚象敲门,就有人从里边把门打开了)。
22動詞連用形+かねる 难以 表示说话人对该事实的实现难以容忍或者认为有困难而加以拒绝
例:こんな重大な事は私一人では決めかねます(如此重大的事我一个人难以决定)。
23動詞連用形+かねない 不见得不,也有可能 一般用于不好的事情 (四.P124)
例:あんなにスピードを出しては事故も起こしかねない(开得那么快,有可能会出事的)。
24動詞終止形|名詞?形容動詞である+かのようだ。好像,宛如,简直就像
例:水を飲むかのように、田中さんはコップを口に当てた(田中把杯子放在嘴边好像要喝水似的)。
禅は日本文化の代表であるかのように考えられている(禅就好像被看作日本文化的代表似的)。
25~~から~~にかけて 从~~~到~~~ 用于时间和空间上
例:6月から7月にかけて雨がちの天気が続きます(从6月到7月持续阴雨天气)。
今朝、東北地方から関東地方にかけて、弱い地震がありました(今天早晨从东北地区到关东地区发生了微弱的地震)。
26体言からいうと|からいえば|からいって 从~~~来说,从~~~方面考虑
例:人口から言えば、東京は今千二百万人ぐらいでしょう(从人口来说,东京恐怕有1千2百万人左右)。
我が家の収入からいって、学費のかかる私立大学に行くのは無理です(从我们家地说如考虑,读不起昂贵的私立大学)。
27体言からして 从~~~来看;从~~~来说
例:実験の結果からして、成功までまだ遠いだろう(从实验的结果来看离成功大概还很遥远)。
名前からしておもしろい(从名字来说很有意思)。
28体言からすると|からすれば 以~~~来看。根据
例:この値段からすれば、これは本物のダイヤモンドではないだろう(以价格来看这部可能是真正的钻石)。
現場の状況からすると、犯人は窓から侵入したようだ(从现场来看,罪犯象是破窗而入)。
29用言終止形からといって|からとて|からって 虽说~~~但~~~;尽管~~~也~~~,不能因为~~~就~~~
例:金持ちだからといって。幸せとはかぎらない(虽说有钱,但未必幸福)。
給料が安いからと言って、いいかげんな仕事をしてはいけない(不能因为工资低就工作马虎,不负责人|尽管工资低,但也不能工作马虎
不负责任)。
30名詞である|動詞終止形+からには(からは) 既然~~~就~~~
例:学生であるからには、勉強をまず第一にしなければなりません(既然是学生就必须把学习放在第一位)。
日本に来たからには、日本の習慣に従います(既然来到了日本就要遵从日本的习惯)。
旅行に行くからには、何でも見ないと損だと思う(既然要去旅行,若什么也不看,呢就不合算了)。
31体言から見ると|から見れば|から見て|から見ても 从~~~方面来看
例:あの人の成績から見ると、大学受験はとても無理です(从他的成绩来看报考大学事态勉强了)。
彼女は、女の私から見ても、女らしく魅力がある(从我们女人的角度来看,我也觉得她很有女性魅力)。
32動詞|助動詞連体形+かわりに 虽~~~但~~~;同时
例:中村さんは遅刻もしないかわりに、仕事もあまりしない(中村虽然不迟到但也不怎么干工作)。
「終身雇用制について、どう思いますか。」「いい所もあるかわりに、悪い所もあります。」(你对终身雇佣是怎么看的?有好的一面
同时也有不足之处)
33名詞の|動詞連体形+かわりに 代替,代理 表示补偿报答代替等,这个句型的前后两项必须是有同等价值的可以交换的。 (三P280
)
例:日本語を教えてもらうかわりに中国語を教えてあげましょう(你教我日语我来教你汉语吧)。
山田先生の代わりに、内山先生がこのクラスの受け持ち先生になった(内山先生代替上田先生担当这个班的班主任)。
34体言+気味(ぎみ) 有点 有些 (表示身心的感受感触等)
例:風邪気味で学校を休ませていただきます(因我有点感冒,请允许我请假)。
35きり|きりだ 从~~~以后就再也没|一直没~~~
例:朝出かけたきりまだ帰らない(从早上出去以后就再也没回来)。
張先生とは去年お会いしたきりです(去年根张老师见过一次面,之后就在也没见过)。
36動詞連用形+切る|切れる ~~~完(表示完结完成),完全|很~~~(表示达到极限)
“切る”は他動詞です。“切れる”自動詞です。
例:読みきる(读完)。
疲れきっている(疲乏至极)。
人民は政府を信頼しきっている(人民完全信赖政府)。
本当に間違いだと言い切れますか(能断言真是错了吗?)。
37名詞の|活用語連体形+くせに 明明~~~却~~~ 尽管~~~可是~~~。
“くせに”比“のに”含有更强的责怪和蔑视语气。一般用于伙伴之间的会话,不用于郑重谈话和书面语。后句内容假如不需明言可以省略。
(四P353)
例:子供のくせに、大人のような口調で話している(明明是个孩子却用大人的口吻说话)。
返事をすぐくれると約束したくせに、三ヶ月たってもくらない(说好马上给答复的,可是三个月都过去了,还没有答复)。
38用言連体形+くらい|ぐらい|くらいだ|ぐらいだ 表示程度
例:この問題は子供でもできるくらい簡単です(这个问题简单的连小孩子都会)。
周りがうるさくて、声が聞こえないぐらいだ(周围吵的连说话声都听不清)。
39体言|形容詞語幹|形容動詞語幹|動詞連用形+げ~~~ ~~~的样子,好像~~
表示某种神情样子情形感觉。
例:希望のものが手に入り、満足げに帰っていった(的到了想要的东西,心满意足的回去了)。
彼女はとても仲の良い友達に死なれてから、いつも悲しげな顔をしている。(她自从最好的朋友去世以后,总是神情悲伤)
用ありげに近づく(像有事的样子走了进来)。
40こそ 接在需要强调地词下面加强其语义和语气。 “才是”,“才能”
例:苦しい時にこそ。其の人の実力が試しされます(只有在艰苦的时候才能看出一个人的能力)。
太陽こそはあらゆる生命の源泉なのである(太阳才是一切生命的真正源泉)。
41~~~ことか 别提有多~~~了。
例:先生のやさしい一言がどれほど嬉しかったことか(老师得一句亲切关怀,曾令我多么高兴啊)。
42用言連体形+ことから “因为”“从~~~来看”“由此” 表示判断
例:だれも英語が分からないことから、少しは分かる私が通訳をすることになった
(因为谁多不会英语,所以就由多少懂一点的我来做翻译。)。
たくさんの人が集まっていることから、何か事件が起こったと感じた。
(从许多人聚集在一起来看,感到发生了什么事故)
カモメが翼を動かさないで飛ぶことから、グライダーを考え出した。
(有人从海鸥不拍打翅膀就能飞翔中受到启发,由此是基础了滑翔机)
43 用言連体形現在式+ことだ 应该,最好
例:やはり自分でやることだ(最好还是自己做)。
健康になりたいなら、毎日運動することだ(要想身体健康就应该|要每天运动)。
44 ~~~ことだから 因为~~~一定~~~
例:「田中さんが病気らしいよ」“山田好像病了”
「元気な彼のことだから、すぐ治るでしょう」“因为他一向身体还好,所以很快就会痊愈吧”
45用言連体形+ことなく 不~~~
例:彼は朝早くから夜遅くまで、休むことなく活動しつづけた。
(他从清早起来就没休息一直忙到深夜)
46用言連体形+ことに|ことには “令人~~~的是~~”
多接“驚く?困る?不思議?残念?嬉しい”等的词
例:残念なことに、君は一緒に行けないのだ。(遗憾的事,你不能一起去)
嬉しいことに(令人高兴的是)
驚いたことに?彼は10歳で作曲を始めたのだという。
(令人吃惊的是据说他10岁就开始作曲了)。
47用言連体形+ことになっている|こととなっている “按规定”
表示客观规定的存续。
例:日本に来た留学生は、最初の三ヶ月はアルバイトはできないことになっている。
“按规定来日留学生在最初的三个月不能打工”
48動詞連体形+ことはない 不必~~~
例:今度のテストは簡単ですから、心配することはないよ(这次测验很简单,不必担心)。
49体言の|動詞連体形+際|際に|際は ~~~时。~~~之际
例:お別れの際に申し上げたいことがあります(在此非别之际,有话和你讲)。
これは田中先生が国へ帰る際に私にくれた中日大辞典だ。
(这是田中老师回国时给我的《中日大辞典》)。
50~~~最中に|最中だ “正在~~~的时候”“正在~~~中”
例:授業の最中にポケットベルが鳴って、皆びっくりした。
(正在上课的时候呼机响了,大家吓了一跳)。
雨が降っている最中に(正在下雨的时候)。
51~~~さえ|でさえ 副助詞です、体言?副詞?助詞?活用語連体形に付きます。“でさえ”可作为一个固定的提示性副词使用,相当于“で
も”但语气更重。
例:平仮名さえ書けない(连平假名都不会写)。
温厚なあの人でさえ怒った(就连温文尔雅的他也发怒了)。
自分の名前さえ書けない(甚至连自己的名字都不会写)
52体言|形容詞連用形|断定助動詞で+さえあれば 只要~~~就~~~
例:これさえあれば、ほかには何にも要りません(只要有了这个,别的就什么也不需要了)。
品がよくさえあれば、どんどん売れる(只要东西好,就能畅销)。
金属でさえあればいい(只要使金属就行)。
53 動詞連用形さえすれば 只要~~~就~~~
例:あの二人は会いさえすれば、きっとけんかだ(那俩人,只要见面就吵架)。
54 体言さえ+用言仮定形ば 只要~~~就~~~
例:あなたさえ側にいてくれれば、私は満足です(只要有你在我身边,我就知足了)。
天気さえよければ、旅行に行く(只要天气好就去旅游)。
体が丈夫でさえあればよい(只要身体健康就好)。
55動詞未然形+ざるを得ない|ざるをえない 不得不~~~
例:生活のためには、いやな仕事でも引き受けざるを得ない(为了生活,即使是讨厌的工作也不能不干)。
57名詞|動詞終止形+しかない 只有;只能;只好
例:今日、百円しかないから、映画を見に行くことはできません。
(今天只有100日元,所以不能不看电影了)。
誰も助けてくれないから、もう一人で頑張るしかない(没人帮我,我只能以个人奋斗)。
暇がないから、断るしかない(因为没有时间所以只好拒绝了)。
58動詞連用形+次第(しだい) 一~~~就(立即)~~~
例:向こうに着き次第、電話をかけます(我一到那边就打电话)。
59 名詞|動詞連用形+次第だ|次第で|次第では 全凭,要看~~~而定
例:世間に難事はなく、ただ心がけ次第だ(世上无难事,只怕有心人)。
行くかどうかは、お天気次第です(去不去要看天气情况而定)。
地獄(じごく)の沙汰(さた)も金次第だ(有钱能使鬼推磨)。
今忙しいが、その仕事、条件次第では引き受けないこともない
(现在我很忙,但是只要条件合适,也并不是不能接受那份工作)
60 ~~上|上は|上も 在~~~上
例:制度上不可能だ(在制度上是不可能的|从规定来说是不可能的)
「いじめ」が教育上の大問題になっているのは日本だけではないらしい。
(“欺负”成为教育上的一大问题,好像不只日本如此)
61動詞未然形+ずにはいられない|ないにはいられない “不能不”“怎能不”
表示动作的主体在心情上不能不~~~
例:私はそれを聞くたびに、彼のことを思い出さずにはいられないのである。
(每当我听到那件事就不能不想起他来)
62体言の|用言連体形+せいだ|せいで 因为,是因为(用于不好的结果)
例:お前のせいで、僕はひどい目にあったのよ(都是因为你我才倒了大霉)。
私は薄着(うすぎ)をしているせいでしょうか少し寒気(さむけ)がしますね。
(我感到有点冷,可能是因为穿少了吧。)
63体言の|用言連体形+せいか 也许是因为~~~(的缘故)吧(用于不好的结果)
例:覚えが悪いせいか、なかなか思い出せない(也许是因为记性不好吧,我怎么也想不起来了)。
64 体言|用言連体形+だけあって 不愧是
例:イタリアで修業しただけあって、彼らの料理はなかなかうまい。
(他不愧是在意大利学习过,意大利菜很拿手)
65体言|用言連体形+だけに 正因为~~~所以
例:値段が高いだけに物もいいです(正因为价格高,所以东西也好)。
66動詞連体形+だけの “足够的”,“所有的” 表示程度
例:あるだけの金は全部使い果たした(所有的钱都用完了)。
一年食べられるだけの食糧は貯えてある(たくわえてある)。
(储备这足够吃一年的粮食)
できるだけ努力する(尽量努力)。
67たとえ~~~体言|用言連用形+ても(でも) 即使~~~也~~~
例:たとえ親が反対しても彼女と結婚する(即使是父母反对,我也要和她结婚)。
68~~~たところ~~~ ①~~~結果~~~ 连接两个并存的事项,表示后项是前项的结果,前项是后项的契机。相当于“たら”的部分用
法。②“可是”“却”后项往往是与自己的意愿相反的事情③“刚~~”
例:組長に相談したところ、彼は大賛成した(我与组长商量了一下,结果他也非常赞成)。
わざわざ行ったところ、留守でした。(我特意去了,可是他却不在家)
帰ってきたところだ。(刚回来)
69連体詞その|動詞過去式た+とたん(とたんに) “刚一~~~就”
表示就在那一瞬间发生了什么什么事情
例:バスを降りたとたん、転んで倒れた(刚下公共汽车就跌到了)。
立ち上がったとたんに頭をぶつけた(刚一站起来就碰了头)
70体言の|動詞連体形+たび(たびに)“每次~~都”
例:この写真を見るたびに、なくなった友達のことを思い出す。
(每次看到这张照片我都回想起去世的朋友)。
71名詞だらけ “满,净,全”
例:家中(いえじゅう)ゴミだらけだ(家中满是垃圾)。
間違いだらけの作文(净是错误的作文|错误连篇的作文)。埃(ほこり)
だらけ(净是灰尘)。怪我をして血だらけになった(受了伤,浑身是血)。
72名詞の|動詞終止形+ついでに “顺便”
例:散歩のついでに手紙を出してきた(去散步顺便把信寄出去了)。
スーパーへ行くついでに、あの雑誌を買ってきてください。
(去超市时请顺便把那本杂志买回来)。
73~~っけ ①表示询问确认已经遗忘了的事情
②表示回忆起某件事,特别用来表示怀念过去的某件事。(三P262)
例:あの人は誰だっけ。(那个人是谁来着?)
ああ、いけない、今日の午後、会議があったっけ。すっかり忘れていた。
(啊,糟了,今天下午有个会,我忘的干干净净了)
学生時代、よくあの喫茶店で一緒に飲んだっけ。
(学生时代我们常常一起在拿加咖啡店喝咖啡)
74動詞連用形っこない “决不会~~”“根本不会~~”
例:そんなことは子供にできっこない。(那种事情小孩子根本不会做)
75動詞連用形+つつ “一边~~一边”“一面~~一面” 是文章用語。
例:歩きつつ新聞を読む(一边走,一边看报纸)
76動詞連用形+つつも|つつ 虽然~~但是 是文章用語
例:体に悪いと知りつつも、タバコを吸う。(虽然知道对身体不好,可还是吸烟)
77 動詞、助動詞連用形+つつある “正在~~” 表示正在进行
例:彼女の考え方は変わりつつある。他的想法正在发生变化。
78 ~~っぽい “好~~ ”“容易~~” 表示具有某种气质
例:部長は怒りっぽい性格だから、気をつけて話しなさい。
忘れっぽい
79 動詞連用形+て以来(ていらい) 自~~~以来
例:入社して以来、一日休んだことがない。(自进公司以来一天也没休息过)
80 ~~てからでないと~~ない|~~てからでなければ~~ない
“没~~之前不~~” “如果不是~~~之后”
例:おいしいかどうかは食べてからでないと分からない。(是否好吃,没吃之前是不知道的)
6歳になってからでなければ、小学校に入学できません。(6岁之前不能进入小学读书)
81用言連用形+てしょうがない “~~得不得了”“~~得没办法”
例:一人の生活は寂しくてしょうがない。(一个人的生活寂寞的不得了)
うちのおふくろ、うるさくてしょうがない。(我老妈唠唠叨叨的,都快把人烦死了)
82用言連体形|形容動詞語幹+てたまらない
“~~~得不得了”“~~得受不了” 表示程度严重。
例:胃が痛くてたまらない。(胃疼得不得了)
母の病気が心配でたまらない。(非常惦记母亲的病)
83 ~~ということだ。①“据说~~” 接在简体句后面,表示传闻。这种表达方式直接引用某特定人物的话的感觉很强。文章中常用「とのこ
とだ」 (三P126)②“就是说~~”“意思是~~”=という意味だ
例:社長は今日はご出勤にはならないということです。(据说经理今天不上班)
石油の価格は近いうちにあがるとのことです。(据说石油价格近期会上涨)
指輪を返したのは、つまり私と結婚しないということだ。(把戒指还给我也就是说不想和我结婚)
84 ~~~というと|といえば|といったら~~ “提起”“说起” 表示提起话题
例:外国語を習うには、どうすればいいかというと、まずよく外国語を話すことです.
(要说如何学外语,我认为首先要经常用外语说话)
紅葉(もみじ)といえば日光(にっこう)。(说起红叶,还是日光的好。)
85 ~~~というものだ。 这才真正是~~~
例:やれやれ、これで助かったというものだ(哎呀,可算得救了)。
試験に成功したことは誠におめでたい話で、まったく努力した甲斐があったということだ。(试验成功这实在是可喜的事,真是没有白
努力)。
86 ~~というものではない|というものでもない “并不是~~”“也并不是~~”
例:仕事が大事だからといって、仕事さえしていればいいというものではない
(虽说工作中要,但也并不是只做工作就行。)
親が頭がいいから、子供も必ず頭がいいというものではない
(并不是因为父母聪明,孩子就一定聪明)
87 ~~~というより 与其说~~~
例:この料理は日本風というより、中華風なんじゃないの。
(这个菜与其说是日本风味,不如说更接近中国风味)
88 ~~~といっても “虽然说~~~”“说是~~但~~”
例:日本語ができるといっても、小説が読めるほどではありません。
(虽然说是会日语也没有达到看懂小说的程度)
昔と言っても、そう昔のことではないが、こんなことがあった。
(说是从前,其实也不算太遥远,曾有这么一件事。)
89 体言の|動詞連体形+とおり “正如~~”“按照~~~”
例:昨日は天気予報のとおり、雨だった。(正如天气预报所说,昨天下了雨)
代表団は予定どおり、東京に到着した。(代表团按照预定计划抵达了东京)
90 用言連体形|体言+どころか “别说~~就连~~~也~~”“不仅不~~~反而~~”
例:漢字どころか、平仮名も書けない(别说汉子,就连平假名也不会写)。
各类法律都制定出来了,但是事端不仅没有减少反而再增加。
91 91体言|用言連体形+どころではない|どころじゃない
“岂止”“远非”“哪能”(三P374)
例:海は冷たかったどころじゃありません。まるで氷のようでした。
(海水岂止是冷,简直就像冰)
そんなに忙しいのに、何を言っているのですか。今はそれどころじゃないよ。
(这样忙,你在说什么呀!现在不是这种时候)
「給料が安いんだってね。月、十二万円ぐらい?」
(说工资低,一个月有12万日元左右吧)
「十二万どころじゃないよ。」“哪由12万”
92 动词进行时+ところに “正当~~” 强调的是时间点
例:私が先生と相談しているところに、友達が尋ねてきました。
93 動詞連体形|動詞ている+ところへ 正当~~时,强调的是“ちょうどその時”
例:風呂に入っているところへ、電話がかかってきた。(郑洗澡时,来了电话)
出かけようとしているところへお客さんが来ました。(刚要出门时,来了客人)
店へ入ったところへ、彼女がやって来た。(我刚走进铺子里,她来了。)
94 ~~~ところを ①用言連体形+ところを “本应~~可是~~”表示转折 ②動詞連体形|動詞連用形ているところを “正在~~~的时候~~~
而” 强调的是在这个过程范围中
例:お忙しいところをお見送りいただき、どうもありがとうございます。
(在您很忙的时候特意来送我,谢谢您)
勉強しているところを写真に撮られた。(正在学习的时候被照了相)
二人で行けたすむところをなんで無愛想なおれへ口へかけたのだろう。
(两个人去不就行了吗?何必来找我这个不讨人喜欢的呢。)
95 ~~~としたら|とすれば “假如~~”“假设~~”
例:もし、ここに1億円あるとしたら、どうする。
(要是|假如这儿有一万日元,你打算怎么办)
一時間に5千ダース生産できるとすれば、8時間でいくら生産できるか。
(架设一小时能生产5千打的话,8小时能生产多少?)
96 用言終止形+としても 即使~~~也~~
例:買うとしても、一番安いのしか買えない。(即使买,也只能买最便宜的。)
97 名詞として|としては “作为~~~”
例:私は留学生として日本にやってきました。(我作为留学生来到了日本)
私個人としては、そのことに反対だ。(作为我个人我反对那件事)
98 体言|用言終止形+とともに “和~~~一起”“随着~~~”
例:父と共に帰りました。(和父亲一起回去了)
年をとると共に、体が弱ってきたようだ。(随着年龄的增长,身体似乎也衰弱了)
99 動詞未然形+ないことには “如果不~~~”
例:努力しないことには、成功するはずがない。(如果不努力的话就不可能成功)
100 用言未然形+ないことはない|ないこともない “也并不是不~~~”“并非不~~~”
例:映画が見たくないこともないけど、忙しくて、時間がないんだ。
(也并不是不想看电影,只是太忙,没有时间。)
101 用言未然形+ないではいられない “不能不~~”“不由得~~”
表示动作的主体在心情上不能不|不由得~~~
例:それを聞いたら、心配しないではいられなくなりますよ。(一听这话我不能不担心啊)
悲しさのあまり彼女は泣かないではいられなかった。
(她因过于悲伤不由得哭了|情不自禁得哭了)
102 動詞?助動詞連用形|形容詞終止形|名詞?形容動詞語幹?副詞+ながら
“虽然~~却~~” 表示转折
例:中国人でありながら、中国の歴史を全く知らない。
(虽然是中国人却一点也不了解中国的历史)
注意していながら、間違えてまいりました。(虽然注意了但还是出了差错)
彼の助言は少ないながら、的確だ。(他的劝言虽然没有几句,但却很适当)
このカメラが小型ながら、よく写る。(这个相机虽小却很好用)
103 ~~~なんか “なんか”是“など的口语形式
例:テレビなんか見たくありません。(电视之类我可不想看)
あの店では、薬のほかにジュースなんか売っている。
(那家商店除了卖药之外,还卖果汁等东西。)
104 ~~~なんて “~~~什么的”“~~~之类” (表示出意外轻视)
例:勉強なんていやだ。(我讨厌学习)
私は田中なんて学生は知りません。(我可不认识叫什么田中的学生)
よく考えもしないで分からないなんていうのはいけないことだ。
(不好好考虑一下就说什么不知道这可不好)
105 体言|動詞連体形+にあたって(にあたり)“当~~~之时”
例:開会にあたり、一言ご挨拶申し上げます。(在开会之际,我来讲几句|请允许我讲几句)
大学を卒業するに当たって、お世話になった先生方に記念品を贈ることにした。
(当大学毕业时,决定向关怀我们的老师们赠送纪念品)
106 体言+において|においては|においても|における “在~~~”
表示动作作用进行的场所场合范围。是书面语,在口语中一般用“で”(四P103)
例:1964年のオリンピックは東京において行われた。
(1964年的奥林匹克运动会是在东京举行的)
それは日本社会においては、建前っていうもんだよ。(这个在日本社会里称之为原则)
このテープレコーダは価格も安いし、性能の点においても申し分がない。
(这个磁带录音机不仅价格便宜,在性能上也无可非议)
日本におけるマスコミは非常にすばらしいものだ(在日本大众传媒是非常发达的。)
107 体言に応じて “按照~~”“根据~~~”“随着~~~”
例:お客の注文に応じて作っている。(按照客人们的定购要求来制作)
収入に応じて支出を考えなければならない。(必须根据收入来考虑支出)
科学の発達に応じて多くの新しい語が生まれました。
(随着科学的发展出现了很多新词汇)
108 ~~~にかかわらず “不论|不管~~~”
表示不受某种情况的约束。此时一般接在“一对反义词”|“体言のいかん”的后面。(四P238)
例:昼夜にかかわらず仕事を続けている。(无论白天还是黑夜都继续工作)
好む好まないにかかわらず、やらなければならない。(无论喜欢或不喜欢,都必须干)
難しいやさしいにかかわらず、一度やってみるつもりだ。
(无论难易如何,我都打算是一下)
天候のいかんにかかわらず、運動会を行う。(无论天体好坏,运动会都照常进行)
109 ~~~にもかかわらず“尽管~~~但是~~~”“虽然~~~但是~~” 简体句(体言或形容動詞谓语句时用である)|体言|形容動詞語幹|
活用語連体形+にもかかわらず (四P238)
例:彼はまだ三十五歳の若さだ、それにもかかわらず、大学教授になった。
(他还很年轻,只有30岁,尽管如此,已经是大学教授了。)
周りが静か(なの)にもかかわらず、いつもと違う場所なので、ちっとも眠れない。
(尽管周围很安静,可是因为换了个地方,所以一点也睡不着)
ひどい災害にもかかわらず豊作をかちとった。
(尽管遇到了严重的灾害。可是仍然获得了丰收)
110 ~~~にかかわる “与~~~有关”“关系到~~~”“涉及到~~~”(四P169)
例:それは私の名誉にかかわる問題ですから、気にしないわけにはいかないでしょう。
(那个问题关系到我的名誉,我不可能不介意吧。)
交通だの住宅だの、国民の生活にかかわる問題はさきに解決しなければならない。
(交通啦,住房啦,和人民参或有关的问题要首先解决。)
今度の取引は工場が生きていけるかどうかにかかわるのだから、、努力するよりほかない。(这笔买卖关系倒工厂的存亡,所以只有努
力干好。)
111 ~~~にかかわりなく|にはかかわりなく “与~~~无关”;“不论~~都”
例:会社での地位にかかわりなく~~~(与在公司里的地位无关~~~)
国家はその大小にかかわりなく、すべて平等であるべきだ。
(国家不论大小都应一律平等)
112 体言+に限って|に限り(にかぎって|にかぎり) “只有~~”“偏偏~~”
例:その日に限って帰りが早かった。(只有那天回去得比较早)
今日に限り、黙りにくっている。(偏偏今天一句话也不说)
113 体言+に限らず(にかぎらず)“不仅|不但~~而且~~”“不论~~都~~~” 表示不仅A如此,B也如此。都如此。
例:男性に限らず、女性もその歌手が好きだ。(不仅是男性,连女性也喜欢那个歌手)
何事に限らず、公明正大でなければならない。(不论什么事都必须光明正大)
114 体言+にかけては|かけても “在~~~方面”“论~~~的话”(多表示好的方面)
例:料理にかけては、彼の右に出る者はいない(论烹饪,没人能比得上他)
115 体言+に代わって(にかわって)|に代わり(にかわり) “代替~~”
例:会長に代わって挨拶する。(代替会长致词)
一同に代わってお礼を言う。(代表大家致谢)
116 体言+に関して|に関しては|に関しても|に関する “关于~~”“有关~~”
例:そのことに関しては、私は何にも知らない。(关于那件事,我一无所知。)
水害に関する情報。(有关水灾的消息。)
117 体言|用言連体形+に決まっている(にきまっている)“一定~~”“必定~~”
表示强烈的断定或确信无疑的推测。
例:あのチームが勝つに決まっている。(那个对一定赢)
生きているものはいつか死ぬに決まっている。(活着的东西总有一天会死的)
118 ~~~に比べて “与~~~~相比”“比起~~来~~”
例:若者に比べて、頭の回転が遅い。(比起年轻人来,思维迟钝。)
119 ~~~に加えて|に加え “加上~~”
例:人件費(じんけんひ)の高騰(こうとう)に加え(くわえ)円高(えんだか)が打撃(だげき)となって、倒産(とうさん)した。(
人工费暴涨,加上日元汇率上升的打击,破产了)。
120 体言+にこたえる|にこたえて|にこたえ ①“符合~~”“响应~~”“应~~”表示不辜负某种希望要求或某种强烈的感受。②“深感~~
”表示强烈的打击影响感应
例:国民の期待に応える政策だ。(符合国民要求的政策。)
招きに応えて出席する。(应邀出席。)
寒さが体に応える。(严寒彻骨。)
121 体言+際して “在~~~之际”“当~~~的时候”
例:卒業に際して、一言お祝いを申し上げます。(在大家毕业之际,我说几句仅表祝贺)
122 ~~~に先立って|に先立ち|に先立つ “先于~~~”“在~~~前”
例:出発に先立って開幕式がある。(出发前有开幕仪式。)
123 動詞終止形+にしたがって “随着~~~”
例:国が豊かになるにしたがって、私たちの生活も豊かになった。
(随着国家的富强,我们的生活也富裕起来了。)
124 ~~~にしても |にしたら|にすれば“即使~~也~~”“就~~~来说”“如果作为~~”
例:あまりかからないにしても、10万円ぐらいはかかりでしょう。
(即使花得不多,也需要10万日元左右吧。)
あの人の体にしたら~~~ (就他的身体来说~~)
彼を仲間にすればいいだろう。(拉他入伙总可以吧。)
125 体言|用言連体形+にしては “作为~~~”“按~~~来说”表示后项提出的事实与前项设定的标准不相吻合。
例:歌手にしては歌が下手だ。(作为歌手来说歌唱的不好。)
この辺りは都心にしては静かな所だ。(按市中心来说这一带是挺静的。)
126 体言|用言終止形+にしろ|にせよ “即使~~~也~~~”
例:忙しかったにしろ、電話を掛けるくらいの時間はあったろう。
“即使再忙,打个电话的时间总该有吧。”
127 体言|用言連体形+にすぎない “只不过是~~~”
例:それはただ口実(こうじつ)に過ぎない。(那只不过是借口。)
128 ~~~に相違ない “一定~~”“肯定~~”
例:彼は国へ帰ったに相違ない。(他肯定回国了。)
129 体言+に沿って|に沿い|に沿う|に沿った “沿着~~~”“顺着~~~”“按照~~~”
例:この方針に沿って交渉する。(按照这个方针来交涉。)
130 体言+に対して|に対し|に対しては|に対しても|に対する “对~~~”
例:目上の人に対しては、敬語を使うべきだ。(对长者应该是用敬语。)
131 体言|用言終止形+に違いない “肯定~~”“一定~~”
例:これは陳さんの忘れ物に違いない。(这肯定是小陈遗忘的东西。)
132 体言+について “关于~~~”“就~~~”
例:料理について私は全然わかりません。(关于烹饪我是一窍不通。)
陳さんは日本の近代文学について卒業論文を書いています。
(小陈就日本近代文学些毕业论文。)
133 体言|動詞連体形+につき “因~~~”
例:病気につき、今日の会議に参加できません。(因病不能参加今天的会议。)
134 体言|動詞終止形+につけて|につけては|につけても “每逢|每当~~就~~”
例:梅が咲くにつけて、その花が好きだった母を思い出す。
(每当梅花开放时,我就想起喜欢梅花的母亲。)
135 動詞終止形+につれて “随着~~~”“伴随~~”
(表示一方发生变化,另一方随之发生相当程度的变化)
例:月日が経つにつれて、いやなことは忘れてしまった。
(随着岁月的流失,不开心的事情渐渐忘却了。)
136 ~~~にとって(は) “对~~~来说”「~~~を中心にして考えれば」的意思。
例:人間にとって一番大切なものは友情です。(对于人来说最重要的是友情。)
137 名詞|動詞連体形+に伴って “随着~~~”“伴随~~~”
例:自動車の数が増えるに伴って事故も多くなった。(随着汽车数量的增加,事故也增多了。)
138 体言+に反して “违反~~`”“与~~~相反”
例:道徳に反する行為。(违反道德的行为)
太郎の不勉強に反して、次郎は勉強家だ。(与太郎的不爱学习相反,次郎很用功。)
139 体言|動詞連体形+にほかならない “无非是~~”“不外乎~~~”“正是~~”
例:今回の計画の失敗は推進委員会の責任にほかならない。
(这次计划的失败无非是推进委员会的责任。)
140 体言+に基づいて|に基づく “基于~~”“按照~~”“根据~~~”
例:法律に基づいて処理する。(按法律条文处理。)
141 体言+によって|による “由于~~~”“根据~~~”“因~~~的不同而~~~”“通过”
体言+によっては:强调的是个例。体言+よって:讲述的是一般情况。(四P171)
国によっては豚肉を食べないといったこともあります(有的国家不吃肉)。个例
国によって生活習慣も違います(国家不同生活习惯也不同)。一般情况
例:火事はタバコの不始末によるものです。(火灾是由于吸烟不注意引起的)
成績によって、クラスを分けます。(根据成绩来划分班级。)
習慣は国によって違います。(习惯因国家的不同而不同)
私はラジオによって英語を習います。(我通过收音机学习英语。)
142 体言+にわたって|にわたる|にわたり “历经~~~”“(范围)涉及到~~~”
例:手術は10時間にわたって行われた。(手术进行了10个小时。)
10年間にわたる研究が成功した。(历经十年的研究终于成功了。)
143 体言+ぬきで|ぬきでは|ぬきに|ぬきには “排去~~~”“出去~~~”“不包括~~”
例:お世辞ぬきで、本当に日本語が上手だ。(不是吹捧你,你日语真棒。)
144 動詞連用形+ぬく “~~~最后|到底”表示做到最后,(最後までやる)
例:昨日の宿題は多くて難しかったですが、最後までやりぬきました。
(昨天的作业又多又难,可是我坐到了最后。)
頑張りぬく。(坚持到底。)
145 体言の|動詞過去式連体形+すえ(に)“~~~結果”
例:いろいろ考えた末に、あの人と結婚することにした。
(经过多方考虑,最后决定和他结婚)
相談のすえ、春休みを四月十日に改めました。(商量结果将春假改为4月10日)
146 体言|用言連体形+のみならず “不仅~~~”
例:君のみならず、僕もそうだ。(不仅是你,我也一样。)
勉強が足りないのみならず、態度も悪い。(他不仅不够用功而且态度也不好。)
147 ~~~のもとに|もとで“在~~~之下”“在~~~条件下” 表示前提条件。
例:先生方のご協力のもとで、試験は順調に行われました。
(在老师们的帮助下,考试尽心的很顺利。)
148 ~~~ば~~~ほど “越~~~越~~~”
例:読めば読むほど俳句のおもしろさが分かります。(越读越能体味出俳句的趣味。)
149 体言|用言連体形+ばかりか|ばかりでなく
“不用说~~~就连~~~”“不仅~~~而且~~~”
例:あの人は漢字ばかりか、平仮名も片仮名も書けない.
(他不用说汉子,就连平假名片假名都不会写。)
李さんは日本語が話せるばかりか、英語も上手だよ。
(小李不仅不说日语,英语也很好。)
肉ばかりでなく、野菜も食べなければ、健康によくありません。
(不仅不吃肉,连蔬菜也不吃的话,不利于健康。)
150 用言連体形+ばかりに “正因为~~~才~~~”“只因~~才~~~”
表示因为~~~而引起的不尽如人意的结果,讲话人常有遗憾后悔的心情。
例:医者であるばかりに、日曜日でも働かなければならない。
(只因为是医生,所以才在星期天也必须工作。)
151 体言+はともかく|はともかくとして “~~~暂且不谈”“~~~先不管”
例:ほかの人はともかく、君にだけは僕の気持ちを分ってもらいたい。
(别人暂且不谈,我只求你来理解我的心情。)
152 体言+はもとより|はもちろん “不用说~~”“当然~~”表示前项程度较轻,自不待言,后项也不在话下。“~~~はもちろん”主观
性较强,可用于口语书面语。“~~~はもとより”多用于书面语。
例:彼女は英語はもとより、フランス語もできろ。(不用说英语,他连法语也会说。)
153 動詞?形容詞の基本形|形容動詞の連体形+反面(半面)“另一方面”多用于对同一事物所具有的两个不同侧面的叙述。
例:輸送に便利な反面、時間がかかる。(运输方便,但花费时间。)
一定(いってい)の利益(りえき)が見込める(みこめる)反面、大きな損失を招く恐れもある。(虽然估计会有一定的利益,但另一
方面也担心会蒙受巨大的损失。)
154 動詞基本形|サ変動詞語幹す+べきだ|べきではない。“应该”|“ 不应该”多用于讲话人强调自己的主张建议。 它强调的是个人的
意见。
例:バスの中では、若者は年寄りに席を譲るべきだ。(在公共汽车里,年轻人应该给老年人让座。)
親に対して、こんな失礼なことを言うべきではない。(不该对父母说这种无理的话。)
155 体言の|用言連体形+ほか(は)ない “只有”“只好”
例:どうもすみませんというほかはない。(只有说声对不起。)
あきらめるほかない。(只好死心。)
156 体言|用言終止形+ほど 表示状态的程度。“到了~~~的地步”“~~~得~~”
例:新聞が読めないほど暗くなった。(暗的不能看报)。
寂しくて泣きたいほどだ.(寂寞的简直想哭。)
157 ~~~ほど~~~ない “不比~~~”“比~~~不~~” 表示否定比较。
例:今年は去年ほど暑くない。(今年不比去年热。)
158 体言|用言終止形+ほど “越~~~越~~~”
例:年を取るほど、物覚えが悪くなる。(年纪越大,记忆力越差。)
159 まい 是“否定推量助動詞”,表示①否定の推量=“ないだろう” “恐怕不~~”②否定の意志=“う|ようとする” 五段動詞?助動
詞ますの終止形|ほかの動詞の未然形+まい
例:この様子では、明日も晴れるまい。(照这个样子,明天恐怕也不会晴。)
タバコはもう吸うまい。(我决心不再抽烟了。)
~~~まいか 表示否定推测的疑问或反问。
帰国したのではあるまいか。(他不是回国了吧。|他不是回国了吗?)
~~~う|ようか~~~まいか “是~~~呢,还是不~~~呢”
帰ろうか帰るまいかと考える。(考虑是回去呢,还是不会去呢。)
160 体言+向きだ|向きに|向きの “适合~~~的” 表示客观事物适合什么。
例:子供向きの番組“适合儿童看的节目。”
この料理は日本人向きだ。(这个菜是适合日本人口味的。)
161 体言+向けだ|向けに|向けの “面向~~~” 表示主观能动以什么为对象干某事
例:若者向けに服装をデザインする。(面向年轻人设计服装。)
留学生向けに雑誌を編集する。(面向留学生编辑杂志。)
162 体言も+用言仮定形ば|たら+体言も(~~~も~~~ば|たら~~~も)“即~~~又”
例:お金もなければ、暇もない。(即没钱,有没时间。)
163 体言+もかまわず “不管~~~”“不理睬~~”“不介意~~”
例:人目もかまわずキスしている。(旁若无人的接吻。)
所もかまわず大きい声を出す人だ。(是个不分场所大声嚷嚷的人。)
164 活用語終止形+もの “もの”:終助詞、 以抱怨或不满的口气说明或辩解某种原因理由。多为女性或儿童使用,口语中也做“もん”
例:だって知らなかったもの。(可我不知道嘛!)
私の言ったこと聞かないもの。(我说的也不听啊。)
165 用言連体形+ものがある “有~~~的东西”“有~~~的成分”
例:彼の音楽の才能にはすばらしいものがある。(他的音乐才能有很了不起的地方。)
166 活用語連体形+ものか “哪能|岂能|怎能~~~呢?” 男子也可用“もんか” 表示强烈的反问。(三P125)
例:一組に負けるものか。(岂能输给一班呢!)
167 動詞?活用語連体形+ものだ|ものではない。“应该”“理应”“自然”|“不该”“不要”(三P214)表示一般的社会伦理习惯和必
然的结果。否定表示:对违反道理常识习惯的事给予以告诫或劝说。
例:年を取ると目が悪くなるものだ。(年纪大了,眼睛自然就不好使用了。)
人のお宅へ伺う時は、電話をしてから行くものだ。
(到别人家拜访时,应该先打电话然后再去。)
いくらうまくても、そんなにたくさん食べるものではない
一度太ってしまうと、そう簡単にやせられるものではない。
人の悪口を言うもんじゃない。
168 用言連体形+ものだから|ものですから 表示主观强调原因理由,往往带有辩解的语气。与もので意义相同,但是比它更强调主观认定
的原因。ものだから在口语中也可以讲成もんだから。(相关内容见三P215 四P348)
例:出がけにお客さんがきたものだから(是因为除去的时候来了客人)。
雨がひどいものだから、どうしても出られない(是因为雨太大,怎么也出不了门)。
もので表示确定顺接条件,多用于解释说明(甚至辩白)产生某项结果的原因,有比ので语气更强烈的感觉。后项是既成事实,有时也讲成も
んで。
昨夜遅くまで起きていたもので、朝寝坊してしまいました(是因为昨晚睡得太晚了,所以才睡早觉了)。
あまり天気がいいもので?どこかへ出かけたくなった(是因为天气太好了,所以我想起什么起放玩玩)。
区别:名詞の+ことだから:前项或明或暗的点明该名词具有的特征,后项多是根据前项做出的判断推测,前项多是表示人物的有关名词,后
项多“きっと”“どうせ”等呼应。可以翻译为“因为|既然~~~~”,例子见第44条。用言連体形+ものだから:则是主观强调原因理由,往往
带有辩解的语气,后项是既成事实。
169 活用語連体形+ものの “虽然~~~但是~~~”“虽说~~~可是~~~” 表示承认前项是事实,即“それはほんとうだ”但后项却是与前项不
相符的事实。常有“とは思うものの”“とはいうものの”
例:材料を買ったものの、作り方が分からない。
この本を読んだことがあるとはいうものの、何十年も前のことなので、詳しい内容ははっきり覚えていない。
170 ~~~ものなら “如果~~就~~” 推量助動詞う|よう、可能動詞、助動詞の連体形+ものなら
“ものなら”, 有两种用法
1 “可能動詞?助動詞の連体形+ものなら” “万一|假如~~~就~~~” 「假定一种不能实现的事实」万一,假如。例如:①一人で行けるも
のなら、行っててみなさい(你一个人能去的话,你就去一下吧)。②そんなことでいいものなら、誰にでも出来ます(如果那样就行的话,
谁都会做)。③そんなにたくさん食べるものなら食べてごらん(如果你能吃那么多,那你就吃吃看)。
2 “う|よう +ものなら” 「假定一种将导致坏结果的事实」如果````可```前面的“う|よう”即是意志形。例如:①そんなことをしよ
うのもなら、大変だ。(要是干那种事,可了不得)。②嘘をつこうものなら、ただではおかない(如果你要说谎的话,我可轻饶不了你)。
③私に黙って勝手なことをしようものなら、決して許しませんよ(要是背着我随便搞的话,我可决不答应)。
171 ~~~やら~~~やら “~~~啦~~~啦” 表示并列列举两个以上的事物,含有暗示其它的语气。
例:損をしているのやら、得をしているのやら、一向に分かりません(什么赔啦赚了,一点也不知道)。
お花やらお茶やら習う(学习话道啦茶道了等)。
172 動詞連用形+ようがない|ようもない “无法~~”“不能~~~”
例:こんなに壊れては直しようがない(坏成这样子,没法修了)。
言いようもないほど美しい(无法形容的美)。
どうしようもない(毫无办法)。
173 活用語連体形+ように “ように”は比況助動詞“ようだ”の“連用形”です。表示目的,“为了~~”“以便~~~”
例:汽車に間に合うように、早めに出かけた(为了赶上火车,提前出门了)。
遅刻しないように気をつけてください(请注意不要迟到)。
風をよく通るように、もっと窓を開けなさい(请把窗子开的大一点,以便好好透透风)。
174 用言連体形+わけはない|わけがない “不会~~~”“不可能~~~” 表示从道理情理商认为某件事是不可能的。
例:帝国主義の本質は変わるわけはない(帝国主义的本质是不可能改变的)
175 用言連体形+わけだ “当然”“自然” (三P192)表示某事项的成立理所当然,是某种原因导致的自然而然的结果。使句子含有是这
么一种情况这么一种道理的语气。可不必翻译出来。
例:それなら、起こるわけだ。(那样的话当然要生气)
“わけ”と“はず”の区別:
わけ:对某种已经实现的事实所做的解释和判断
はず:在某种根据的基础上所做的推理
例如:彼女は日本に10年もいたから、日本語が上手なわけだ
(她在日本呆了10多年,日语当然好。)
彼女は二本に10年もいたから、日本語が上手なはずだ。
(她在日本已经呆了10多年,日语应该好)
176 ~~~わけではない|わけでもない “并非”“并不是”
例:彼一人が悪いというわけではない(并不是他一个人不好)。
177 ~~~わけにはいかない|わけにもいかない “不能~~`”
例:いくらいやでも、やめるわけにはいかない(无论怎么讨厌也不能辞去不干)。
いくら痩せたくても、何にもたべないわけにはいかない(无论怎么想减肥也不能什么也不吃)。
178 体言の|用言連体形+わりに(は) “虽然~~但是~~”表示比较的程度, 转折关系。表示从前项内容考虑,后项内容出人意料不搭配。
例:この酒は値段のわりにおいしい(这酒不贵却好喝)。
日本は狭いわりに、人口が多い(日本岁让国土狭小,但是人口众多)。
区别:体言|用言連体形+にしては 第125条。在语气上“~~にしては”比“~~~にわりに”更强烈。接続方法も違います。
179 体言+を体言として|とする|とした “把~~~作为”“把~~~当作”
例:社会奉仕を目的とする団体(以服务社会为目的的团体)
田中さんをリーダーとするサークルを作った(成立了以田中为领导的小组)。
180 体言+をきっかけに|きっかけとして|きっかけにして “以~~~为契机”
例:これをきっかけにして話を始めた(以次为契机说了起来)。
両学をきっかけとして、彼女と別れた(以留学为契机,与女友分手了)。
181 体言を機会に|機会として|機械にして “以~~~为機会|开端” “趁着~~~”
例:これを機会にいつまでもご交際をお願いします(希望我们以次为开端永远交往下去)。
株価の暴落を機械として恐慌が起きた(以股票暴跌为起点,发生了恐慌)。
182 体言をこめて “充满~~”“满怀~~~”
例:心をこめて~~~(真心的~~~)
愛をこめて見つめる(充满爱意的注视)
183 ~~~体言+を中心に|中心として|中心にして “以~~~~为中心”
例:あの子を中心にしてまとまった。(以那孩子为中心团结起来了)
城を中心にして町を造った(以城堡为中心建立了城市)。
184 体言を通して “通过~~~”
例:日本人はさまざまな共同点を通して、強い集団意識で結ばれている。
(日本人通过各种共同点以强有力的集团意识结合在一起)
現象を通して本質をつかむ(透过现象抓住本质)。
185 体言+を通じて “通过|利用~~”“在整个~~~期间|范围内”
例:ラジオやテレビを通じて知らせる(通过收音机电视通知)。
兄を通じてお願いしたこと(通过哥哥拜托您的那件事)。
南の国は一年を通じて暖かい。(南部国家一年到头都很温暖)
この仕事は彼の一生を通じてもっとも困難な仕事だった
(这工作是他一生中最艰难的工作)。
テレビは全国を通じて放送されている。(电视面向全国播放)
186 体言|用言終止形+を問わず|は問わず “不问~~”“不管~~”“不论~~”表示后项不受前项情况条件性质等的限制。
例:国はその大小を問わず一律に平等でなければならないと主張しているのである
(我们主张国家不论大小一律平等)
この試合には、年齢を問わず、出れでも出られます。
(这次比赛不问年龄,这都可以参加)
187 体言+を抜きにして|を抜きしてしは|は抜きにして “省去~~~”“不~~”
例:冗談は抜きにして、本当のことはどうなんですか(不开玩笑了,究竟是怎么回事啊?)。
説明を抜きにして、すぐ討論に入ります(不作说明马上进入讨论)。
188 体言+をはじめ|はじめとする “以~~~为首”
例:石川教授をはじめとする研究チーム(以石川教授为首的研究小组)
社長を始めとして、社員全員が式に出席しました
(以社长为首,全体职员都出席了会议)。
189 体言+をめぐって|めぐる “围绕着~~~”
例:国際結婚をめぐる問題が多い(围绕着国际婚姻的问题很多)。
190 体言+をもとに|をもとにして “以~~~为根据”“以~~为基础”
例:20年前の事件をもとにして、小説を書きました(以20年前的时间为根据写了篇小说)。
この記事は二人の学者の対談をもとにして書かれたものです
(这篇报道是以两位学者的谈话为基础写成的)。
位流
例如System中的标准输入流in对象就是一个InputStream类型的实例。在Java程序开始之后,in流对象就会开启
同理OutputStream & 对应的out对象
例:in对象的read()方法一次读取一个字节的数据,读入的数据以int类型返回。所以在使用out对象将数据显示出来时,就是10进制方式
package 输入输出;
import java.io.*;
public class StreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
System.out.print("输入字符:");
System.out.println("输入字符十进制表示:"+System.in.read());
}
catch(IOException e){
e.printStackTrace();
}
}
}
运行结果:
输入字符:A
输入字符十进制表示:65
FileInputStream可以使用read()方法一次读入一个字节,并以int类型返回,或者是使用read()方法时读入至一个byte数组(缓冲区)
例:复制文件
package 输入输出;
import java.io.*;
public class FileStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] fs=new String[2];
fs[0]="D:\\日本語\\二级\\2级语法\\2级语法190.doc";
fs[1]="test.doc";
try{
byte[] buffer=new byte[1024];
//来源文件
FileInputStream fileInputStream=new FileInputStream(new File(fs[0]));
//目的文件
FileOutputStream fileOutputStream=new FileOutputStream(new File(fs[1]));
//available()可取得未读取的数据长度
System.out.println("复制的文件:"+fileInputStream.available()+"字节");
while(true){
if(fileInputStream.available()<1024){
//剩余的数据比1024少,一位一位读出再写入目的文件
int remain=-1;
while((remain=fileInputStream.read())
!=-1){
fileOutputStream.write(remain);
}
break;
}
else{
//从来源文件读取数据至缓冲区
fileInputStream.read(buffer);
//将数组数据写入目的文件
fileOutputStream.write(buffer);
}
}
// 关闭流
fileInputStream.close();
fileOutputStream.close();
System.out.println("复制完成");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("using:java FileStreamDemo src des");
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
FileOutputStream默认会以新建文件的方式来开启流。
如果指定的文件名称已经存在,则原文件会被覆盖
以附加的模式来写入文件:
FileOutputStream fileOutputStream=new FileOutputStream(string,true);
构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时实际上最后是实现InputStream实例
so do BufferedOutputStream
BufferedInputStream的数据成员buf是一个位数组,默认为2048字节
BufferedOutputStream的数据成员buf是一个位数组,默认为512字节。当使用write()方法写入数据时,实际上会先将数据写至buf中,当buf已满时才会实现给定的OutputStream对象的write()方法,将buf数据写至目的地
例:使用BufferedInputStream & BufferedOutputStream实现文件复制
package 输入输出;
import java.io.*;
public class BufferdeStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arg=new String[2];
arg[0]="D:\\za\\code.txt";
arg[1]="test.txt";
try{
byte[] data=new byte[1];
File srcFile=new File(arg[0]);
File desFile=new File(arg[1]);
BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(desFile));
System.out.println("复制文件:"+srcFile.length()+"字节");
while(bufferedInputStream.read(data)!=-1){
bufferedOutputStream.write(data);
}
//将缓冲区中的数据全部写出
bufferedOutputStream.flush();
//关闭流
bufferedInputStream.close();
bufferedOutputStream.close();
System.out.println("复制完成");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("using:java UseFileStream src des");
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
}
例:Member类
package 输入输出;
public class Member {
private String name;
private int age;
public Member(){
}
public Member(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
例:将Member类实例的成员数据写入文件中,并在读入文件数据后,将这些数据还原为Member对象
package 输入输出;
import java.io.*;
public class DataStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Member[] members={
new Member("Justin",90),
new Member("momor",95),
new Member("Bush",88)
};
String[] arg=new String[2];
arg[0]="test.txt";
arg[1]="text.txt";
try{
DataOutputStream dataOutputStream=new DataOutputStream(new FileOutputStream(arg[0]));
for(Member member:members){
//写入UTF
dataOutputStream.writeUTF(member.getName());
//写入int数据
dataOutputStream.writeInt(member.getAge());
}
//读出所有数据至目的地
dataOutputStream.flush();
//关闭流
dataOutputStream.close();
DataInputStream dataInputStream=new DataInputStream(new FileInputStream(arg[0]));
//读出数据并还原为对象
for(int i=0;i<>
//读出UTF字符串
String name=dataInputStream.readUTF();
int score=dataInputStream.readInt();
members[i]=new Member(name,score);
}
//关闭流
dataInputStream.close();
//现实还原后的数据
for(Member member:members){
System.out.printf("%s\t%d%n", member.getName(),member.getAge());
}
}
catch(IOException e){
e.printStackTrace();
}
}
}
例:User类
package 输入输出;
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID=1l;
private String name;
private int number;
public User(){
}
public User(String name,int number){
this.name=name;
this.number=number;
}
public void setName(String name){
this.name=name;
}
public void setNumber(int number){
this.number=number;
}
public String getName(){
return name;
}
public int getNumber(){
return number;
}
}
注意到serialVersionUID,它代表了可序列化对象的版本,如果没有提供这个版本信息,则实现Serializable接口的类会自动依类名称、实现的接口、成员等来产生。如果是自动生成的,则下次更改User类,自动产生的serialVersionUID也会跟着变更,从文件读回对象时若两个对象的serialVersionUID不相同,就会丢出java.io.InvalidClassException。
在写入对象时用writeObject()方法
读出对象时使用readObject()方法,被读出的对象都是以Object的类型返回,所以必须将之转换为对象原来的类型,才能正确的实现被读回的对象
例:存储User对象至文件中,然后再将它读回并还原为User实例
package 输入输出;
import java.io.*;
import java.util.*;
public class ObjectStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arg=new String[2];
arg[0]="test.txt";
//arg[1]="test2.txt";
User[] users={
new User("cater",101),
new User("justin",102)
};
writeObjectToFile(users,arg[0]);
try{
//读取文件数据
users=readObjectsFromFile(arg[0]);
//显示读回的对象
for(User user:users){
System.out.printf("%s\t%d%n",user.getName(),user.getNumber());
}
System.out.println();
users=new User[2];
users[0]=new User("momor",103);
users[1]=new User("becky",104);
//附加新对象至文件
appendObjectsToFile(users,arg[0]);
//读取文件数据
users=readObjectsFromFile(arg[0]);
//显示读回对象
for(User user:users){
System.out.printf("%s\t%d%n", user.getName(),user.getNumber());
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("没有指定文件名");
}
catch(FileNotFoundException e){
e.printStackTrace();
}
}
public static void writeObjectToFile(Object[] objs,String filename){
File file=new File(filename);
try{
ObjectOutputStream objOutputStream=new ObjectOutputStream(new FileOutputStream(file));
for(Object obj:objs){
//将对象写入文件
objOutputStream.writeObject(obj);
}
//关闭流
objOutputStream.close();
}
catch(IOException e){
e.printStackTrace();
}
}
//将制定文件中的对象数据读回
public static User[] readObjectsFromFile(String filename)
throws FileNotFoundException
{
File file=new File(filename);
//如果文件不存在就丢出异常
if(!file.exists())throw new FileNotFoundException();
//使用List先存储读回的对象
List
try{
FileInputStream fileInputStream=new FileInputStream(file);
ObjectInputStream objInputStream=new ObjectInputStream(fileInputStream);
while(fileInputStream.available()>0){
list.add((User)objInputStream.readObject());
}
objInputStream.close();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
User[] users=new User[list.size()];
return list.toArray(users);
}
//将对象附加至指定的文件之后
public static void appendObjectsToFile(Object[] objs,String filename)
throws FileNotFoundException{
File file=new File(filename);
//如果文件不存在则丢出异常
if(!file.exists())throw new FileNotFoundException();
try{
ObjectOutputStream objOutputStream=new ObjectOutputStream(new FileOutputStream(file,true)){
//如果要附加对象至文件后
//必须重新定义这个方法
protected void writeStreamHeader()throws IOException{}
};
for(Object obj:objs){
//将对象写入文件
objOutputStream.writeObject(obj);
}
objOutputStream.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
注意:
在试图将对象附加至一个先前已写入对象的文件时,由于ObjectOutputStream在写入数据时,还会加上一个特别的流头(Stream Heade),所以在读取文件时会检查这个流头。如果一个文件中被多次附加对象,那么该文件中会有多个流头。这样读取检查时就会发现不一致,这会丢出java.io.StreamCorrupedException为了解决这个问题可以重新定义ObjectOutputStream的writeStreamHeader()方法,如果是以附加方式来写入对象,就不写入流头:
ObjectOutputStream objectOutputStream=new ObjectOutputStream(
new FileOutputStream(file,true)){
protected void writeStreamHeader()throws IOException{}
};
若将一个文件分割为数个文件,再将之组合还原为一个文件,SequenceInputStream是首选
SequenceInputStream可以被看做是数个InputStream对象的组合
当一个Input对象的内容读取完毕后,它会读取下一个InputStream对象直到所有的InputStream对象都读取完毕为止
例:将指定文件分割,也可以将分割后的文件还原为一个文件
package 输入输出;
import java.io.*;
import java.util.*;
public class SequenceStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arg=new String[3];
arg[0]="c";
arg[1]="2";
arg[2]="test.txt";
try{
//arg[0]指定分割(s)或连接(c)
switch(arg[0].charAt(0)){
case 's':
//arg[1]:每个分割文件的大小
int size=Integer.parseInt(arg[1]);
//arg[2]:指定要分割文件的名称
seperate(arg[2],size);
break;
case 'c':
//arg[1]指定要被组合的文件个数
int number=Integer.parseInt(arg[1]);
//arg[2]组合后的文件名
concatenate(arg[2],number);
break;
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("using:java UseSequenceStream[-s/-c]"+
"(size/number) filename");
System.out.println("-s:分割文件\n-c:组合文件");
}
catch(IOException e){
e.printStackTrace();
}
}
//分割文件:
public static void seperate(String filename,int size)throws IOException{
FileInputStream fileInputStream=new FileInputStream(new File(filename));
BufferedInputStream bufInputStream=new BufferedInputStream(fileInputStream);
byte[] data=new byte[1];
int count=0;
//还原文件大小及指定分割的大小
//决定要分割为几个文件
if(fileInputStream.available()%size==0)
count=fileInputStream.available()/size;
else
count=fileInputStream.available()/size+1;
//开始进行分割
for(int i=0;i< num="0;" file="new" bufoutputstream="new" num="="> list=new ArrayList
for(int i=0;i< file =" new"> iterator=list.iterator();
//SequenceInputStream需要一个Enumeration对象来构建
Enumeration
public boolean hasMoreElements(){
return iterator.hasNext();
}
public InputStream nextElement(){
return iterator.next();
}
};
//建立SequenceInputStream
//并使用BufferedInputStream
BufferedInputStream bufInputStream=new BufferedInputStream(
new SequenceInputStream(enumation),8192);
BufferedOutputStream bufOutputStream=
new BufferedOutputStream(
new FileOutputStream(filename),8192);
byte[] data=new byte[1];
//读取所有文件数据并写入目的文件
while(bufInputStream.read(data)!=-1){
bufOutputStream.write(data);
}
bufInputStream.close();
bufOutputStream.flush();
bufOutputStream.close();
System.out.println("组合"+number+"个文件 OK!" );
}
}
例:
package 输入输出;
import java.io.*;
public class PrintStreamDemo {
/**
* @param args
*/
public static void main(String[] args) throws FileNotFoundException{
// TODO Auto-generated method stub
PrintStream printStream = new PrintStream(new File("test2.txt"));
printStream.println(1);
printStream.close();
}
}
例:打开一个有简单字符(ABCD……)的简单文本文件,在读取文件之后,指定文件中字符的位置来修改字符
package 输入输出;
import java.util.*;
import java.io.*;
public class ByteArrayStreamDemo {
public static void main(String[] args) {
String arg=new String("test2.txt");
// TODO Auto-generated method stub
try{
File file=new File(arg);
BufferedInputStream bufferedInputStream=
new BufferedInputStream(
new FileInputStream(file));
ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
byte[] bytes=new byte[1];
//将文件内容写入位数组流
while(bufferedInputStream.read(bytes)!=-1){
arrayOutputStream.write(bytes);
}
arrayOutputStream.close();
bufferedInputStream.close();
//以字符方式显示位数组内容
bytes=arrayOutputStream.toByteArray();
for(int i=0;i< bytes.length;i++){
System.out.print((char)bytes[i]);
}
System.out.println();
//让用户输入位置与字符修改位数组内容
Scanner scanner=new Scanner(System.in);
System.out.print("输入修改位置:");
int pos=scanner.nextInt();
System.out.print("输入修改字符:");
//修改数组中对应的字符
bytes[pos-1]=(byte)scanner.next().charAt(0);
//将位数组内容存回文件
ByteArrayInputStream byteArrayInputStream=
new ByteArrayInputStream(bytes);
BufferedOutputStream bufOutputStream=
new BufferedOutputStream(new FileOutputStream(file));
byte[] tmp=new byte[1];
while(byteArrayInputStream.read(tmp)!=-1)
bufOutputStream.write(tmp);
byteArrayInputStream.close();
bufOutputStream.flush();
bufOutputStream.close();
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("请指定文件名称");
}
catch(IOException e){
e.printStackTrace();
}
}
}
结果:
AAAAAAAAAAAAAAA
输入修改位置:1
输入修改字符:B
文件修改后:BAAAAAAAAAAAAAA
例:区分ASCII & BIG5
(BIG5使用两个字符来表示一个中文字,而ASCII只是用一个字节来表示英文字符,
BIG5中文为了与ASCII兼容,低字节范围为0xA4~0xF9,高字节范围为0x40~0x7E以及0xA1~0xFE。存储时低字节先存,再存高字节,所以读取时只要读到字节是在0xA4~0xF9就表示它可能是一个中文字的前半数据)
例:
package 输入输出;
import java.io.*;
public class PushbackStreamDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String arg="test2.txt";
try{
PushbackInputStream pushbackInputStream=new PushbackInputStream(
new FileInputStream(arg));
byte[] array=new byte[2];
int tmp=0;
int count=0;
while((count=pushbackInputStream.read(array))!=-1){
//两个字节转换为整数
tmp=(short)((array[0]<<8)|(array[1]&0xff));
tmp=tmp&0xffff;
//判断是否为BIG5,如果是则显示BIG5中文字
if(tmp>=0xA440 && tmp<0xffff)
System.out.println("BIG5:"+new String(array));
else {
//将第二个字节推回流
pushbackInputStream.unread(array,1,1);
//显示ASCII范围的字符
System.out.println("ASCII:"+(char)array[0]);
}
}
pushbackInputStream.close();
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("请指定文件名称");
}
catch(IOException e){
e.printStackTrace();
}
}
}
运行结果:
ASCII:d
BIG5:亲
ASCII:e
BIG5:爱
ASCII:a
BIG5:滴
ASCII:r
BIG5:啊













