java学习总结体会

2024-10-19 版权声明 我要投稿

java学习总结体会(通用7篇)

java学习总结体会 篇1

MSDN是 Microsoft 当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据

(二)加强自我管理,善于作自我总结,分析自已的优点及缺点

中国境内百分之八十以上的领导人在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的?

(三)养成良好的文档习惯

良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱甚至失控.那么如何写文档呢?其实我认为没有统一的标准,虽然国家及一些NB的人总结了很多的模板,但每个人的习惯不同,如果你不加以修改或创新,就套用某个标准,我相信写起来会很吃力及说不清的难受,因此我觉得只要能将你的设计思想及实现算法或步骤描述清楚就是好的文档,我强烈建议广大程序员朋友们在写文档时要善于用图表来说明你的思想,我们不是作家,也可能作文都经常性地不及格,写出五官端正的文章对我们来说可能不容易啊!好好地利用VISIO,ROSE或别的工具来表达你的思想吧!

(五)代码风格要规范,严谨,效率要高。

(六)掌握好跟踪调试技巧.

跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来.

(七)养成自我测试的习惯

测试工作应由测试工程师来做,但在你写完一个模块或一个软件时,还是要自已先测试一下,保证不要出现一些低级的错误.

(八)善于交流善于沟通,特别是经常与一些高手交流一下学习的心得体会

有人说,程序员的性格大多内向不喜欢说话,其实是有些误会了,不是不喜欢而是话不投机,我的脑袋一天到晚都在不停地转,函数,数据,算法啊充满了我的世界,我那还有时间与你谈一些无聊的话题,话要找对人了,才容易谈下去,书上说过“听君一席话,胜读十年书”,你要找的就是这种豁然开朗!

(九)阶段性地做一下专题总结

知识要温故而知新,因此我程序员要养成阶段性地做专题总结的习惯,比如你这个月学习或在做与多线程有关的模块或项目,那么在你做完后,你就可以好好地总结一下所有与多线程相关的技术,包括理论知识,实践方法以及各种技巧及优秀文章等等,这对你各种能力的提高将很大的帮助,你试过了吗,如果没有,那就快点行动吧!

(十)要有持之以恒的精神

Java学习总结 篇2

编译命令javac

编译命令:java

JVM:java虚拟机,类声明:

1、一个java文件中只能有一个public class 的声明,但是容许多个class声明

Class 声明:生成的.class 文件和类文件名相同

2、类声明是每个单词首字母大写(习惯)标志符:字母 数字 下划线 $符号 不能用数字开头 数据类型:基本数据类型 :数值型 字符型 布尔型

引用数据类型 :接口 类 数组

运算: 判断语句: 循环语句: 数组: 方法:

java.util.Arrays.sort(x)安升序排列

system.arraycopy(源数组,源数组开始点 ,目标数组 , 目标数组点,长度)面向对象:

面向对象的三个特征:封装 继承 多态 类包括:属性 方法

对象的产生步骤:声明对象,实例化对象 封装 常见的

构造方法:每一个类中都有一个构造方法,那么这个方法实际上就是构造方法

必须和类名相同

没有返回值类型的声明

不能使用return返回一个内容 匿名对象:只使用一次的对象

String 类:

字符:根据字符串的索引找到指定位置的字符 char charAt(index)

将字符数组变成字符串

全部变成字符串 String(char c[])部分变成字符串 new Sting(char c[],int offset,int count)字节:string 变成字节数组: byte[] getByte()将字符串变成字符数组 char[] toCharArray String 变成字符数组:插入char[] getChar(start,end,char des[],目的字符串数组的复制起始位置)字节数组到String 同上面 String 类中的常用方法

length()一个字符串的长度: equals()

equalsIgnoreCase()忽略大小写 startsWith()endsWith()

compareTo()按字典顺序比较难-1,0,1 根据字符串的索引找到指定位置的字符 char charAt(index)根据字符,字符串,找到字符串的位置 int indexOf(char c,int fromIndex)int indexOf(String c,int fromIndex)

字符串的截取: string substring(int beginIndex,int endIndex)字符串的拆分: String[] split(string regex)字符串的替换: replace(char old,char new)replaceAll(string old,string new)trim()去掉字符串前后的空格 toUpperCase()转换成大写: toLowerCase()

concat()连接两个字符串 substring()

substring(begin,end)

字符串转换成其他数据:

Integer.pareseInt(string)Character.pareseChar(string)Double b=Double.pareseDouble(string)

基本数据类型变成字符串:

Static string valueOf(int)valueOf(double)类:类是对对象状态和行为的定义

内部类:在一个类的内部还有另一个类

匿名内部类

包装类:

在包装类的操作中存在 装箱 和拆箱的 在jdk1.5后可以自动

重要的一点,可以将字符串变成基本数据类型

包,实际上就是一个文件夹,在不同的文件中可以存在同名的类

抽象类:包括一个抽象方法的类 抽象方法只是声明而未实现的方法,所有的抽象方法和抽

象类都都必须用abstract关键字声明

抽象类不能直接实例化,可以声明 必须被继承 子类必须直接全部继承抽型方法 继承:

继承的限制:java不支持多重继承,一个子类只能继承一个父类

代码块:包括四种:普通代码块

构造块,静态块 :优先于主方法执行,优先于构造块,而且只执行一次

同步代码块 this super

final 声明的类不能有子类

声明的方法不能被覆写

声明的变量变成了常量

如果final定义一个常量,常量的标识符必须是大写 接口:接口是一个特殊的类,是由抽象方法和全局常量组成: Interface 定义一个接口 Implements 实现接口

一个抽象类可以有多个接口,但一个接口不能继承抽象类 对象的多态:主要指子类对象和父类对象相互转换关系

向上转型:父类 父类对象=子类实例 自动完成

向下转型:子类 子类对象=子类(父类实例)强制完成 用packet来定义包 Import 导入包 系统常用的包

泛型: 异常: 多线程: Java常用类库 StringBuffer String是一个字符串,但是字符串的内容不可以改变,改变的只是内存地址的指向,想改变字符串的内容,必须使用StringBuffer append 将字符串链接

string和stringBuffer没有关系,如果先把StringBuffer对象变成string 必须用toString 常用方法 append()insert(int string)添加 delete(start,end)删除 reverse()反转字符

system类

system.currentTimeMillis()获得当前的时间

gc()方法:

finalize()throws Throwable 此方法将在对象被调用前使用 Date类 java.util.Date Arrays 是一组与数组操作相关的类 正则表达式

集合框架

Collection set list List 内容可以重复,Set内容不可以重复 IO流

java初级学习总结 篇3

} public static void main(String args[])throws IOException{} //常见file对象指向文件 File file = new File(“1_3.txt”);if(!file.exists()){System.out.println(“文件不存在”);}else{} //通过file对象创建FileInputStream对象 FileInputStream fis = new FileInputStream(file);int len = 100;//创建数据缓冲 byte[] buffer = new byte[len];//判断缓冲大小是否满足 if(2*len>file.length()){System.out.println(“读取失败”);}else{} //从buffer中读取数据 fis.read(buffer,0,len);//输出 System.out.println(new String(buffer));//跳过中间的file.lengthbuf.length/4,buf.length/4);f2.close();

文件字符流FileReader类和FileWrite类

1.FileReader类

import java.io.*;

public class FileReaderTest {

} public static void main(String args[])throws IOException{} FileReader fr = new FileReader(“huang.txt”);BufferedReader br = new BufferedReader(fr);String s;while((s = br.readLine())!= null){} fr.close();System.out.println(s);

2.FileWrieter类

import java.io.*;

public class FileWriterTest {

public static void main(String args[])throws IOException{String source = “Now is the time for all good menn” +“ to come the aid of their countryn” + “ and pay their due taxes.”;char buffer[] = new char[source.length()];source.getChars(0,source.length(),buffer,0);FileWriter f0 = new FileWriter(“file1.txt”);for(int i =0;i

}

文件随机访问:

1.File类字段和File类的构造方法:

import java.io.*;

public class FileTest {

} public static void main(String args[]){//使用File.separator 字段代表当前路径 //使用构造方法File(String)创建File对象f1 File f1= new File(File.separator);//构造方法 File(String String)File f2 = new File(File.separator,“autoexec.bat”);//构造方法File(File,String)File f3 = new File(f1,“autoexec.bat”);System.out.println(“三个File对象创建完成”);}

2.File类方法:

File的方法大致分为四类:

文件名处理:

文件测试操作:

文件处理:

文件信息处理:

例子1:

import java.io.*;

public class ex_1_6 {

public static void main(String args[]){String filename = “huang.txt”;File myFile = new File(filename);//如果文件存在进行属性测试 if(myFile.exists()){System.out.println(myFile.getName());//文件的绝对路径 System.out.println(myFile.getAbsolutePath());//上一层目录 System.out.println(myFile.getParent());//最后修改时间 System.out.println(myFile.lastModified());//大小 System.out.println(myFile.length());//是否绝对路径、是否是目录、是否是文件、是否可读写 System.out.println(myFile.isAbsolute()+“

”+myFile.isDirectory()+“ ”+ myFile.isFile()+“ ”+myFile.canRead());

}

运行结果:

huang.txt

D:eclipseworkspace输入输出流huang.txt

null

1267600014000

false false true true

false}//是否隐藏属性 System.out.println(myFile.isHidden());}else{System.out.println(“文件不存在”);}

Java学习方法总结 篇4

Java作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。

举个例子,我们都编过Hello World

public class HelloWorld { public static void main(String[] args){ System.out.println(“Hello World”);} }

很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。

我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。

此外,我对于staic,public,private,Exception,try{ }catch {}finally{}等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。

其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose java –verbose javac –verbose 以及其它很多JDK工具都有这个选项

-verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。

江西新华电脑学院

另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy & Paste,Search & Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。

所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。在JDK安装目录下面会有一个src.zip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。

JAVA基础知识学习技巧总结 篇5

JAVA学习交流群:514167678 在这里给大家整理了一篇JAVA的学习小技巧,希望能给大家带来帮助。

1、byte通常用来进行位运算,位宽度窄,一般不用来计算

2、关键字都是小写的,在eclipse中显示为红色。

3、变量给了缺省的初始值,C语言没给,只给分配了空间,里面的数不确定

4、char的缺省值是ASCII码中第1个

5、运行效率:i++>i+=1>i=i+1

6、布尔值不能进行大小比较,只能进行==比较

7、先算&&再算||。另外&&为短路与的意思。例1:判断以下i的变化。

int i=2,j=3;

boolean b=i>j && i++>2;

System.out.println(i);答案:2

例2:以下在a,b,i不知道的情况下,判断真还是假。((a>b)||((3-2)>2))||(5>2)&&(true||(++i>2))答案:真

8、>>带符号右移,前面移空的位置添加符号位相同的数

0|001 1000 右移两位(正数)

0|000 0110 1|001 1000 右移两位(负数)

1|111 1100

>>>带符号右移,前面移空的位置添加0

9、获得-5到2的随机数

int i;

Random r=new Random();

i=r.nextInt();

// i=Math.abs(i%10)+1;//获得0到10的随机数

i=Math.abs(i%8)-5;//获得-5到-2的随机数

System.out.println(i);

10、数组创建时,大小(内存)可以是前面的变量.可以动态创建数组的大小(内存),创建后就不能再改大小.例:

int t=9;

int[][] jiu;

jiu=new int[t][];

JAVA学习交流群:514167678

11、变量的作用域。

定义的数个变量其实是放在一个栈的结构中,后定义的变量先消失,先定义的变量后消失,作用域比后定义的变量大。

12、.基本数据类型参数的传递是值传递, 引用....................址传递.class Length{ int length;} class People{

void walk(Length length){

length.length=+=2;} public satic void main(String[] args){

Length l=new Length();

l.length=20;

new People().walk(l);

System.out.println(l.length);} }

13、方法的重载,不能通过返回值类型不同来区别,只能通过参数的不同来区别.14、方法或变量加static和

不加static的方法,是类的对象的方法.对象消失,方法消失

加static的方法,是类的方法.对象消失,方法存在.方法的地址是静态的与类绑定

变量和上面也一样.15、静态方法,只能访问类的静态成员和该方法的成员

16、JAVA不支持多重继承,类似一个树,一个类只有一个父类,但可以有多个接口

C++支持多重继承,类似一个网,一个类可以有多个父类

17、子类默认调用了父类无参构造函数.如果父类没有无参构造函数,必须手动重写子类的构造方法,并用super(参数)调用父类中有参构造的方法.例: class People{ private int age;public People(int age){

this.age=age;} } class Doctor extends People{ //不写以下构造方法则出错.public Doctor(){

super(23);}

JAVA学习交流群:514167678 //或者

public Doctor(int age){

super(age);} } 解决方法:在写类的有参构造方法时,最好定义个无参的构造方法.18、构造方法调用父类的构造方法super()前不能有其他的语句.19、final可以修饰形式参数,防止被改 例:

void walk(final int length){

}

20、import导入包的理解,重要的事情总要放到前面

21、private与abstract冲突,原因:子类实现(继承)不了接口(抽象类)中被private修饰的成员,但接口(抽象类)中的方法必须要重写,加private就没办法重写了 例:

interface InterfaceTest { int f();private abstract int ff();//此句错误,要去掉private }

22、内部类可以被外部使用,可以访问外部类(宿主类)的privite成员;内部类成员加public也可以被外部访问,但也危险,定义成private外部不能访问此类了(常用).public class OutClass { private int i=2;public class InnerClass{

public int j=i;} }

23、抽象类不用继承也能用 例:

abstract class Out2{ private int i=2;public abstract int f();public static Out2 getInstance(){

return new Inner2();} private static class Inner2 extends Out2{//static

public int f(){

return 2;

} } public static void main(String[] args){

JAVA学习交流群:514167678

Out2 ou=Out2.getInstance();//抽象类不用继承也能用,获得此类的实例

int i=ou.f();

System.out.println(i);} }

24、接口里也可以定义类(内隐类)例:

interface InterfaceTest { int f();class A{

int f(){

return 2;

} } }

25、内部类的使用.类NoNameInnerClass 不用implements实现接口,而用传递进来对象来用接口

interface Inter{ void paint();} public class NoNameInnerClass { public void paint(Inter p){//传递进来对象来用接口

p.paint();} public void func(){

//为了获得对象,定义一个内部类,把此对象做参数

class Paint implements Inter{

public void paint(){

System.out.println(“paint.”);

}

}

Paint p=new Paint();

paint(p);} }

26、内部类的使用.不用类名,直接创建对象,无名内隐类,类名是他实现的接口名字 interface Inter{ void paint();} public class NoNameInnerClass { public void paint(Inter p){//传递进来对象来用接口

p.paint();

JAVA学习交流群:514167678 } public void func(){

//直接创建对象,无名内隐类,类名是他实现的接口名字,paint(new Inter(){

public void paint(){

}

});} }

27、单态设计模式。能够创建类的唯一实例。把构造方法定义成private,再创建静态的成员方法getInstance()获得此类唯一实例.例1.public class ChineseTest{

public static void main(String[] args){

Chinese Obj1 = Chinese.getInstance();

Chinese Obj2 = Chinese.getInstance();

System.out.println(Obj1 == Obj2);

} } class Chinese {

private static Chinese objRef = new Chinese();

private Chinese(){

}

public static Chinese getInstance(){

return objRef;

} } 例2:

public class ChineseTest{

public static void main(String[] args){

Chinese Obj1 = Chinese.getInstance();

Chinese Obj2 = Chinese.getInstance();

System.out.println(Obj1 == Obj2);

} } class Chinese {

private static Chinese objRef;

private Chinese(){

} }

JAVA学习交流群:514167678

28、泛型应用

Vector类后的E代表泛型,用来限制往里面放的数据类型 例:

Vector v=new Vector();

v.add(“aaa”);

v.add(“bbb”);

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

29、如果一个方法可能有异常,则用throw new Exception(“")来抛出异常

如果方法内用throw抛出异常,则此方法头后必须用throws(多个s)声明可能会抛出异常。

如果一个方法头后用throws声明可能会抛出异常,则此方法在用的时候必须用try-catch语句 例:

public class Lx_Yichang { static int div(int x,int y)throws Exception{

if(y==0){

throw new Exception(”除数不能为0!!“);//方法内用throw抛出异常

}else{

return x/y;

} } public static void main(String[] args){

try{//用try-catch语句

int z=0;

z=Lx_Yichang.div(10, 0);

System.out.println(z);

}

catch(Exception ex){

System.out.println(ex.toString());

ex.printStackTrace();

}

finally{

System.out.println(”End!“);

} } }

30、Hashtable类应用,可以通过get(键)或get(hashCode)来获得值内容。import java.util.Hashtable;class PhoneList{ String name;String phoneNumber;public PhoneList(String name,String phoneNumber){

this.name=name;

JAVA学习交流群:514167678

this.phoneNumber=phoneNumber;} } public class HashtableTest { public static void main(String[] args){

//利用泛型

Hashtable hashTable=new Hashtable();

hashTable.put(”wang0“,new PhoneList(”wang“,”0000000“));

hashTable.put(”wang1“,new PhoneList(”wang“,”1111111“));

hashTable.put(”wang2“,new PhoneList(”wang“,”2222222“));

hashTable.put(”wang3“,new PhoneList(”wang“,”3333333“));

System.out.println(hashTable.get(”wang2“).phoneNumber);

//不利用泛型

Hashtable hash=new Hashtable();

hash.put(”wang0“,new PhoneList(”wang“,”0000000“));

hash.put(”wang1“,new PhoneList(”wang“,”1111111“));

hash.put(”wang2“,new PhoneList(”wang“,”2222222“));

hash.put(”wang3“,new PhoneList(”wang“,”3333333“));

//System.out.println(((PhoneList)hash.get(”wang2“)).phoneNumber);//不用泛型,需要强制类型转换

//强制类型转换时,最好先进行类型判断

Object o=hash.get(”wang2“);

if(o instanceof PhoneList){

System.out.println(((PhoneList)o).phoneNumber);

}

//利用hashcode

Hashtable table=new Hashtable();

PhoneList p1=new PhoneList(”wang2“,”888888888888“);

table.put(new Integer(p1.hashCode()), p1);

System.out.println(table.get(new Integer(p1.hashCode())).phoneNumber);

} }

31、提供一个关于游戏的简短描述,网页,游戏名称,提供商,金钱初始值等等。这些数据可以置于.jad文件中。

打包后是放在JAR的META-INF文件夹里。用MIDlet类的getAppProperty(String key)来获得其中的值.32、Canvas 的hideNotify()里写暂停的代码。showNotify()写继续游戏的代码。来电话时自动调用hideNotify()。pauseApp也可以实现,但有的手机不支持如Nokia手机

34、运行提示ALERT: java/lang/ClassFormatError: Bad version information.原因

原因:当前编译器的版本过高。

JAVA学习交流群:514167678

解决方法: 编译器的版本不要过高否则有的手机不认,选择编译器方法:点项目右键属性->Java Compiler-> Enable project specific settings打勾,然后选择版本较低的编译器

35、把所有的引用都设置为null才可以变为垃圾

Hero h=new Hero();

Hero h2=h;

h=null;//此时,h并没变为垃圾,因为还有h2指向它,需要把h2也设置为null,h才变为垃圾

h2=null;

36、去掉无用包(ctrl+shift+0).或右键->Source->Organize Imports

37、WTK2.5的安装后,ECLIPSE的设置

Window->Preferences->Device Management->Import->找到WTK的安装路径

38、添加资源文件夹名

在项目上右键->Properties->双击Java Build Path->点Add Foler->在下面的选项中选择update exclusion filters in other source folders to solve nesting,再添入资源文件夹名,如src、res等。

39、添加抽象类、接口中的方法。

例如对继承Canvas类,需要添加protected void keyPressed(int keyCode){}方法时.在代码上右键->Source->选择Override/Implements Methods->在窗口中,对要重写的方法打勾->Ok。

40、在for语句中,第2个循环条件可以和逻辑表达试取与 例:

for(int i=0;i<100 && i%2==0;i++)

41、DataInputStream包装FileInputStream后,底层操作文件,上层按指定格式输出(最易使用)

42、FileInputStream的应用 例:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class PekingFileInputStreamTest1 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);

FileOutputStream fout=new FileOutputStream(file);

fout.write(65);

fout.close();//输出到文件完毕后关闭

//开始读

FileInputStream fin=new FileInputStream(”fileInputStream.txt“);8

JAVA学习交流群:514167678

int b=fin.read();

System.out.println(b);

fin.close();

} catch(Exception e){ // TODO: handle exception e.printStackTrace();

} } }

43、利用DataOutputStream包装FileInputStream按指定格式输出 例:

import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.FileInputStream;public class PekingFileInputStreamTest2 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);

FileOutputStream fout=new FileOutputStream(file);

//包装下按指定格式输出

DataOutputStream dout=new DataOutputStream(fout);//子类fout做参数传给父类,子类当父类用

dout.writeInt(8793);

dout.writeUTF(”感动中国“);

dout.close();

fout.close();

//开始读

FileInputStream fin=new FileInputStream(”fileInputStream.txt“);

DataInputStream din=new DataInputStream(fin);

int b=din.readInt();

String s=din.readUTF();

System.out.println(b);

System.out.println(s);

din.close();

fin.close();

} catch(Exception e){

e.printStackTrace();

} 9

JAVA学习交流群:514167678 } }

44、利用PrintWriter包装三次的例子。

PrintWriter包装OutputStreamWriter,OutputStreamWriter包装FileOutputStream,FileOutputStream包装File import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;public class PekingFileInputStreamTest3 { public static void main(String[] args){

try {

//在项目根目录里创建文件fileInputStream.txt

File file=new File(”fileInputStream.txt“);//

FileOutputStream fout=new FileOutputStream(file);

//

OutputStreamWriter osw=new OutputStreamWriter(fout);//测试字符流//字符流通向字节流的桥梁

//

PrintWriter pw=new PrintWriter(osw);//包装三次

PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file)));

//开始读

pw.println(”窗前名月光,“);

pw.println(”疑是地上霜.“);

pw.println(”抬头望明月,“);

pw.println(”低头思故乡。");

pw.flush();

} catch(Exception e){

e.printStackTrace();

java心得体会 篇6

其实,大学之前几乎没有软件技术之类的概念,大三之前仍然对于程序懵懂不开。但是这并不能妨碍我热爱这个行业,也不能就断定我在这个行业里一事无成。刚学?Java,我的确感觉不开窍,特别对OO(面向对象)编程仍然不能理解。但是人如果一思考,其实什么问题都解决了。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。对于抽象的东西要能具体化,对于具体的东西要能抽象化。

我学习java基础一直使用的是《编程思想》第四版这本书,感觉挺不错的,全面透彻通俗易懂,在国外也是广受好评,我很惋惜没有早点知道这本书,否则也不回浪费大学三年青春岁月,一无是处的打发光阴,值得庆幸的事这本书一定程度上激发了我对java学习的兴趣与潜力。英语能力强的话,可以直接看英文原版。我一直强调重视基础,如果你的java基础打的牢,你在学习那些java框架就是非常轻松的事了。

二.Java学习的确要学习的东西很多,就像这为朋友上面提到的那些。Java不像.net一家独大,记得在大学里教我们.net老师早就提醒过我们学java才是出路,学好java才是王道,我当时就纳闷,这不是搬石头砸自己的脚,往自己身上泼冷水吗?现在恍然大悟,他当时只是为我们指引一条明路,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。根据自己的发展方向的不同,可以选择不同的学习路线。对于怎样成为一名出色的Java?Web程序员,我的建议是:1、JSP的知识不能欠缺,理解什么是servlet,什么是java?bean,熟悉jsp常使用的标签。我自己感觉,对于JSP的学习不需要太认真,毕竟现在真正使用纯JSP的情况已经不多了,能掌握基本的知识就绰绰有余。2、学习一个或一个以上的web表现框架。如果从使用的程度上来讲,Struts依然是最流行的框架,社会需求也很大,所以学习Struts是一个不错的选择,最近一个月我们刚刚模拟总算也用到了框架,因为框架本身也是一种封装,程序开发是将简单事情复杂化,模拟Struts使我们学习三大框架和其他框架奠定良好的基础,使用框架的前提是你对他处理的业务逻辑也相当熟练了。4、至于xml,css这样的页面表现的东西,如果你不从事美工方面,我认为没有必要花过多的时间去学习,在平时的项目开发中慢慢的就会使用了。

还是那句话,基础很重要,永远不要忽视这一点。刚刚毕业,公司不会要求员工什么都会,只要技术扎实,学习的能力强,学习的速度就很快,企业有时候非常看重?这一点。其次掌握struts、hibernate这两个框架,达到可以熟练使用的目的,这会增加你就业的砝码。至于spring,EJB可以在以后的工作中学习使用,现在了解一下就可以了。当然作为一个java?web程序员,还要了解数据库、tomcat,jboss服务器、常用的开发工具Eclipse,NetsBean等。

java心得体会优秀 篇7

作为一个programmer来说,考个认证确实能帮助自己扩展知识,增加自信。更重要的是可以开阔眼界,在找资料和学习的过程中能了解当前的技术走向和热门技术的应用。

我因为想找工作(目前失业中),所以在1个多月前连续考了scjp和scjd.对我来说,scjd比scjp简单。因为我用java写过1年半的程序,所以完成scjd要求的小项目感觉比较简单。而scjp的大量的基础概念,我第一次看模拟题时可能多一半的题目都不会做。但是大部分只要自己实际编小例子试一下就可以找到答案。给我印象比较深的是 内部类 和 匿名内部类, 同一个文件中写多个类 相关的概念,准备 scjp的朋友 一定注意这部分概念。

我个人认为,如果目前有一份稳定的工作,做的项目自己也比较有兴趣,不一定急着考证。因为不急用,而且真正的技术最好还是在实际的项目中去学,会学的比较深入而且全面。如果是新人或者想换工作的,到是不妨花点时间和金钱,多块敲门砖。但也不要把希望全寄托在认证上面。我觉得对个人来说,比较重要的而且基本的资历按重要性排序 : No.1 computer相关的本科学历。 No.2 实际工作经验 No3. 认证

因为我是为了找工作而考证的,所以准备起来力求速成,一点经验,可能对有java基础而又急于考证的朋友有帮助:

1。scjp: 我开始看一下教材目录,了解考试的范围,不看详细内容。然后直接看了2份 bible 的题目,每份100多道题。然后作了2-3套mock的题。把这些题上的点基本搞清楚,就可以pass SCJP了,有些概念不清楚就去查教材。scjp的考题覆盖面很全,教材中每一章,都会有题目出现。最后一章有关tcp/ip的没用,不会考到。我大概用了2周多的时间准备

2。scjd: (对于没有实际用java编过项目的人可能不是特别容易)

我下载了很多资料,但是一点都没看。我想如果用java编过项目的话,完成这个不会有任何困难,直接作就行了。不要问我是什么题目,因为这个考试本身就是一个小项目,你要独立的把它完成。别把它想象的很复杂,其实很直白。涉及了3方面: rmi,线程安全,swing,仅此而已。当然最好有比较好的编程习惯,比如注释,变量命名规则,整体结构设计模型的合理等等细节。如果想提高水平的话,到是可以多看看教材或者其他的资料,速成考证的话绝对是没有必要看了。大概用了2周的时间,1周进行设计,编码和功能测试,第二周进行修改,测试,和文档。(我是脱产准备的)

还是那句话,自己想清楚,自己是不是需要考证。编程技术发展的也很快,如果近期内考证对自己没什么特别的好处的话,我觉得可以不用着急考,可能2年以后,又有新技术出现了。现在sun不就又推出了java web组件的认证,就是有关jsp,Servlet的。还有scjea,有关j2ee概念的。

总之,自己想清楚,然后just do it. 我想只要花时间,准备得法,大部分认证都是比较容易通过的。

上一篇:生产先进工作者下一篇:万历十五年读书心得推荐