很久没有写过JAVA程序了,发现有很多已经忘了,重新整理一遍,主要写一下容易遗忘的东西。
数据类型
数定义时可以直接指定 二进制0b 八进制0 十六进制0x
例:
int i = 10; //十进制
int j = 010; //八进制
int k = 0x10; //十六进制
int o = 0b10; //二进制
JAVA 中的浮点数机制特殊,在开发中应该避免使用浮点数进行比较。(使用BigDecimal类)
字符类型:
char i = '\u0061'; // 等于 i = a Unicode 编码中0061所代表的的字符
流程控制
使用 Scanner 进行输入
Scanner scanner = new Scanner(System.in);
//定义一个扫描器对象,用于接收键盘数据
if(scanner.hasNext()){}
scanner.hasNextInt() //判断是否有整数
scanner.hasNext....()
//判断用户有没有输入字符
String str = scanner.next(); //输入,遇空格结束
String str = scanner.nextLine(); //输入,读入一整行,遇回车结束
int i = scanner.nextLineInt(); //输入一个整数
int i = scanner.nextLine...(); //输入一个...
scanner.close(); //凡是属于IO流的类如果不关闭就会一直占用资源
方法
可变参数:
public static void add( double a,int... i) //i变成了数组,数组的长度和值都取决于调用
注解
这块在很多地方都没有讲解,但在框架和项目上都会出现,作为一个重点。
内置注解:
1.@Override --用于修辞重写方法,表示一个方法打算重写超累中的另一个方法的声明
2.@Deprecated --此注释可以用来修辞方法,类,属性,表示不建议使用这样的元素,通常这样是危险的或者存在更好的选择
3.@SuppressWarnings --用来抑制编译时的警告信息
元注解:用来提供对其他自定义注解的说明
1.@Target --用于描述注解的使用范围,包括:
(1)TYPE --类,接口,枚举类型
(2)FIELD --字段
(3)METHOD --方法
(4)PARAMETER --参数
(5)CONSTRUCTOR --构造器
(6)LOCAL_VARIABLE --本地变量
(7)ANNOTATION_TYPE --注解类型
(8)PACKAGE --包
(9)TYPE_PARAMETER --类型参数
(10)TYPE_USE --用户类型
2.@Retention --表示需要在什么级别保存注解信息(生效),包括:
(1)SOURCE --只在源码生效
(2)CLASS --在源码和编译的类里生效
(3)RUNTIME --在运行时也有效
总体而言RUNTIME>CLASS>SOURCE
3.@Document --表示该注解将被包含在Javadoc中
4.@Inherited --说明子类可以继承父类中的该注解
自定义一个注解如下:
public class Test3{
//注解可以显示赋值,如果没有默认值,我们就必须给注解一个值
@MyAnnotation(age = 20,id = 031740000)
public void test(){}
}
//定义一个注解
//Target可以用在方法,类中
//Retention 只在源码中生效
//Documented 注解将显示在doc文档中
//Inherited 子类讲可以继承父类的注解
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Retention(value = RetentionPolicy.CLASS)
@Documented
@Inherited
@interface MyAnnotation{
//注解的参数格式: 参数类型 + 参数名 + ();
//如果参数名是value,可以省略
int age();
int id() default -1;
//如果默认值为-1,代表不存在
String[] name() default {"熊铁树"};
}