第一篇:java个人小结——修饰符
Java中public、protected、private、abstract、static和final 1.public 使用对象:类、接口、成员
介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可访问的2.private 使用对象:成员
介绍:成员只可以在定义它的类中被访问
3.static 使用对象:类、方法、字段、初始化函数
介绍:成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。静态方法是类方法,是被指向到所属的类而不是类的实例。静态字段是类字段,无论该字段所在的类创建了多少实例,该字段只存在一个实例被指向到所属的类而不是类的实例。初始化函数是在装载类时执行的,而不是在创建实例时执行的。
4.final 使用对象:类、方法、字段、变量
介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值不允许被修改。
5.abstract 使用对象:类、接口、方法
介绍:类中包括没有实现的方法,不能被实例化。如果是一个abstract方法,则方法体为空,该方法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类 6.protected 使用对象:成员
介绍:成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类必须是该成员所属类的子类。
7.native 使用对象:成员
介绍:与操作平台相关,定义时并不定义其方法,方法的实现被一个外部的库实现。Object里面的hashCode方法是采用native的,String int这些类是重写了的
8.strictfp 使用对象:类、方法
介绍:strictfp修饰的类中所有的方法都隐藏了strictfp修饰词,方法执行的所有浮点计算遵守IEEE 754标准,所有取值包括中间的结果都必须表示为float或double类型,而不能利用由本地平台浮点格式或硬件提供的额外精度或表示范围。
9.synchronized 使用对象:方法
介绍:对于一个静态的方法,在执行之前jvm把它所在的类锁定;对于一个非静态类的方法,执行前把某个特定对象实例锁定。
10.volatile 使用对象:字段
介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。
volatile有时可以代替synchronized。
11.transient 使用对象:字段
介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起.
第二篇:java个人小结(范文模版)
原文[2007年03月25日 星期日 上午 03:04]
Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE。这三块相互补充,应用范围不同。
J2SE就是Java2的标准版,主要用于桌面应用软件的编程;
J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;
J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。先学习j2se
要学习j2ee就要先学习j2se,刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发,毕竟用它方便嘛。学习j2se推荐两本书,《java2核心技术一二卷》,《java编程思想》,《java模式》。其中《java编程思想》要研读,精读。这一段时间是基本功学习,时间会很长,也可能很短,这要看学习者自身水平而定。
不要被IDE纠缠
在学习java和j2ee过程中,你会遇到五花八门的IDE,不要被他们迷惑,学JAVA的时候,要学语言本身的东西,不要太在意IDE的附加功能,JAVA编程在不同IDE之间的转换是很容易的,过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程序。
选择和学习服务器使用配置
当你有了j2se和IDE的经验时,可以开始j2ee的学习了,web服务器:tomcat,勿庸置疑,tomcat为学习web服务首选。而应用服务器目前主要有三个:jboss、weblogic、websphere。有很多项目开始采用jboss,并且有大量的公司开始做websphere或weblogic向jboss应用服务器的移植(节省成本),这里要说的是,学习tomcat和jboss我认为是首选,也是最容易上手的。学习服务器使用配置最好去询问有经验的人(有条件的话),因为他们或许一句话就能解决问题,你自己上网摸索可能要一两天(我就干过这种傻事),我们应该把主要时间放在学习原理和理论上,一项特定技术的使用永远代替不了一个人的知识和学问。
学习web知识
如果你是在做电子商务网站等时,你可能要充当几个角色,这是你还要学习:
html,可能要用到dreamwave等IDE。
Javascript,学会简单的数据校验,数据联动显示等等
J2eeAPI学习
学习j2eeAPI和学习服务器应该是一个迭代的过程。
先学习jsp和servlet编程,这方面的书很多,我建立看oreilly公司的两本《jsp设计》和《java servlet编程》,oreilly出的书总是那本优秀,不得不佩服。
学习jdbc数据库编程,j2ee项目大多都是MIS系统,访问数据库是核心。这本应属于j2se学习中,这里拿出来强调一下。
学习jndi api,它和学习ejb可以结合起来。
学习ejb api,推荐书《精通ejb》
经过上面的这些的学习,大概可以对付一般的应用了。
有人说跟着sun公司的《j2ee tutorial》一路学下来,当然也可以。
学习ejb设计模式和看代码(最重要)
设计模式是练内功,其重要性可以这么说吧,如果你不会用设计模式的话,你将写出一堆使用了ejb的垃圾,有慢又是一堆bug,其结果不如不用ejb实现(ejb不等于j2ee)
无论学习什么语言,都应该看大量代码,你看的代码量不到一定数量,是学不好j2ee的目前有很多开源的工程可以作为教材:
jive论坛
petstore sun公司
dune sun公司
等等,研读一个,并把它用到自己的工程中来。
J2ee其他学习
当你渐渐对j2ee了解到一定深度时,你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域,大家都在这里提出自己的解决方案,例如structs,hiberate,ofbiz等等,学习这些东西要你的项目和目标而定,预先补充一下未尝不可,但不用涉及太深,毕竟学习原理和理论是最最重要的事。
目前常见j2eeAPI
JavaServer Pages(JSP)技术1.2
Java Servlet技术2.3
JDBC API 2.0
Java XML处理API(JAXP)1.1
Enterprise JavaBeans技术2.0
Java消息服务(JMS)1.0
Java命名目录接口(JNDI)1.2
Java事务API(JTA)1.0
JavaMail API 1.2
JavaBeans激活架构(JAF)1.0
J2EE连接器体系结构(JCA)1.0
Java认证和授权服务(JAAS)1.0
学习上面的某些API要以你的项目而定,了解所有他们总之是有好处的上面印证了大家说的一句话,java语言本身不难学,但是技术太多,所以学java很费劲。回想一下,基本上每个初学者,在刚学习java的时候可能都会问别人这么一句话,你怎么知道的哪个方法(api)在哪个包里的?呵呵,无他,唯手熟尔。
2008年10月29日 星期三 下午 9:29
第三篇:java小结
//1.累加 public class 累加 {
}
//2.阶乘
public class 30的阶乘 {
} public static void main(String[] args){
} int product=1;for(int i=1;i<=30;i++){ product=*i;} public static void main(String[] args){
} int i=1;for(int counter=1;counter<=100;counter++){ } System.out.println(i);i+=counter;
//3.倒序输出
法1 用char数组思想 import java.util.Scanner;public class 逆序输出 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);// String input[]=new String[4];input=scan.nextLine();// huiche
// String result=“";char[] Array=input[4].toCharArray();for(int i=Array.length-1;i>=0;i--){
} result+=Array[i];} System.out.println(result);} //倒序输出 法2 用reverse()方法 import javax.swing.JOptionPane;public static void main(String[] args){
}
String a = null;StringBuffer b;//输入
a=JOptionPane.showInputDialog(a);StringBuffer c1=new StringBuffer(a);b=c1.reverse();System.out.println(b);
//4.输出100 121 144...361 public class平方输入数组 {
}
//5.求最大公约数
private static int gys(int m,int n)
{
if(n==0)
return m;else public static void main(String[] args){
} int[] array=new int[10];for(int i=0;i<10;i++){ } array[i]=Math.pow((i+10),2.0);
for(int k=0;k return gcd(n,m%n); } //6.求最小公倍数 public static int gbs(int n1,int n2){ int a =(n1>n2)? n1 : n2; for(int j=a;j<=n1*n2;j++) { if(j%n1==0 && j%n2==0) { return j; } } return 0;} //7.1)十进制整数转化为二进制整数采用“除2取余,逆序排列” import java.util.Scanner;public class Main { public static void main(String[] args){ //第一行输入要几组测试数据 int N=0,a;//N为输入几组数据,a为输入的十进制数字 } String b = null;Scanner scan=new Scanner(System.in);N=scan.nextInt();Main num=new Main();for(int i=1;i<=N;i++){ } a=scan.nextInt();b=num.deimalBinary(a);int d=num.Calcute(b);if(d%2==0)System.out.println(”Even“);else System.out.println(”Odd“); /*一个方法得到二进制数,用递归 *用2去除十进制整数,可以得到一个商和余数; *再用2去除商,又会得到一个商和余数,} *如此进行,直到商为零时为止,*然后把先得到的余数作为二进制数的低位有效位,*后得到的余数作为二进制数的高位有效位,依次排列起来 */ public String deimalBinary(int a){ } public int Calcute(String b){ } char[] Array=b.toCharArray();for(int i=0;i } if(Array[i]=='1'){ } counter+=1;return counter; //7.2)十进制小数转换为二进制小数采用“乘2取整,顺序排列” /*用2乘十进制小数,可以得到积,*将积的整数部分取出,再用2乘余下的小数部分,//8.矩阵运算(加减乘)//矩阵运算 *又得到一个积,再将积的整数部分取出,*如此进行,直到积中的小数部分为零,*或者达到所要求的精度为止。 *然后把取出的整数部分按顺序排列起来,*先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。*/ import java.util.Scanner;public class Main { public static void main(String[] args){ int N1,M1,N2,M2,K;Scanner scan=new Scanner(System.in);N1=scan.nextInt();M1=scan.nextInt();int[][] a=new int[N1][M1];for(int i=0;i for(int j=0;j N2=scan.nextInt();M2=scan.nextInt();int[][] b=new int[N2][M2];for(int i=0;i { } b[i][j]=scan.nextInt();} K=scan.nextInt();if(K==1)//加法 { int[][] c=new int[N1][M1];for(int i=0;i } { for(int j=0;j } System.out.println();} } if(K==2)//减法 { int[][] c=new int[N1][M1];for(int i=0;i } for(int j=0;j for(int j:i){ System.out.print(j+” “);} System.out.println();} } if(K==3)//乘法 { int[][] c=new int[N1][M2];for(int i=0;i } { for(int j=0;j } for(int p=0;p c[i][j]+=a[i][p]*b[p][j];for(int[] i:c)for(int j:i){ System.out.print(j+” “);} System.out.println();} } } } 9.//保留确定位数输出 import java.text.DecimalFormat;//非四舍五入 DecimalFormat myformat=new DecimalFormat(”#0.00"); myformat.format(double num);//四舍五入,例为保留2位 double f=3.1415926; BigDecimal a=new BigDecimal(f); double af=a.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); Java中各种(类、方法、属性)访问修饰符与修饰符的说明 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称(访问修饰符与修饰符的位置可以互换)访问修饰符 名称 说明 备注 可以被本项目的所有类访问(使用),其他项目若想使用public类必须定public 本项目中的类,必义在和类名相同的须将本项目打包为同名文件中 jar包,然后加入到classpath中 默认的访问权限,可以省略此关键 只能被同一个包中(default)字,可以定义在和的类访问(使用) public类的同一个文件中 修饰符 名称 说明 备注 使用此修饰符的类final 不能够被继承 类只要有一个 如果要使用abstract方法,类就abstract类,之前必须定义为abstract 必须首先建一个继abstract,但 承abstract类的新abstract类不一定类,新类中实非要保护abstractabstract类中的抽方法不可 象方法。 (abstract也可以 修饰内部类) 综上知:类的访问修饰符只有两个:public、package 但是特殊的情况下:成员内部类和静态内部类前面还可以有protected、private访问修饰符(而局部内部类和匿名内部类没有这两种修饰符),同时静态内部类也可以有static修饰符 变量 1.Java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。 2.方法中的变量不能够有访问修饰符。所以下面访问修饰符表仅针对于在类中定义的变量。 3.声明实例变量时,如果没有赋初值,将被初始化为null(引用类型)或者0、false(原始类型)。 4.可以通过实例变量初始化器(又叫实例块)来初始化较复杂的实例变量,实例变量初始化器是一个用{}包含的语句块,在类的构造器被调用时运行,运行于父类构造器之后,构造器之前。 5.类变量(静态变量)也可以通过类变量初始化器来进行初始化,类变量初始化器(又叫静态块)是一个用static{}包含的语句块,只可能被初始化一次。访问修饰符 名称 说明 备注 可以被任何类public 访问 可以被所有子 子类没有在同一包protected 类访问,可以 中也可以访问 被同一包中的所有类访问 private 只能够被当前 类的方法访问 可以被同一包如果子类没有在同缺省 中的所有类访一个包中,也不能无访问修饰符 问 访问 ##上面所说的变量都是成员变量,局部变量前是没有访问修饰符的,因为局部变量的生命周期只在当前函数中,再声明访问修饰符没有意义 修饰符 名称 说明 静态变量(又称为类变量,其它的称为实例变量)常量,值只能够分配一次,不能更改 static final 备注 可以被类的所有实例共享。 并不需要创建类的实例就可以访问静态变量 注意不要使用 const,虽然它和C、C++中的const关键 字含义一样 可以同static一起使用,避免对类的每个实例维护一个拷贝 告诉编译器,在类对象序列化的时候,此变量不需要持久保存 指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理 主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题 transient volatile 方法 访问修饰符 修饰符 返回类型 方法名称(参数列表)throws 违例列表 1.类的构造器方法(也叫构造方法)不能够有修饰符、返回类型和throws子句 2.类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初始化器,然后才运行构造器本身。3.如果构造器方法没有显示的调用一个父类的构造器,那么编译器会自动为它加上一个默认的super(),而如果父类又没有默认的无参数构造器,编译器就会报错。super必须是构造器方法的第一个子句。4.注意理解private构造器方法的使用技巧。 ###其实构造方法前也可以有public / protected /private 访问修饰符(这三个默认可以不写 或者写 public)和void修饰符(默认可以不写);但是绝对不能有final、static修饰符 访问修饰符 名称 说明 备注 可以从所有类public 访问 可以被同一包中的所有类访 子类没有在同一包protected 问 中也可以访问 可以被所有子类访问 只能够被当前private 类的方法访问 缺省 可以被同一包如果子类没有在同无访问修饰符 中的所有类访一个包中,也不能 问 修饰符 名称 访问 说明 static final abstract native synchronized 备注 提供不依赖于类实例 静态方法(又的服务 称为类方法,并不需要创建类的实 其它的称为 例就可以访问静态方 实例方法) 法 注意不要使用const,虽然它和C、C++中的防止任何子 const关键字含义一样 类重载该方 可以同static一起使 法 用,避免对类的每个实例维护一个拷贝 抽象方法,类不能将static方法、中已声明而final方法或者类的构没有实现的造器方法声明为方法 abstract 用该修饰符定义的方法参见Sun的Java 在类中没有Native接口(JNI),实现,而大多JNI提供了运行时加载数情况下该一个native方法的实方法的实现现,并将其于一个Java是用C、C++类关联的功能 编写的。 当一个此方法被调用时,没有其它线程能够 多线程的支调用该方法,其它的持 synchronized方法也 不能调用该方法,直到该方法返回 接口 访问修饰符 interface 接口名称 extends 接口列表 1.接口不能够定义其声明的方法的任何实现 2.接口中的变量总是需要定义为“public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样,显示的包含修饰符主要是为了程序清晰 访问修饰符 名称 说明 备注 public 所有 无访问修饰符(默认)同一个包内 java重要知识点总结如下: 1,抽象,封装,继承,多态是面向对象程序设计中得四个特点.2,面向对象得软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现.可概括为如下过程:分析用户需求,从问题中抽取对象模型;细化模型,设计类,包括类的属性和类间的 相互关系,同时观察是否有可以直接引用的已有类或部件;选定一种面向对象的编程语言,具体编码实现 上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案.3,面向对象程序设计方法的优点是:可重用性,可扩展性,可管理性.4,类的定义:class前的修饰符分为访问控制符和非访问控制符两大类.访问控制符包括public和private.非访问控制符包括abstract(抽象),final(最终).5,final类是最终类,是不能有子类的类.abstract和final不能同时修饰一个类,因为抽象类本身没有具体对象,需要派生出子类后在创建子类的对象.而最终类不可能有子类.6,创建对象的格式为: 类名 对象名=new 构造方法(参数);注意前面是类名后面是构造方法.注意构造方法没有返回类型,也不能写void,主要用于完成类对象的初始化工作,一般不能直接由编程 直接调用,而是用new运算符来调用.7,如果class前面由public修饰符,则默认构造方法的前面也应该有public修饰符.8,类中有static修饰的域或方法,可用类名或对象名访问,否则只能用对象名访问.9,修饰域的访问控制符可以是:public,private,protected,private protected.非访问控制符可以是: static,final,volatile(易失域) 10,类变量的最本质的特点是:他们是类的域,不属于任何一个类的具体对象实例.不是保存在某个对象实例的内存空间中,而是保存在类的内存区域的公共存储单元中.11,局部变量是在方法体内声明的,只有当方法被调用时他们才存在,因而只能在本方法内使用,不存在访问控制符,也不能声明为静态变量(static),但可以声明为final变量.局部变量必须初始化.12,修饰方法的访问控制符可以是:public,private,protected,private protected,修饰方法的非访问控制符可以是:static,final,abstract,native(本地方法),synchronized(同步方法)。 13,用static修饰的变量或方法都为类成员,类成员可以用类名或实例名访问,实例成员只能用实例名来访问。 14,如果一个类中含有抽象方法,则此类必须为抽象类,如果抽象类的子类不为抽象类,则子类必须实现父类的所有抽象方法。抽象方法不能用静态方法和最终方法。抽想方法只有函数头的声明,而用分号来替代方法体,没有大括号。如abstract void abstractmethod(); 15,this变量用在一个方法的内部,指向当前对象,当前对象指的是调用当前正在执行的方法的那个对象。super变量是直接指向父类的构造方法,用来引用父类种的变量和方法。(由于他们指的是对象,所以不能通过它来引用类变量和类方法) 16,如果要引用一个包中的多个类,可以用星号来代替。使用星号只能表示本层次的所有类,而不包括子层次下的类。所以经常需要用两条语句来引入两个层次的类:import java.awt.*;import java.awt.event.*; 17,访问修饰符: --类中限定为public的成员可以被所有的类访问。 --类中先定位private的成员只能被这个类本身访问。同一个类的不同对象可以访问对方的private域变量或调用对方的域方法,这是因为访问保护控制在类的级别上,而不是对象的级别上。 --类中限定为protected的成员可以被这个类本身,它的子类(包括同一个包中和不同包中的子类),以及同一个包中的其他类访问。 --用private protected修饰的成员可以被该类本身访问,也可以被该类的所有子类访问。 --默认访问控制符规定只能被同一个包中的类访问和引用,而不能被其他包的类访问。即他的访问权限是friendly。 18,注意: ----abstract和private,static,final,native不能并列修饰同一个方法。 ----abstract类中不能有private修饰的域和方法 ----static方法不能处理非static的域。 19,重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同。重载的多个方法必须返回相同的数据类型。 20,在java中,一个类获取某一接口定义的功能并不是通过直接继承这个接口的属性和方法来实现的。因为接口中的属性都是常量,接口的方法都是没有方法体的抽象方法,没有具体定义操作。第四篇:类、方法、属性访问修饰符与修饰符小结
第五篇:java知识点小结