可变长的参数
在java5.0中,可以使用一种变长参数,也就是例如m(String… s)的东西,编译器会自动的将方法调用时的参数适当的封装成
数组
5.0之前
public class Test{
public static void main(String[] args){
}
}
JVM收到数据封装在数组里,然后传入方法
5.0之后
public class Test{
public static void main(String... s){
m();//此时实际调用的是那个无参的m()方法
//注意:调用可变长参数的方法,只在必要时调用
m(1,“abc”,”bcd”);
}
public static void m(){
System.out.println(“m()”);
}
public static void m(int a,String… s){
for(String s2:s){
System.out.println(s2+a);
}
}
}
注意:只在必要的时候进行。同时有参数为数组,就不能使用变长参数,有变长参数,就不能使用数组,不能共存。一个方法
最多只能有一个变长参数,而且是最后一个参数。
格式化输出
格式化I/O(Formatted I/O)
java.util.Sacner类可以进行格式化的输入,可以使用控制台输入,结合了BufferedReader和StringTokenizer的功能。
增加了类似C的格式化输入输出,简单的例子:
public class TestFormat{
public static void main(String[] args){
int a = 150000, b = 10;
float c = 5.0101f, d = 3.14f;
System.out.printf("%4d %4d%n", a, b);
System.out.printf("%x %x%n", a, b);
System.out.printf("%3.2f %1.1f%n", c, d);
System.out.printf("%1.3e %1.3e%n", c, d*100);
}
}
输出结果为:
150000 10
249f0 a
5.01 3.1
5.010e+00 3.140e+02
类型安全的枚举
枚举也是一个类型,枚举中的对象只能定义一次并在定义时给其初始化,定义之后不能再改变其值,只能从枚举中选择其一。
enum 枚举名{
枚举值1(..),枚举值2(..),.....;
}
在5.0之前使用模式做出枚举
final class Season{
public static final Season SPRING=new Season();
public static final Season WINTER=new Season();
public static final Season SUMMER=new Season();
public static final Season AUTUMN=new Season();
private Season(){}
}
完全等价于
enum Season2{
SPRING(..),//枚举值
SUMMER(..),
AUTUMN(..),
WINTER(..);
......
}
枚举是一个反射关联的典型,反射关联,即在类的定义中有自身类型的属性。
枚举本质上也是一个类,Enum是枚举的父类。
枚举中的values()方法会返回枚举中的所有枚举值
枚举中可以定义方法和属性,最后的一个枚举值要以分号和类定义分开,枚举中可以定义的构造方法。
枚举可以实现接口,枚举不能有子类也就是final的,枚举的构造方法是private(私有的),枚举中可以定义抽象方法,可以
在枚举值的值中实现抽象方法,枚举值就是枚举的对象,枚举默认是final,枚举值可以隐含的匿名内部类来实现枚举中定义
抽象方法。
枚举类(Enumeration Classes)和类一样,具有类所有特性。Season2的父类是java.lang.Enum;
隐含方法Season2[] ss=Season2.values(); 每个枚举类型都有的方法。enum可以在switch,case语法中使用(不加类
名)。
例:
switch( s ){
case SPRING:
…………….
case SUMMER:
…………….
…………..
}
枚举类可以写有参构造方法,注意这个构造方法的权限修饰符要是private即私有的,且枚举类的构造方法默认权限修饰符不
是default而是private
enum Season2{
SPRING(“春”),
SUMMER(“夏”),
AUTUMN(“秋”),
WINTER(“冬”);//注意这个分号,它代表枚举值结束
private String name;
Season2(String name){
this.name=name;
}
String getName(){
return name;
}
}
Season2.SPRING.getName();
枚举的高级用法:
枚举类中可以定义抽象方法,虽然枚举类是不能有子类的但是,枚举值可以覆盖枚举类中的定义的抽象方法。
例如下:
enum Operation{
ADD{//可以在枚举之中覆盖抽象方法
public double calculate(double s1,double s2){
return s1+s2;
}
},
SUBSTRACT{
public double calculate(double s1,double s2){
return s1-s2;
}
},
MULTIPLY{
public double calculate(double s1,double s2){
return s1*s2;
}
},
DIVIDE{
public double calculate(double s1,double s2){
return s1/s2;
}
};
public abstract double calculate(double s1 ,double s2);//抽象方法
}
有抽象方法枚举元素必须实现该方法
分享到:
相关推荐
在“Java 第1章 了解java含源代码”中,我们将会探讨Java的基础知识,包括它的历史、特性、语法以及如何阅读和理解Java源代码。 1. **Java的历史**:Java的诞生源于C++,由James Gosling领导的团队开发,旨在创造一...
Java入门的基础资料,了解Java 语言 ; 了解Java 程序的类型 ; 掌握Java 程序运行环境的配置 ; 理解Java 虚拟机 (JVM); 了解Java的特点
了解Java 语言 了解Java 程序的类型 掌握Java 程序运行环境的配置 理解Java 虚拟机 (JVM) 了解Java的特点
Java简介及开发环境安装 Java是一种广泛使用的高级编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布。它设计的初衷是实现“一次编写,到处运行”的跨平台能力,通过Java虚拟机(JVM)...
Java简介与发展史 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年发布。它以其“一次编写,到处运行”(Write Once, Run Anywhere)的理念而闻名,因为它...
1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...
书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java虚拟机...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合...
程序设计语言 了解Java平台特性 了解Java集成开发环境 使用Eclipse开发Java应用 了解Java程序结构组成 常见问题
Java 汇总学习简介 Java 作为一种广泛使用的高级编程语言,其学习涵盖了许多方面。在深入探讨之前,我们先来了解一下 Java 的基本课程,包括 SL110、SL275 和 SL285,这些课程通常由 SUN 公司提供,旨在帮助初学者...
这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...
Java语言的基本语法是学习Java的第一步,了解Java语言的基本语法可以帮助开发者更好地掌握Java语言。 2. Java面向对象编程:Java语言支持面向对象编程(OOP),它可以模拟现实世界中的对象和关系。面向对象编程的...
Java面试通常涵盖多个...并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。
它包含了Java编译器(javac)、Java解释器(java)、Java文档生成器(javadoc)以及各种实用工具,如jar打包工具等。通过JDK,开发者可以编写、编译、运行和调试Java应用程序。 【IDEA(IntelliJ IDEA)】 ...
在深入学习Java的过程中,了解Java虚拟机(JVM)的工作原理也很关键。JVM负责解释和执行Java字节码,并执行垃圾收集,自动管理内存。Java的异常处理机制保证了程序在遇到错误时能有序地处理,而Java Foundation ...
阅读建议:此资源以开发随机出题系统学习其java GUI原理和内核,不仅是代码编写实现,也更注重内容上的需求分析和过程理解,所以比较适合java初学者了解java的使用和GUI界面的设计,并调试对应的代码。
下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...
Java程序员需要了解TCP/IP协议的工作原理和实现机制。 3. Java Socket类:Java中的Socket类是用于实现网络通信的核心类。Java程序员可以使用Socket类来创建Socket对象,并使用该对象来实现网络通信。 4. ...
对Java语言的基本认识,通过本文件可以了解Java语言。