常见快捷键
alt+f4 保存和关闭
win+e 快速打开我的电脑
ctrl+shift+esc 快速打开任务管理器
windows的dos命令:
dir 查看当前目录下所有文件列出
cls 清理屏幕
md 创建目录
cd>xxx.文件后缀名 删除文件
rd xxx移除目录
查看已知文件的扩展名和取消该功能
在我的电脑的最上方工具栏有查看功能。我们可以点击它选中显示后缀名,然后就能编辑它的后缀名了。然后我们取消的话可以在查看中有个选项,点击它找到隐藏文件扩展名选项即可。
idea一些快捷键
psvm main方法快捷生成
sout 输出函数快捷生成
ctrl+d 复制当前行到下一行
银行业务 bigdecimal类表示数据
\uxxxx(16进制数)
代表一个字符,其对应字符为查unicode表对应的16进制数字对应的字符
jdk7新特性,数字之间可以用下划线分割
比如:int c = 1_0000_0000
类型强制转换
补充:由低向高转
快速选择连续部分
按shift选中第一个文件,再选中最后一个文件。
短路运算
1.如果是&&,第一个为假,则后面就不运行了。
2.如果是||,则第一个为真,后面也就不运行了。
JavaDoc
- 按/**,再按回车,则会出现多行注释。但是这种特殊的多行注释是给人生成JavaDoc使用的。我们可以再注释中添加@Author、@Param、@return等。在定义好的类名或者方法名上,我们甚至可以自动生成这些东西。
- 然后在当前文件夹下cmd中,我们可以按照命令javadoc -encoding UTF-8 -charset UTF-8 xxxx.java生成doc文档。
- idea中生成doc文档
Tools->Generate JavaDoc
会出现生成 JavaDoc 的对话框,一般的选项都很直观,不必细说。但是要注意生成 JavaDoc 的源代码对象的选择,一般以模块(Module)为主,必要时可以单独选择必要的 Java 源代码文件,不推荐以 PRoject 为 JavaDoc 生成的源范围。
Locale 可选填项,表示的是需要生成的 JavaDoc 以何种语言版本展示,根据 javadoc.exe 的帮助说明,这其实对应的就是 javadoc.exe 的 -locale 参数,如果不填,默认可能是英文或者是当前操作系统的语言,既然是国人,建议在此填写 zh_CN,这样生成的 JavaDoc 就是中文版本的
还有一个“Other command line arguments:”可选填项,非常重要,是填写直接向 javadoc.exe 传递的参数内容。因为有一些重要的设置,只能通过直接参数形式向 javadoc.exe 传递。这里必须要填写如下参数:
-encoding UTF-8 -charset UTF-8 -windowtitle "你的文档在浏览器窗口标题栏显示的内容" -link http://docs.Oracle.com/javase/7/docs/api
Java获取输入
scanner.hasNext()一般是读取到有效字符之后才可以结束输入。
对有效字符之前遇到了空白,则删去。
只有输入有效字符之后才将其后面输入的空白作为分隔符或者结束符。
next()不能得到带有空格的字符串。
Scanner scanner = new Scanner(System.in);
if(scanner.hasNext()){
String str = scanner.next();
System.out.println(str);
}
//最后记得关闭流
scanner.close();
hasNextLine()以Enter为结束符,也就是说返回按下enter键之前的所有字符,包括空白。
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println(str);
}
//最后记得关闭流
scanner.close();
//输入整数数组
Scanner sc = new Scanner(System.in);
System.out.println("输入数据:");
//多行输入
int n = sc.nextInt();
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
sc.close();
其它的数据同理,将其替换成nextDouble()、nextLong()、nextFloat()等api。
IDEA反编译操作
在project struct中找到对应编译的class文件路径。然后将里面的class从文件夹层面复制进来。然后用idea打开查看它的源码。
快捷生成for
变量/写死的值.for
例如:100.for
var.for
continue outer == goto
但是要在某行代码前定义outer:
outer: for(int a = 1; a < 10; a++){
xxx
for(b = 1; b < 10; b++){
if(xxx){
continue outer;
}
}
}
Java命令行传参
先要对java文件进行编译
javac xxx.java
生成class文件
然后再执行
java xxx [你的参数,以空格隔开]
例子:
javac test 0 1 2 3 4
快捷键插入构造、getter and setter方法
alter + insert
构造的一些知识
有参构造定义之后,在想用无参构造就得显式定义。
父类构造不能和子类构造一起写
super()要在子类构造方法的最上面。
如果父类没有无参构造,而要使用子类,有两种方式:
第一:显式调用父类的有参构造
例如:
super(name);
第二:在父类中显示定义无参构造
public class Person{
String name;
public Person(){
}
public Person(String name){
this.name = name;
}
}
关于继承以及重写之类
1.父类引用可以指向子类
A a = new A();
B b = new A();
//a继承b
2.在父类引用指向子类时,需要注意的是,只有public方法才可以被Override。private和protected方法无法被重写。
而且需要注意的是,不能随便写静态方法,甚至是滥用静态方法的重写。
因为静态方法重写之后,是根据你定义的引用的所属类对应的静态方法执行的。
而普通的类方法重写之后,则是根据你new出来的类的类型而定的。new出来是什么就执行什么方法。
例子:
//静态方法,假设都有getName()方法,且A类输出“A”,B类输出“B”
A a = new A();
B b = new A();
a.getName(); //输出“A”
b.getName(); //输出“B”
//普通类成员方法, getName()为不加static关键字的方法
A a = new A();
B b = new A();
a.getName(); //输出“A”
b.getName(); //输出“A”
关于父类和子类的一些笔记
1.父类的引用指向子类堆中对象:
1.1 在此时,父类引用调用静态方法时调用子类的静态方法。而调用普通类方法时候,如果子类有重载,那就调用子类重载的方法。但是具体有哪些方法能调用,这个是要看父类了。
2.从低级到高级不需要强转,但是从高级到低级需要强转,这个适用于byte、char、short、int、float、double这几大基本数据类型。对于类来说,排序就是按照继承图来排序,父类比子类等级要高。
static静态代码块
一般定义在类属性那一块,用作初始化成员静态变量。在类加载的时候就执行了
public class test{
static{
int a = 6;
……
// 初始化一些其它代码等
}
}
匿名代码块
跟静态代码块一样的写法,不加static关键字。其在对象创建的时候执行。在构造函数执行之前执行。
静态导入包
import static java.lang.Math.random;
这是静态导入包,可以直接导入里面的static方法。然后不用加类名直接可以调用。
抽象类和接口
抽象类可以写抽象方法,也可以写具体的实现方法。如果不实现的话可以写个抽象方法给继承类去实现。抽象类不能被实例化。
public abstract class UserService{
@Autowired
protected UserDao ud;
public abstract void add(String name);
public boolean delete(Long id){
ud.delete();
}
}
接口中,可以定义其接口属性,但是该接口属性是默认public static final。
public interface UserService{
//public static final
int AGE = 99;
void add(String name);
void delete(Long id);
}
选中指定代码,后ctrl+alt+t,代码块
拥有的代码块选项有:
try catch
if else
…
Java内部类一些形式
new出内部类:
通过对象来new:
Outer.Inner in = outer.new Inner();
在同一个文件中,可以定义许多class,但是public class只能有一个
接口可以直接new,这样可以形成一个匿名内部类。
例如:
new Runnable(){
@Override
public void run(){
// xxx你的代码
}
}