门户网站建设 增强责任意识,参考消息电子版官网,江西省城乡建设培训网站官方网站,wordpress memcached命中率java的基本语法格式
[修饰符] class 类名{程序代码
}方法的定义
一般情况下#xff0c;定义一个方法包含以下语法#xff1a;
修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值;
}JAVA标识符规范#xff1a;
1.标识符可以由任意顺序的大小写字母、…java的基本语法格式
[修饰符] class 类名{程序代码
}方法的定义
一般情况下定义一个方法包含以下语法
修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值;
}JAVA标识符规范
1.标识符可以由任意顺序的大小写字母、数字、下划线_和美元符号组成不能以数字开头。 2.包名所有字母一律小写。 3.类名和接口名每个单词首字母都要大写。 4.常量名所有字母都要大写单词之间用下划线连接。 5.变量名和方法名的第一个单词首字母小写从第二个单词开始每个单词首字母大写变量名不能使用java中的关键字。 6.我们的变量名最好是用英文单词来描述。(见名知意) Java驼峰式命名法 1、变量名必须为有意义的单词 2、变量名如果只有一个单词则小写 3、如果有2个以及多个单词则从第二个单词开始首字母大写 给类和方法起名的时候尽量不要用中文拼音太长而且不好看。可以借鉴API里面的类似起名。 类名表示一类对象的抽象通常是名词形容词名词名词名词通常一个英文单词能表示组合中每个单词首字母大写AbstractStringBuilder.class。类名称力求表意能明确的表达所对应的意思。最好能够体现和其他名称的区分度比如InputStream和OutputStream而且容易扩展和分门别类FileInputStream、InputStreamReader。 方法名表示对象的行为通常是动词或者动词宾语动词的首字母小写其他单词首字母大写doSomething()。方法起名根据用法比如判断isOK()、能否canRead()、获得getThings()、从…cutFrom(…)、变成toString()、无对象行为run()和有对象行为goto(Object where等等好记很多。 最后记一记常用的单词 outer外部、inner内部、append附加、sub子的和sup父的、before之前、width宽、height高、default默认、switch匹配、index位置、count计数、encapsulation封装、init初始、show展示、para参数、sort排序、trim整理、buffer缓冲、ignore忽视、concatenate连接、submit提交、parse解析、confirm确认、set设置、none空无、scroll滚动、on当…、to变成、of什么的、at在…、max最大的、min最小的、add加、only只、constructor构造器、overload重载、override重写、position位置、inheritance继承、print打印、log日志、undo撤销、contain包含、result结果、connect连接、create创建、charset字符、translate翻译、direct方向、POST推送、channel频道、attribute属性、content内容、redo重做、edit编辑、format格式化、validate验证、invalidate失效、view视图、control控制、active活跃的、bean实体、order次序、simple简单、access访问、factory工厂、client客户端、prefix前缀、proxy代理、action动作、frame框、mapping映射、forward向前、backward向后、scope范围、dispatch分发、operate操作、iterate迭代、Iterator迭代器、condition条件、fresh刷新、member成员、fetch取得、identity标识、query查询、exact精确的、inverse反转、context上下文、aspect方面、orient朝向、advice通知、interceptor拦截器、target目标、focus焦点、remove移除、remote远程、synchronize同步、asynchronize异步、schedule时间表、point分数、total全部的、reference关系、insert插入、compare对比、rectangle矩形、triangle三角形、circle圈、invert倒转、since从…之后、date日期等。 API源码返回值-方法名-参数名-注释-说明都是最常用的单词看多了英语也会有很大提升。 Java修饰符
像其他语言一样Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符
访问控制修饰符 : default, public , protected, private非访问控制修饰符 : final, abstract, static, synchronized
Java 变量
Java 中主要有如下几种类型的变量
局部变量类变量静态变量成员变量非静态变量
Java 关键字
下面列出了 Java 关键字。这些关键字不能用于常量、变量、和任何标识符的名称。
类别关键字说明访问控制private私有的protected受保护的public公共的类、方法和变量修饰符abstract声明抽象class类extends扩充,继承final最终值,不可改变的implements实现接口interface接口native本地原生方法非 Java 实现new新,创建static静态strictfp严格,精准synchronized线程,同步transient短暂volatile易失程序控制语句break跳出循环case定义一个值以供 switch 选择continue继续default默认do运行else否则for循环if如果instanceof实例return返回switch根据值选择执行while循环错误处理assert断言表达式是否为真catch捕捉异常finally有没有异常都执行throw抛出一个异常对象throws声明一个异常可能被抛出try捕获异常包相关import引入package包基本类型boolean布尔型byte字节型char字符型double双精度浮点float单精度浮点int整型long长整型short短整型变量引用super父类,超类this本类void无返回值保留关键字goto是关键字但不能使用const是关键字但不能使用null空
接口
在 Java 中接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。 接口只定义派生要用到的方法但是方法的具体实现完全取决于派生类。
Java语言支持的变量类型
类变量独立于方法之外的变量用 static 修饰。 1.类变量也称为静态变量在类中以 static 关键字声明但必须在方法之外。 2.静态变量除了被声明为常量外很少使用。常量是指声明为public/privatefinal和static类型的变量。常量初始化后不可改变。 3.静态变量储存在静态存储区。经常被声明为常量很少单独使用static声明变量。 4.与实例变量具有相似的可见性。但为了对类的使用者可见大多数静态变量声明为public类型。 5.默认值和实例变量相似。数值型变量默认值是0布尔型默认值是false引用类型默认值是null。变量的值可以在声明的时候指定也可以在构造方法中指定。此外静态变量还可以在静态语句块中初始化。 6.静态变量可以通过ClassName.VariableName的方式访问。 7.类变量被声明为public static final类型时类变量名称一般建议使用大写字母。如果静态变量不是public和final类型其命名方式与实例变量以及局部变量的命名方式一致。 实例变量独立于方法之外的变量不过没有 static 修饰。 1.实例变量声明在一个类中但在方法、构造方法和语句块之外 2.当一个对象被实例化之后每个实例变量的值就跟着确定 3.访问修饰符可以修饰实例变量 4.实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见 5.实例变量具有默认值。数值型变量的默认值是0布尔型变量的默认值是false引用类型变量的默认值是null。变量的值可以在声明时指定也可以在构造方法中指定 6.实例变量可以直接通过变量名访问。但在静态方法以及其他类中就应该使用完全限定名ObejectReference.VariableName。 局部变量类的方法中的变量。 1.局部变量声明在方法、构造方法或者语句块中 2.访问修饰符不能用于局部变量 3.局部变量是在栈上分配的。 4.局部变量没有默认值所以局部变量被声明后必须经过初始化才可以使用。 非访问修饰符
static 修饰符用来修饰类方法和类变量。 1.静态变量 static 关键字用来声明独立于对象的静态变量无论一个类实例化多少对象它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。 类名.变量名//静态变量可以使用如下语法来访问2.静态方法 static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据然后计算这些数据。 类名.方法//静态方法可以使用如下两种语法来访问
实例对象名.方法3.静态代码块 当类被加载时静态代码块会执行由于类只加载一次因此静态代码块也只执行一次。通常会使用静态代码来对类的成员变量进行初始化。 static{//静态代码块的语法}final 修饰符用来修饰类、方法和变量final 修饰的类不能够被继承修饰的方法不能被继承类重新定义修饰的变量为常量是不可修改的。 1.final 变量 1.final 表示最后的、最终的含义变量一旦赋值后不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。 2.final 修饰符通常和 static 修饰符一起使用来创建类常量。 2.final 方法 1.父类中的 final 方法可以被子类继承但是不能被之类重写。 2.声明 final 方法的主要目的是防止该方法的内容被修改。 3.final 类 final 类不能被继承没有类能够继承 final 类的任何特性。 abstract 修饰符用来创建抽象类和抽象方法。 1.抽象类 1.抽象类不能用来实例化对象声明抽象类的唯一目的是为了将来对该类进行扩充。 2.一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法那么该类一定要声明为抽象类否则将出现编译错误。 3.抽象类可以包含抽象方法和非抽象方法。 2.抽象方法 1.抽象方法是一种没有任何实现的方法该方法的的具体实现由子类提供。 抽象方法不能被声明成 final 和 static。 2.任何继承抽象类的子类必须实现父类的所有抽象方法除非该子类也是抽象类。 3.抽象方法的声明以分号结尾例如public abstract sample();。 synchronized 和 volatile 修饰符主要用于线程的编程。 1.synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。 2.transient 修饰符 序列化的对象包含被 transient 修饰的实例变量时java 虚拟机(JVM)跳过该特定的变量。 该修饰符包含在定义变量的语句中用来预处理类和变量的数据类型。 3.volatile 修饰符 volatile 修饰的成员变量在每次被线程访问时都强制从共享内存中重新读取该成员变量的值。而且当成员变量发生变化时会强制线程将变化值回写到共享内存。这样在任何时刻两个不同的线程总是看到某个成员变量的同一个值。一个 volatile 对象引用可能是 null。 instanceof 运算符
该运算符用于操作对象实例检查该对象是否是一个特定类型类类型或接口类型。
instanceof运算符使用格式如下
( Object reference variable ) instanceof (class/interface type)如果运算符左侧变量所指的对象是操作符右侧类或接口(class/interface)的一个对象那么结果为真。
下面是一个例子
String name James;
boolean result name instanceof String; // 由于 name 是 String 类型所以返回真如果被比较的对象兼容于右侧类型,该运算符仍然返回true。
Java 增强 for 循环
Java5 引入了一种主要用于数组的增强型 for 循环。
Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式) {//代码句子
}1.声明语句声明新的局部变量该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块其值与此时数组元素的值相等。 2.表达式表达式是要访问的数组名或者是返回值为数组的方法。
public class Test {//举例public static void main(String args[]){int [] numbers {10, 20, 30, 40, 50};for(int x : numbers ){System.out.print( x );System.out.print(,);}System.out.print(\n);String [] names {James, Larry, Tom, Lacy};for( String name : names ) {System.out.print( name );System.out.print(,);}}
}以上实例编译运行结果如下
10,20,30,40,50,
James,Larry,Tom,Lacy,Arrays 类
java.util.Arrays 类能方便地操作数组它提供的所有方法都是静态的。
具有以下功能 给数组赋值通过 fill 方法。 对数组排序通过 sort 方法,按升序。 比较数组通过 equals 方法比较数组中元素值是否相等。 查找数组元素通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
具体说明请查看下表
序号方法和说明1public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中则返回搜索键的索引否则返回 (-(插入点) - 1)。2public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等则返回 true。如果两个数组包含相同数量的元素并且两个数组中的所有相应元素对都是相等的则认为这两个数组是相等的。换句话说如果两个数组以相同顺序包含相同的元素则两个数组是相等的。同样的方法适用于所有的其他基本数据类型ByteshortInt等。3public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型ByteshortInt等。4public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型ByteshortInt等。
可变参数
JDK 1.5 开始Java支持传递同类型的可变参数给一个方法。
方法的可变参数的声明如下所示
typeName... parameterName在方法声明中在指定参数类型后加一个省略号(…) 。 一个方法中只能指定一个可变参数它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
实例
public class VarargsDemo {public static void main(String args[]) {// 调用可变参数的方法printMax(34, 3, 3, 2, 56.5);printMax(new double[]{1, 2, 3});}public static void printMax( double... numbers) {if (numbers.length 0) {System.out.println(No argument passed);return;}double result numbers[0];for (int i 1; i numbers.length; i){if (numbers[i] result) {result numbers[i];}}System.out.println(The max value is result);}
}以上实例编译运行结果如下
The max value is 56.5
The max value is 3.0finalize() 方法
Java 允许定义这样的方法它在对象被垃圾收集器析构(回收)之前调用这个方法叫做 finalize( )它用来清除回收对象。
例如你可以使用 finalize() 来确保一个对象打开的文件被关闭了。
在 finalize() 方法里你必须指定在对象销毁时候要执行的操作。
finalize() 一般格式是
protected void finalize() {// 在这里终结代码
}关键字 protected 是一个限定符它确保 finalize() 方法不会被该类以外的代码调用。
当然Java 的内存回收可以由 JVM 来自动完成。如果你手动使用则可以使用上面的方法。
实例
public class FinalizationDemo { public static void main(String[] args) { Cake c1 new Cake(1); Cake c2 new Cake(2); Cake c3 new Cake(3); c2 c3 null; System.gc(); //调用Java垃圾收集器}
} class Cake extends Object { private int id; public Cake(int id) { this.id id; System.out.println(Cake Object id is created); } protected void finalize() throws java.lang.Throwable { super.finalize(); System.out.println(Cake Object id is disposed); }
}运行以上代码输出结果如下
$ javac FinalizationDemo.java
$ java FinalizationDemo
Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposedJava Scanner 类
java.util.Scanner 是 Java5 的新特征我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法
Scanner s new Scanner(System.in);next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。 2、对输入有效字符之前遇到的空白next() 方法会自动将其去掉。 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 next() 不能得到带有空格的字符串。
nextLine()
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。 2、可以获得空白。 如果要输入 int 或 float 类型的数据在 Scanner 类中也有支持但是在输入之前最好先使用 hasNextXxx() 方法进行验证再使用 nextXxx() 来读取