文档库 最新最全的文档下载
当前位置:文档库 › java 枚举和注解

java 枚举和注解

java 枚举和注解
java 枚举和注解

1. 枚举类的说明:

* 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类

* 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式。

2. 如何自定义枚举类?步骤:

//自定义枚举类

class Season{

//1.声明Season对象的属性:private final修饰

private final String seasonName;

private final String seasonDesc;

//2.私化类的构造器,并给对象属性赋值

private Season(String seasonName,String seasonDesc){

this.seasonName = seasonName;

this.seasonDesc = seasonDesc;

}

//3.提供当前枚举类的多个对象:public static final的

public static final Season SPRING = new Season("春天","春暖花开");

public static final Season SUMMER = new Season("夏天","夏日炎炎");

public static final Season AUTUMN = new Season("秋天","秋高气爽");

public static final Season WINTER = new Season("冬天","冰天雪地");

//4.其他诉求1:获取枚举类对象的属性

public String getSeasonName() {

return seasonName;

}

public String getSeasonDesc() {

return seasonDesc;

}

//4.其他诉求1:提供toString()

@Override

public String toString() {

return "Season{" +

"seasonName='" + seasonName + '\'' +

", seasonDesc='" + seasonDesc + '\'' +

'}';

}

}

3. jdk 5.0 新增使用enum定义枚举类。步骤:

//使用enum关键字枚举类

enum Season1 {

//1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束SPRING("春天","春暖花开"),

SUMMER("夏天","夏日炎炎"),

AUTUMN("秋天","秋高气爽"),

WINTER("冬天","冰天雪地");

//2.声明Season对象的属性:private final修饰

private final String seasonName;

private final String seasonDesc;

//2.私化类的构造器,并给对象属性赋值

private Season1(String seasonName,String seasonDesc){

this.seasonName = seasonName;

this.seasonDesc = seasonDesc;

}

//4.其他诉求1:获取枚举类对象的属性

public String getSeasonName() {

return seasonName;

}

public String getSeasonDesc() {

return seasonDesc;

}

}

4. 使用enum定义枚举类之后,枚举类常用方法:(继承于https://www.wendangku.net/doc/3114148545.html,ng.Enum类)Season1 summer = Season1.SUMMER;

//toString():返回枚举类对象的名称

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

// System.out.println(Season1.class.getSuperclass());

System.out.println("****************");

//values():返回所的枚举类对象构成的数组

Season1[] values = Season1.values();

for(int i = 0;i < values.length;i++){

System.out.println(values[i]);

System.out.println("****************");

Thread.State[] values1 = Thread.State.values();

for (int i = 0; i < values1.length; i++) {

System.out.println(values1[i]);

}

//valueOf(String objName):返回枚举类中对象名是objName的对象。

Season1 winter = Season1.valueOf("WINTER");

//如果没objName的枚举类对象,则抛异常:IllegalArgumentException // Season1 winter =Season1.valueOf("WINTER1");

System.out.println(winter);

5. 使用enum定义枚举类之后,如何让枚举类对象分别实现接口:interface Info{

void show();

}

//使用enum关键字枚举类

enum Season1 implements Info{

//1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束

SPRING("春天","春暖花开"){

@Override

public void show() {

System.out.println("春天在哪里?");

}

},

SUMMER("夏天","夏日炎炎"){

@Override

public void show() {

System.out.println("宁夏");

}

},

AUTUMN("秋天","秋高气爽"){

@Override

public void show() {

System.out.println("秋天不回来");

}

},

WINTER("冬天","冰天雪地"){

@Override

public void show() {

System.out.println("大约在冬季");

};

}

1. 注解的理解

①jdk 5.0 新增的功能

*

②Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用Annotation,

* 程序员可以在不改变原逻辑的情况下, 在源文件中嵌入一些补充信息。

*

③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android

* 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE 旧版中所遗留的繁冗

* 代码和XML配置等。

框架= 注解+ 反射机制+ 设计模式

2. 注解的使用示例

* 示例一:生成文档相关的注解

* 示例二:在编译时进行格式检查(JDK内置的个基本注解)

@Override: 限定重写父类方法, 该注解只能用于方法

@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的择

@SuppressWarnings: 抑制编译器警告

* 示例:跟踪代码依赖性,实现替代配置文件功能

3. 如何自定义注解:参照@SuppressWarnings定义

* ①注解声明为:@interface

* ②内部定义成员,通常使用value表示

* ③可以指定成员的默认值,使用default定义

* ④如果自定义注解没成员,表明是一个标识作用。

说明:

如果注解有成员,在使用注解时,需要指明成员的值。

自定义注解必须配上注解的信息处理流程(使用反射)才意义。

自定义注解通过都会指明两个元注解:Retention、Target

代码举例:

@Inherited

@Repeatable(MyAnnotations.class)

@Retention(RetentionPolicy.RUNTIME)

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR,

LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})

public @interface MyAnnotation {

String value() default "hello";

}

4.元注解:对现有的注解进行解释说明的注解。

jdk 提供的4种元注解:

Retention:指定所修饰的Annotation 的生命周期:SOURCE\CLASS(默认行为\RUNTIME

只声明为RUNTIME生命周期的注解,才能通过反射获取。

Target:用于指定被修饰的Annotation 能用于修饰哪些程序元素

*******出现的频率较低*******

Documented:表示所修饰的注解在被javadoc解析时,保留下来。

Inherited:被它修饰的Annotation 将具继承性。

--->类比:元数据的概念:String name = "Tom";

5.如何获取注解信息:通过发射来进行获取、调用。

前提:要求此注解的元注解Retention中声明的生命周期状态为:RUNTIME.

6.JDK8中注解的新特性:可重复注解、类型注解

6.1 可重复注解:①在MyAnnotation上声明@Repeatable,成员值为MyAnnotations.class

②MyAnnotation的Target和Retention等元注解与MyAnnotations相同。

6.2 类型注解:

ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中(如:泛型声明。

ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中。

全面掌握java枚举类型

枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。下面就是一个典型枚举类型的定义: Java代码 1.public enum Color{ 2. RED,BLUE,BLACK,YELLOW,GREEN 3.} 显然,enum很像特殊的class,实际上enum声明定义的类型就是一个类。而这些类都是类库中Enum类的子类(https://www.wendangku.net/doc/3114148545.html,ng.Enum)。它们继承了这个Enum中的许多有用的方法。下面我们就详细介绍enum定义的枚举类的特征及其用法。(后面均用Color举例) 1、Color枚举类是特殊的class,其枚举值(RED,BLUE...)是Color的类对象(类实例): Color c=Color.RED; 而且这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。 2、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。但是,枚举类的构造器有很大的不同: (1) 构造器只是在构造枚举值的时候被调用。 Java代码 1.enum Color{ 2. RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(2 55,255,0),GREEN(0,255,0); 3. //构造枚举值,比如RED(255,0,0) 4. private Color(int rv,int gv,int bv){ 5. this.redValue=rv; 6. this.greenValue=gv; 7. this.blueValue=bv; 8. } 9. 10. public String toString(){ //自定义的public方 法 11. return super.toString()+"("+redValue+","+greenVa lue+","+blueValue+")"; 12. } 13. 14. private int redValue; //自定义数据域,private为 了封装。 15. private int greenValue;

java29常用类之Enum(枚举类)

Enum类 Enum枚举类就是class,而且是一个不可以被继承的final类。(后面均用Color举例)。 其枚举值(RED,BLUE...)都是Color类型的类静态常量,我们可以通过下面的方式来得到Color枚举类的一个实例: Color c=Color.RED; 注意:这些枚举值都是public static final的,也就是我们经常所定义的常量方式,因此枚举类中的枚举值最好全部大写。 1、即然枚举类是class,当然在枚举类型中有构造器,方法和数据域。但是,枚举类的构造器有很大的不同,不能使用public的构造函数,只能使用private的构造函数,这样可以保证外部代码无法新构造枚举类的实例。 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 3.Enum默认实现了https://www.wendangku.net/doc/3114148545.html,parable接口。 4.Enum覆载了了toString方法,因此我们如果调用 Color.Blue.toString()默认返回字符串”Blue”. 5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.RED.ordinal(); //返回结果:0 Color.BLUE.ordinal(); //返回结果:1 8.equals()方法:比较两个枚举类对象的引用。 public final boolean equals(Object other) { return this==other; } https://www.wendangku.net/doc/3114148545.html,pareTo()方法: Enum实现了https://www.wendangku.net/doc/3114148545.html,parable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。当然,前提是两个枚举值必须属于同一个枚举类,否则会抛出ClassCastException()异常。 https://www.wendangku.net/doc/3114148545.html,pareTo(Color.BLUE); //返回结果-1 10.枚举类可以在switch语句中使用。 Color color=Color.RED; switch(color){ case RED: System.out.println("it's red");break; case BLUE: System.out.println("it's blue");break; case BLACK: System.out.println("it's blue");break; } 枚举类的定义: 例1: public class TestEnum { //只能是三种颜色之一

java枚举类型

java枚举类型 public class TestEnum { /*最普通的枚举*/ public enum ColorSelect { red, green, yellow, blue; } /* 枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样. */ public enum Season { // 枚举列表必须写在最前面,否则编译出错 winter, spring, summer, fall; private final static String location = "Phoenix"; public static Season getBest() { if (location.equals("Phoenix")) return winter; else return summer; } } /*还可以有构造方法*/ public enum Temp { /*通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错 * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值 * 如果不赋值则不能写构造器,赋值编译也出错*/ absoluteZero(-459), freezing(32),boiling(212), paperBurns(451); private final int value; public int getValue() { return value; } //构造器默认也只能是private, 从而保证构造函数只能在内部使用 Temp(int value) { this.value = value; } } public static void main(String[] args) { /* * 枚举类型是一种类型,用于定义变量,以限制变量的赋值赋值时通过"枚举名.值"来取得相

JAVA类成员

static 关键字修饰的成员就是类成员,前面已经介绍的类成员有类属性、类方法、静态初始化块等三个成分,static关键字不能修饰构造器。static修饰的类成员属于整个类,不是属于单个实例的。 在JA V A类里只能包含属性,方法,构造器,初始化块,内部类和枚举类等六种成员,也包含了接口,目前已经介绍了前面四种,其中static可以修饰属性,方法,初始化块,内部类和枚举类,以static修饰的成员就是类成员,类成员属于整个类,而不是属于单个对象。 我们要知道,当系统第一次准备使用该类时,系统会为该类属性分配内存空间,类属性开始生效,直到该类被卸载,该类的类属性怕占有的内存才被系统的垃圾回收机制回收。类属性生存范围几乎等同于该类的生存范围,当类初始化完成后,类属性也被初始化完成。 类属性既可通过类来访问,也可通过类的对象来访问。但通过类的对象来访问类属性时,实际上并不是访问该对象所具有的属性。当通过对象来访问类属性时,系统会在底层转换让为通过该类来访问类属性。 由于所有对象实际上并不保持类属性,类属性是由该类来保持的,同一个类的所有对象访问类属性时,实际上访问的是该类所持有的属性。因此从程序运行表面上来看,即可看到同一类的所有实例的类属性共享同一块内存区。 类方法也是类成员的一种,类方法也是属于类的,通常直接使用类作为调用类方法,但也可以使用对象来调用类方法。与类属性类似的,即使使用对象来调用类方法,其效果与采用类来调用类方法完全一样。 当使用实例来访问类成员时,实际依然委托给该类来访问类成员,因此即使某个实例为Null它也可以访问它所属类的类成员。

本来是不想写太多的概念性的东西的,但为了大家能更好的理解写出来的代码,所以还是麻烦下自已写出来。 看代码: public class NullAccessStatic { private static void test() { System.out.println("static修饰的类方法"); } //主方法入口 public static void main(String[] args) { //定义一个NullAccessStatic变量,其值为:null NullAccessStatic nas = null; //null对象调用所属类的静态方法 nas.test(); } }

实验一:电磁波反射和折射实验

实验一:电磁波反射和折射实验

电磁场与微波测量第一次实验 ——电磁场与微波测量实验 2017-3-11 院系:电子工程学院 班级:2014211201 组号:7组 组员:梁嘉琪(报告)李婉婷 学号:2014210819 2014210820

实验一:电磁波反射和折射实验 一、实验目的 1、熟悉S426型分光仪的使用方法。 2、掌握分光仪验证电磁波反射定律的方法。 3、掌握分光仪验证电磁波折射定律的方法。 二、实验设备与仪器 S426型分光仪 三、实验原理 电磁波在传播过程中如遇到障碍物,必定要发生反射,本处以一块大的金属板作为障碍物来研究当电磁波以某一入射角投射到此金属板上所遵循的反射定律,即反射线在入射线和通过入射点的法线所决定的平面上,反射线和入射线分居在法线两侧,反射角等于入射角。 验证均匀平面波在无耗媒质中的传播特性;均匀平面波垂直入射理想电解质表面的传播特性。 四、实验内容与步骤 1、熟悉分光仪的结构和调整方法。 2、连接仪器,调整系统。 仪器连接时,两喇叭口面应互相正对,他们各自的轴线应在一条直线上。指示两喇叭的位置

的指针分别指于工作平台的90刻度处,将支座放在工作平台上,并利用平台上的定位销和刻线对正支座(与支座上刻线对齐)拉起平台上四个压紧螺钉旋转一个角度放下,即可压紧支座。 3、测量入射角和反射角 反射金属板放到支座上时,应使金属板平面与支座线面的小圆盘上的某一对刻线一致。而把带支座的金属反射板放到小平台上时,应使圆盘上的这对与金属板平面一致的刻线与小平台上相应90刻度的一对刻线一致。这时小平台上的0刻度就与金属板的法线方向一致。 转动小平台,使固定臂指针指在某一角度处,这角度的读数就是入射角,然后转动活动臂在电流表上找到最大指示处,此时活动臂的指针所指的刻度就是反射角。如果此时表头指示太呆或太小,应调整衰减器、固态振荡器或晶体检波器,使表头指示接近满量程。 4、注意: 做此项实验,入射角最好取30至65度之间。因为入射角太大接受喇叭有可能直接接受入射波。注意系统的调整和周围环境的影响。

Java

基本语法 编写Java程序时,应注意以下几点: ?大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 ?类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。 ?方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 ?源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。 ?主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。 Java标识符 Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于Java标识符,有以下几点需要注意: ?所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始 ?首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合 ?关键字不能用作标识符 ?标识符是大小写敏感的 ?合法标识符举例:age、$salary、_value、__1_value ?非法标识符举例:123abc、-salary

Java修饰符 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符: ?访问控制修饰符: default, public , protected, private ?非访问控制修饰符: final, abstract, strictfp 在后面的章节中我们会深入讨论Java修饰符。 Java变量 Java中主要有如下几种类型的变量 ?局部变量 ?类变量(静态变量) ?成员变量(非静态变量) Java数组 数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。 Java枚举 Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。 例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。 实例

java 枚举和注解

1. 枚举类的说明: * 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类* 2.当需要定义一组常量时,强烈建议使用枚举类 * 3.如果枚举类中只一个对象,则可以作为单例模式的实现方式。 2. 如何自定义枚举类?步骤: //自定义枚举类 class Season{ //1.声明Season对象的属性:private final修饰 private final String seasonName; private final String seasonDesc; //2.私化类的构造器,并给对象属性赋值 private Season(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.提供当前枚举类的多个对象:public static final的 public static final Season SPRING = new Season("春天","春暖花开"); public static final Season SUMMER = new Season("夏天","夏日炎炎"); public static final Season AUTUMN = new Season("秋天","秋高气爽"); public static final Season WINTER = new Season("冬天","冰天雪地"); //4.其他诉求1:获取枚举类对象的属性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //4.其他诉求1:提供toString() @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }

习题答案 第6章 平面电磁波的反射与折射

第6章 平面电磁波的反射与折射 6.1/ 6.1-1 电场强度振幅为0i E =0.1V/m 的平面波由空气垂直入射于理想导体平面。试求: (a)入射波的电、磁能密度最大值; (b)空气中的电、磁场强度最大值; (c)空气中的电、磁能密度最大值。 [解] (a) 314/10427.4m J w eM -?= 31410427.4m J w m M -?= (b) m V E /2.01= m A H /103.541-?= (c) 313/107708.1m J w eM -?= 313/107708.1m J w m M -?= 6.2/ 6.1-2 均匀平面从空气垂直入射于一介质墙上。在此墙前方测得的电场振幅分布 如题图6-1所示,求: (a)介质墙的)1(=r r με; (b)电磁波频率f 。 [解] (a) 9=r ε (b) M H z Hz f 75105.77 =?= 6.3/ 6.1-3 平面波从空气向理想介质( r μ=1,σ=0)垂直入射,在分界面上0E =16V/m , 0H =0.1061A/m 。试求: (a)理想介质(媒质2)的r ε; (b)i E ,i H ,r E ,r H ,t E ,t H ; (c) 空气中的驻波比S 。 [解] (a) 25.6=r ε (b) ()0010,/2811εμω===--k m V e e E E z jk z jk i i ()m A e e E H z jk z jk i i /0743.0377 28110 --== = η

()()() m A e e H H k k k m V e e E E m A e e E H m V e e RE E z jk z jk t t r z jk z jk t t z jk z jk r r z jk z jk i r /1061.05.2,/16/0318.0377 12) /(122222111101122200 0----+========= = -==εεμωη (c) 5.2429 .01429 .0111=-+= -+= R R S 6.4/ 6.1-4 当均匀平面波由空气向理想介质(1=r μ,σ=0)垂直入射时,有96%的入射功率输入此 介质,试求介质的相对介电常数r ε。 [解] 25.2=r ε 6.5/ 6.1-5频率为30MHz 的平面波从空气向海水(r ε=81,1=r μ,σ=4/S/m )垂直入射。在该频率上 海水可视为良导体。已知入射波电场强度为10mV/m ,试求以下各点的电场强度: (a)空气与海水分界面处; (b)空气中离海面2.5m 处; (c)海水中离海面2.5m 处。 [解] (a) ()m V TE E E i t /1003.4102.440403.02.4442000 ∠--?=?∠=== (b) ( )() ()m mV j E j z k E j e e E e E E i i z jk z jk i z jk z jk i /202sin 2Re 010*******==-=-≈+=∴-- (c ) 2.445.28.215.28.21402100 3.422j j z j z t e e e e e E E ?-?----?==βα () ()m V /)4.198(1064.82.446.312210143.21003.428244 -∠?=+-∠???=--- 6.6/ 6.1-6 10GHz 平面波透过一层玻璃(r ε=9,1=r μ)自室外垂直射入室内,玻璃的厚度为4mm , 室外入射波场强为2V/m ,求室内的场强。 [解] ()951 .0309.0465.0816212144288 144 3j e e e E j j j i +-=?-?= --- ()()m V /6.12957.14.148.31446 -∠=∠-∠= ()()m A E H i i /6.1291016.4377 6.1295 7.130 3 3-∠?=-∠= = -η

第8周 枚举 泛型 常用类(西南交大)

/*通过getValue()取得相关枚举的值*/ System.out.println(t+"的值是"+t.getValue()); } } } 要求: (1)分析该程序,写出运行结果 【实验结果与分析】 图1 运行结果 分析:该程序主要应用了泛型和枚举的知识点。 2、编辑、编译、运行下面java程序 class Gen { private T ob; //定义泛型成员变量 public Gen(T ob) { this.ob = ob; } public T getOb() { return ob; }

public void setOb(T ob) { this.ob = ob; } public void showTyep() { System.out.println("T的实际类型是: " + ob.getClass().getName()); } } public class GenDemo { public static void main(String[] args){ //定义泛型类Gen的一个Integer版本 Gen intOb=new Gen(88); intOb.showTyep(); int i= intOb.getOb(); System.out.println("value= " + i); System.out.println("----------------------------------"); //定义泛型类Gen的一个String版本 Gen strOb=new Gen("Hello Gen!"); strOb.showTyep(); String s=strOb.getOb(); System.out.println("value= " + s); } } 要求: (1)分析该程序,写出运行结果 【实验结果与分析】 图2 运行结果 分析:该程序继续考察泛型的应用。 _________________________________________________________________________________ 3、编辑并运行下面程序,理解Date、SimpleDateFormat类的使用 用Data类不带参数的构造方法创建日期,要求日期的输出格式是:星期小时分秒import java.util.*;

电磁波反射与折射的研究(试题学习)

电磁波反射和折射的研究 一. 实验目的 1. 研究电磁波在良导体表面的反射; 2. 研究电磁波在良介质表面的反射和折射; 3. 研究电磁波全反射和全折射的条件。 二. 实验原理: 1.电磁波斜入射到不同介质分界面上的反射和折射 如图1所示, 平行极化的均匀平面波以角度θ 入射到良介质表面时,入射波、反射波和折射波可用下列式子表示为 图1. 平行极化波的斜入射示意图 入射波: ) cos sin (m 1)sin cos (θθθθz x jk z x e E +-+ +-=a a E )cos sin (1 m 1θθηz x jk y e E +-++ =a H 反射波: ) cos sin (m //1)sin cos (θθθθ'-'-+ -'-'-=z x jk z x e E R a a E )cos sin (1 m //1θθη'-'-+ - =z x jk y e E R a H 折射波: ) cos sin (m //t 2)sin cos (θθθθ''+''-+ ''-''=z x jk z x e E T a a E )cos sin (2 m //t 2θθη''+''-+=z x jk y e E T a H E + E t ⊙ ⊙ ⊙ E - θ '' θ ' θ z x H + H - H t

式中, 2221112 2 2111 , , ,εμωεμωεμηεμη==== k k 利用分界面上(z = 0)电场和磁场切向分量连续的边界条件,可得斯耐尔反射定律: θθ'= 和斯耐尔折射定律: 2 1 2 21 12 1 021sin sin εεεμεμθθμμμ时=== = =''k k 并计算出平行极化波的反射系数R //和折射系数T //: θηθηθηθη' '+' '-= cos cos cos cos 2121//R θηθηθ η' '+= cos cos cos 2212//T 类似地,可求出垂直极化波的反射系数和折射系数: θηθηθηθη' '+' '-= ⊥cos cos cos cos 1212R θηθηθ η' '+=⊥cos cos cos 2122T 2.全折射发生的条件: 全折射也即没有反射波,发生全折射的条件可通过令反射系数为零得到。 (1) 对平行极化情形,令0//=R ,可得全折射时的入射角: 1 2 1 2 121 P tan sin εεεεεθθ--=+== 该入射角称为布儒斯特角。可以证明,此时的折射角P 90θθ-?=''。可见,若电磁波以角度θP 入射到厚度为d 的介质板表面,则 2 11P cos sin εεεθθ+= ='' 这正是电磁波由ε2到ε1的全折射条件。因此,当电磁波以布儒斯特角从介质板的一侧入射时,在介质板的另一侧可接收到全部信号。如图2所示。 对垂直极化波,类似的推导结果表明,其不会发生全折射现象。

实验一:电磁波反射和折射实验

电磁场与微波测量第一次实验 ——电磁场与微波测量实验 2017-3-11 院系:电子工程学院 班级:2014211201 组号:7组 组员:梁嘉琪(报告)李婉婷 学号:2014210819 2014210820

实验一:电磁波反射和折射实验 一、实验目的 1、熟悉S426型分光仪的使用方法。 2、掌握分光仪验证电磁波反射定律的方法。 3、掌握分光仪验证电磁波折射定律的方法。 二、实验设备与仪器 S426型分光仪 三、实验原理 电磁波在传播过程中如遇到障碍物,必定要发生反射,本处以一块大的金属板作为障碍物来研究当电磁波以某一入射角投射到此金属板上所遵循的反射定律,即反射线在入射线和通过入射点的法线所决定的平面上,反射线和入射线分居在法线两侧,反射角等于入射角。验证均匀平面波在无耗媒质中的传播特性;均匀平面波垂直入射理想电解质表面的传播特性。 四、实验内容与步骤 1、熟悉分光仪的结构和调整方法。 2、连接仪器,调整系统。 仪器连接时,两喇叭口面应互相正对,他们各自的轴线应在一条直线上。指示两喇叭的位置的指针分别指于工作平台的90刻度处,将支座放在工作平台上,并利用平台上的定位销和刻线对正支座(与支座上刻线对齐)拉起平台上四个压紧螺钉旋转一个角度放下,即可

压紧支座。 3、测量入射角和反射角 反射金属板放到支座上时,应使金属板平面与支座线面的小圆盘上的某一对刻线一致。而把带支座的金属反射板放到小平台上时,应使圆盘上的这对与金属板平面一致的刻线与小平台上相应90刻度的一对刻线一致。这时小平台上的0刻度就与金属板的法线方向一致。转动小平台,使固定臂指针指在某一角度处,这角度的读数就是入射角,然后转动活动臂在电流表上找到最大指示处,此时活动臂的指针所指的刻度就是反射角。如果此时表头指示太呆或太小,应调整衰减器、固态振荡器或晶体检波器,使表头指示接近满量程。 4、注意: 做此项实验,入射角最好取30至65度之间。因为入射角太大接受喇叭有可能直接接受入射波。注意系统的调整和周围环境的影响。 五、实验数据与处理: 1. 金属板实验: 结论:入射角越大,入射角和反射角绝对差值越小。接受信号越强,受影响越小。 2. 观察介质板(玻璃板)上的反射和折射实验: 实验数据及处理如下表: 总电流(56μA)

Java枚举类型

Java枚举类型入门 这里就将为大家谈谈Java枚举类型,static final通常跟的是一个int类型的常数,所以有时候可以用int型代替枚举。在Java中,枚举确实是一个类。 Tiger中的一个重要新特性是枚举构造,它是一种新的Java枚举类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。Tiger 专家、developerWorks 的多产作者Brett McLaughlin将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的public static final 代码。 您已经知道,Java 代码的两个基本的构造块是类和接口。现在Tiger 又引入了枚举,一般简称它为enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。当然,熟练的程序员可以用静态常量实现这项功能,如清单 1 所示:清单 1. public static final 的常量 1.public class OldGrade { 2. 3.public static final int A = 1; 4.public static final int B = 2; 5.public static final int C = 3; 6.public static final int D = 4; 7.public static final int F = 5; 8.public static final int INCOMPLETE = 6; 9.} 说明:我要感谢O'Reilly 媒体公司,该公司允许在本文中使用我撰写的Java 1.5 Tiger:A Developer's Notebook 一书中“枚举”这一章中的代码示例(请参阅参考资料)。 然后您就可以让类接受像OldGrade.B 这样的常量,但是在这样做的时候,请记住这类常量是Java 中int 类型的常量,这意味着该方法可以接受任何int 类型的值,即使它和OldGrade 中定的所有级别都不对应。因此,您需要检测上界和下界,在出现无效值的时候,可能还要包含一个IllegalArgumentException。而且,如果后来又添加另外一个级别(例如OldGrade.WITHDREW_PASSING),那么必须改变所有代码中的上界,才能接受这个新值。 换句话说,在使用这类带有整型常量的类时,该解决方案也许可行,但并不是非常有效。幸运的是,枚举提供了更好的方法。 定义枚举清单 2 使用了一个可以提供与清单 1 相似的功能的枚举: 清单 2. 简单的枚举类型

电磁波接收与发射

电磁波接收与发射 一、实验内容 1、电磁波的能量 2、电磁波的电场方向 3、电磁波的磁场方向 4、天线辐射的角分布 5、电磁波的驻波 6、电磁波的共振 7、发射天线的电流振幅8、发射天线的电压振幅 9、演示开放电路10、传输线上的电压驻波 二、实验装置 图 3-40-1 电源:输入电压220V/50HZ。 输出直流600V,交流6.3V, 输入功率为85W。 发射管:FU-29中功率电子管。发射波长:约为1.8米。 三、实验原理探讨 本电磁波演示仪,是用电子管产生高频振荡,通过天线与振荡回路的耦合,在发射天线引起感应电流,在发射天线的周围就产生很强的电磁场,发射波长约为1.8米。由于发射天线是开放电路,电磁场充分暴露于空间,很有利于电磁场的辐射而形成很强的电磁波。通过半波振子接受天线上小电珠的明暗变化,演示电磁波的电场强弱及方向。用环形振子接受天线显示电磁波的磁场强弱及其方向。利用金属板(或墙面)对电磁波的反射在空间形成驻

波。 1、电源。输入220V、50H电压,输出高压。 2、发射机。采用自激推挽振荡,发射天线与振荡回路直接耦合。发射天线 是一条长为0.84米的金属管,是电磁波在天线导体中波长的一半,能很方便地放上与取下。在发射机的尾部放反射天线,它是一根长为1.02米的金属管。 3、环形接受天线。上面装有1.5V小电珠和微调电容器,用绝缘起子调整其 频率,用作演示发射天线上的电流振幅与磁场的方向。 4、半波振子接受天线。它由两根拉杆天线组成,中间装有6.3V小电珠,调 节其长度可以改变它的固有频率,用作演示。 5、氖泡棒。在一根绝缘棒的顶端装有氖泡,用作演示发射天线的电压振幅。 6、传输线一对。演示传输线上电压驻波用。 7、支架。放置发射机和传输线用。 四、实验现象与观察 将发射机安放在支架上发射天线与反射天线放入发射机中,把发射机的三孔插头插入电源中,预热5分钟,待发射管发热后即可使用(若输入电压低于220V可将电源器的输入端接入约0.5千伏安自藕变压器上)。 1、电磁波的能量 调节半波振子接受天线长度与发射天线长度相等。一只手将半波振子接受天 线放置电磁波发射方向,并于发射天线平行,相距一米左右,另一只手接通高压开关,接受天线上的小电珠立刻发亮,表明接受天线将部分电磁波的能量转化为光能。此时可用金属导体中的自由电子在交变电场的作用下移动,形成交变电流来解释,使学生加深对电场的认识。演示完毕关闭高压开关。 2、电磁波的电场方向 调整半波振子接受天线与发射天线同长度,将半波振子接受天线放在正对发 射天线约一米远处,接通高压开关,将半波振子接受天线水平地绕接受天线轴转动360度,可以观察到只有当接受天线与发射天线平行时,小电珠发亮。由此可以定出电磁波的电场方向,演示完毕关闭高压开关。

java中枚举类型enum的定义

枚举类型的定义enum Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum 的实例。 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 3.Enum默认实现了https://www.wendangku.net/doc/3114148545.html,parable接口。 4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”. 5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。 6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。 了解了这些基本特性,我们来看看如何使用它们。 1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach 循环来遍历了枚举值了。 for (Color c: Color.values()) System.out.println(“find value:” + c); 2.在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。

JAVA复习题

1、简述Java实现可移值性的基本原理。 答:Java属于编译型和解释型的编程语言,所有的*.java程序必须编译为*.class文件之后才可以在电脑上执行,而执行*.class文件的电脑并不是一台真实的电脑,而是利用软件和硬件模拟出来的一台虚拟电脑,称为Java虚拟机,而针对于不同的操作系统平台,有不同版本的Java虚拟机,即:由Java 虚拟机去适应不同的操作系统,即:只要Java虚拟机的支持没有改变,同一个*.class可以在不同的平台上运行。 2、简述Java语言的三个程序分支。 答:JAVA SE(Java标准版):提供基础的Java类库及平台支持: JAVA ME(Java微型版):提供嵌入式开发支持: JAVA EE(Java企业版):提供企业平台支持。 3、简述Java中path及classpath的作用。 CLASSPATH:是所有*.class文件的执行路径,java命令执行的时候将利用此路径加载所需要的*.class 文件。 4、简述Java语言的主要特点。 答:Java语言的主要的特点如下: 1、Java语言是一门面向对象语言,且语法足够简单; 2、Java避免了C/C++之中复杂的指针关系,而使用了更为简单的引用方式来进行内存传递; 3、Java是为数不多的支持多线程开发的编程语言; 4、Java提供了自动的垃圾收集机制,可以定期释放出无用的垃圾空间; 5、Java语言的安全性较高; 6、Java最大的特点是具备可移植性,即:同一个程序在不同的操作系统上都可以运行。5、详细阐述Java中使用public class或class声明一个类的区别及注意事项。 答:使用public class定义的类,要求文件名称和类名称保持一致,在一个*.java文件之中只能存在一个public class;使用class定义的类,文件名称可以和类名称不一致,在一个*.java文件之中可以同时存在多个class定义,编译之后会产生多个*.class文件。 1、请解释常量与变量的区别? 答:常量就是一个固定的数值。是不可改变的,例如:数字1、2就是一个整型的常量。 变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用。可以声明的数据类型为整型、字符型、浮点型或是其他数据类型,作为变量的保存之用。变量在程序语言中扮演了最基本的角色。变量可以用来存放数据,而使用变量之前必须先声明它的数据类型。 2、解释方法重载的概念,并举例说明。 答:方法重载指的是多个方法的方法名称相同,但是方法中的参数类型及个数不同。 代码说明: public static int add(int x, int y) { return x + y; } public static int add(int x, int y, int z) { return x + y + z; } public static double add(double x, double y) { return x + y; } 1、String类的操作特点。 答:String类的对象有两种实例化方式: |- 方式一:直接赋值,只开辟一块堆内存空间,并且对象可以入池;

JAVA中ENUM类型详解

JAVA中ENUM类型详解 Enum类型的介绍 枚举类型(Enumerated Type)很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。 举个例子来说明一下,如果希望为彩虹描绘出七种颜色,你可以在Java 程序中通过常量定义方式来实现。 清单1. 常量定义 Public static class RainbowColor { // 红橙黄绿青蓝紫七种颜色的常量定义 public static final int RED = 0; public static final int ORANGE = 1; public static final int YELLOW = 2; public static final int GREEN = 3; public static final int CYAN = 4; public static final int BLUE = 5; public static final int PURPLE = 6; } 使用的时候,你可以在程序中直接引用这些常量。但是,这种方式还是存在着一些问题。 1、类型不安全 由于颜色常量的对应值是整数形,所以程序执行过程中很有可能给颜色变量传入一个任意的整数值,导致出现错误。 2、没有命名空间 由于颜色常量只是类的属性,当你使用的时候不得不通过类来访问。 3、一致性差 因为整形枚举属于编译期常量,所以编译过程完成后,所有客户端和服务器端引用的地方,会直接将整数值写入。这样,当你修改旧的枚举整数值后或者增加新的枚举值后,所有引用地方代码都需要重新编译,否则运行时刻就会出现错误。 4、类型无指意性 由于颜色枚举值仅仅是一些无任何含义的整数值,如果在运行期调试时候,你就会发现日志中有很多魔术数字,但除了程序员本身,其他人很难明白其奥秘。 如何定义Enum类型 为了改进Java 语言在这方面的不足弥补缺陷,5.0 版本SDK 发布时候,在语言层面上增加了枚举类型。枚举类型的定义也非常的简单,用enum关键字加上名称和大括号包含

验证电磁波的反射和折射定律

信息与通信工程学院实验报告 (操作性实验) 课程名称:电磁场与电磁波 实验题目:验证电磁波的反射和折射定律 一、实验目的和任务 验证电磁波在媒质中传播遵循反射定理及折射定律。 1、研究电磁波在良好导体表面上的全反射。 2、研究电磁波在良好介质表面上的反射和折射。 3、研究电磁波全反射和全折射的条件。 二、实验仪器及器件 三、实验内容及原理 电磁波在传播过程中如遇到障碍物,必定要发生反射,本处以一块大的玻璃板作为障碍

物来研究当电磁波以某一入射角投射到此玻璃板上所遵循的反射定律,即反射线在入射线和通过入射点的法线所决定的平面上,反射线和入射线分居在法线两侧,反射角等于入射角。 电磁波斜投射到不同介质分布面上的反射和折射,为讨论和分析问题简便,下面所提到的电磁波均指均匀平面电磁波,如图 1 所示。在煤质分布面上有一平行极化波,以入射角斜投射时,入射波、反射波和折射波的电磁场可用下列公式表示: 入射波场 222(xcos xsin )20221(sin cos )e j x z E E a a βθθθθ--+=+ 111(xcos xsin )01 11 j y E H e a βθθη--+= 折射波场 222(xcos xsin )20221(sin cos )e j x z E E a a βθθθθ--+=+ 222(xcos xsin )02 22 j y E H e a βθθη--+= 以上各式中1η、2η分别表示波在两种媒质中的波阻抗。由边界条件可知,在分界面上x = 0 处,有* 1212,t t t t E E H H ==。同时,三种波在分界面处必须以同一速度向Z 方向传播,即它 们的波因子必须相等,则有: *1111sin sin βθβθ= 1122 s i n s i n βθβθ= 由此得:12θθ= 上式表明,媒质分界面上反射角等于入射角,即反射定律。由式得 222111111sin sin sin v v βθθθθθβ= === 上式即折射定律或施耐尔定律。

相关文档