第一篇: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 默认修饰符 总结
Java 默认修饰符 总结
1.类(class)
可见性修饰符: public—在所有类中可见,在其他包中可以用import导
入。
缺省—就是没有修饰符,在同一个包中的类中可见,在其他包中不能用
import导入。
修饰符:final—终态类,表示该类不能被继承
abstract—抽象类,不能新建对象
2.变量(variable)
Java中变量有两种,方法变量和字段变量
方法变量只能用一个修饰符:final—表示常量,不能修改 下面是字段变量的修饰符
可见性修饰符:public—在任何类中可见 protected— 在子类中或同一个包中可见 private—只在本类中可见,子类中也不可见
缺省—在同一个包中可见,子类不在一个包中,子类中也不可见
修饰符:static—静态变量,被类的所有实例共享 final—常量,定义后不能修改
*transient—告诉编译器,在类对象序列化的时候,此变量不需
要持久保存
*volatile—指出可能有多个线程修改此变量,要求编译器优化以
保证对此变量的修改能够被正确的处理
这两带*的不是很常用,但也是Java的修饰符,我也不是很清楚
3.方法(method)
可见性修饰符:public—在任何类中可见 protected—在子类中或同一个包中可见 private—只在本类中可见,子类中也不可见
缺省—在同一个包中可见,子类不在一个包中,子类中也不可见
修饰符: static—静态方法,并不需要创建类的实例就可以访问静态方法 final—常方法,所有子类不能覆盖该方法,但可以重载 abstract—抽象方法,在抽象类中没有实现的方法 native—本地方法,参见Java Native Interface(JNI)
synchronized —在多线程中,synchronized方法调用时,其他所有方法不能调用该方法
3.接口(interface)
可见性修饰符:public—所有类中可见
缺省—同一个包中可见
接口中的变量总是需要定义为“ public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样
接口中的方法只能使用public和abstract修饰符
第三篇:java个人小结(范文模版)
原文[202_年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)在哪个包里的?呵呵,无他,唯手熟尔。
202_年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 所有 无访问修饰符(默认)同一个包内第五篇:类、方法、属性访问修饰符与修饰符小结