A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程明 黑马帝   /  2011-11-26 15:53  /  1996 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

注解可以加在程序的什么位置?还有它的存在时间,是编译结束注解就不存在了吗?

5 个回复

倒序浏览
冯敏 黑马帝 2011-11-26 16:16:41
沙发
注解相当于一种标记,可以在程序中假如任何的标记,当编译器执行的时候,根据你的标记会产生相应的处理动作,编译结束注解还是依然存在的
回复 使用道具 举报
飞逸 黑马帝 2011-11-26 16:33:13
藤椅
注解 可以单行注释 Catrl+/  
多行是
/*
......
*/
还有文本注释
/*
*
*
*/

注释和代码一样方便阅读 编码结束后 不会消失。
回复 使用道具 举报
本帖最后由 颜小飞 于 2011-11-26 17:00 编辑

注解就等于为程序打上某种标记,以后,java编译器、开发工具和其它程序 可以用反射来了解你的类以及各种元素上有无何种标记。
注解可以加在:包、类、字段、方法、方法的参数和局部变量上。
注解有三个状态:分别是
RetentionPolicy.CLASS       编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。
RetentionPolicy.RUNTIME     编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
RetentionPolicy.SOURCE       编译器要丢弃的注释。
更详细的,请看jdk帮助文档

回复 使用道具 举报
用于注解说明解释程序的文字就是注释。
提高了代码的阅读性。
Java中的注释格式:
单行注释和多行注释是在程序用来标记一些特殊的文本,这些文本不参与编译运行。
单行注释:        // 注释内容
多行注释:        /* 注释内容 */
文档注释是Java中特有的一种注释,它可以通过JDK中的工具(javadoc.exe)解析,生成帮助文档。
文档注释:        /** 注释内容 */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

注释是一个程序员必须要具有的良好编程习惯。
初学者编写程序可以养成习惯:先写注释再写代码。

将自己的思想通过注释先整理出来,在用代码去体现。
因为代码仅仅是思想的一种体现形式而已。

/**
这是我的Hello World程序。
@author 小强
*/
class Demo
{
        /*
        这是主函数,是程序的入口
        它的出现可以保证程序的独立运行,
        */
        public static void main(String[] args)
        {
                //这是输出语句用于将括号内的数据打印到控制台。
                System.out.println("Hello World");
        }
}
回复 使用道具 举报
强子 黑马帝 2011-11-26 17:21:40
地板
了解注解及java提供的几个基本注解

非常重要
Annotation 注解
@SuppressWarnings
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译警告
@Deprecated
在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告
@Override
表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注释但没有重写超类方法,则编译器会生成一条错误信息。
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上
看java.lang包,可以看到JDK中提供的最基本的annotiation
注解的应用结构图
注解类---->应用了“注解类”的类----->对“应用了注解类的类”进行反射操作的类
注解类就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类。就想你要调用某个类,得先有开发好这个类。
@Retention元注解 标注注解的生命周期
RetetionPolicy.SOURCE,RetetionPolicy.CLASS,RetetionPolicy.RUNTIME分别对应源文件,class文件,内存中的字节码
@Target 表示注解的作用域
Interface Type 1.5 新东西
注解的属性
数组类型的属性
int[] arrayAttr() default{1,2,3};
@MyAnnotation(arrayAttr={2,3,4});
如果数组属性中只有一个元素,这时属性值部分可以声落大括号
枚举类型的属性
EnumTest.TrafficLamp lamp();
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN);
注解类型的属性
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
@MyAnnotation(annotationAttr=@MetaAbbotation("yyy"));
可以认为上面这个@MyAnnotation是MyAnnotation类的一个实例对象,同样的道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象。


以上是我在学习注解的时候的笔记 ,这部分自己理解的也不是很好 ,不会用自己的语言。
顺便说一句,注解和注释是两个概念吧,楼上这个是怎么回事?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马