Eclipse组成


  • 整体叫做视图,每一个小窗口叫做视窗。在eclipse中要想爽一下,必须先有项目(工程)
  • (1)视图,视窗
  • (2)视图就是某些视窗的组合
  • A:Java视图
  • B:Debug视图
  • C:JavaEE视图
  • (3)视图还原
  • 在视图操作中,我有可能有误操作。这个时候怎么办?
  • Window--Reset重置视图

Java透视图

  • (1)Package Explorer 包资源管理器
  • A:该视图中显示当前工作空间中的所有项目以及项目中的文件。但不显示项目下bin目录中的运行文件
  • B:可以直接在该视图中创建项目,包,类,接口等
  • (2)Outline 大纲视窗
  • A:该视图中显示当前代码视图中源文件中定义的类或者接口。以及定义的所有成员
  • B:当代码过长时,查找代码中的某一个类或者成员,在该视窗中是最方便的
  • C:在代码中出现多次的名称要同一更改,也可以在该视窗中完成。同时其他代码如果使用了该变量,那么也会一并改变
  • (3)Console 控制台视窗
  • A:用于显示程序的运行结果,相当于DOS命令
  • B:如果有多个控制台同时运行。比如:服务器端和客户端。可以通过控制台上的小屏幕按钮进行控制台的切换
  • C:通过点击小方框,进行控制台的强制停止,相当于DOS中的Ctrl+C
  • (4)Hierarchy 层次视窗
  • A:用于显示类之间的层次(继承)关系。
  • B:在当前类上,按F4就可以切换到该视窗,并查看层次关系
  • 查看原码,当前类上F3,或者Ctrl+鼠标点击

对工作空间进行基本配置

  • 注意:在工作空间的设置对于该空间中的所有项目都有效。更换了工作空间,需要重新设置
  • (1)配置Java的编译和运行环境版本
  • windows--perference-Java
  • Compiler 设置成5.0以上,要和运行环境版本一致
  • Installed JREs:可以指定多个jre环境,但是仅有一个是当前执行的。要和编译器一致,或者高于编译器版本
  • 如果采用高版本编译,用低版本jre运行,会出现异常
  • (2)代码视窗加上行号
  • A:首选项--常规--编辑器--文本编辑器
  • B:在当前类中,左侧,右键。Show Line Numbers
  • (3)调整字体
  • windows--perference(首选项)-General(标准)--Appearance(外观)--Color and Fonts(颜色和字体)
  • 右边选择Java。编辑即可
  • 字体选择 Courier New 比较标准,个人爱好
  • (4)取消悬浮提示
  • 在首选项设置面板中
  • Java--Editor--Hovers
  • 右边将Combined Hover勾去掉
  • 这样代码的悬浮框就不会自动出现了
  • 如果想看提示,将光标悬浮在代码上,按F2即可
  • (5)取消默认注释
  • 在首选项设置面板中
  • Java--Code Style--Code Templates
  • 右边选择Code,将不希望出现默认注释的代码块中的注释去掉。
  • (6)类名高亮 可以这样配置在“java”→“enditor”→“syntac”,右边展开“java”→“classes”,勾上“Enable”这个选项,选择自己喜欢的颜色即可
  • (7)preference->general->editors->texteditor selection backgroud color

常用的提高开发的操作

  • (1)创建面板 定义类和接口,权限,父类已经实现的接口等
  • syso:然后alt+/就能出现输出语句(回车 到行尾,shift+回车 到下行的行首),如果单独敲回车就是到下行的行首
  • main:然后alt+/就能出主方法
  • 自己也可以定义。
  • 步骤:windows--perference-Java-Editor-Templates--New
  • (2)常用的快捷键 (A,E,F必须掌握)
  • A:alt+/ 内容辅助键,补充类或者接口名,帮我们起变量名,new 后面直接提示等。
  • B:ctrl+/ 单行注释,再按一次,取消单行注释
  • C:ctrl+shift+/ 对选中的区域进行多行注释的封装
  • D:ctrl+shift+\ 用于取消多行注释,只要光标在多行注释中即可
  • E:ctrl+shift+o 对使用了其他包中的类或者接口进行自动导入
  • F:ctrl+shift+f 对代码进行格式化
  • G: ctrl + alt + 上键 向上复制当前行或选中行
  • H: ctrl + alt + 下键 向下复制当前行或选中行
  • I:alt+上键 向上移动当前行或者选中行
  • J:alt+下键 向下移动当前行或者选中行
  • K:ctrl+d 删除当前行,或者删除选中行
  • L:ctrl+shift+x 将选中部分的字母大写
  • M:ctrl+shift+y 将选中部分的字母小写
  • N:ctrl+1 光标放在编译中出现红色波浪线提示的内容上,在该快捷键可以获取建议的处理方式

代码生成的快捷键alt+shift+s

  • 出现source
  • 1:在区域中右键
  • 2:alt+shift+s

(1)私有字段的get/set 重点 (2)构造方法 (3)重写父类方法 重点 @Override 注解 表明此方法是重写父类的

(4)添加注释 /** 回车 (5)方法的重构 右键--refactor--Extract Method

int sum = a + b;
System.out.println(sum);

// 选中a+b 扩展可以生成带返回值的

Debug 调试程序

  • 注释找错误
  • 输出打印调试程序
  • 程序不是写出来的,是改出来的
  • (1)让我们调试程序更加方便
  • (2)想要调试,需要在程序中加入断点
  • (3)运行debug as,打开debug视图
  • (4)快捷键
  • f5:跳入
  • f6:跳过
  • f7:跳出
  • (5)清除断点
  • 在Breakpoints视窗中清除指定断点或者所有断点

打jar包,导入jar包,及jar包的使用。

  • 1:打jar包
  • 选中项目--右键--Export--Java--jar--next--自己写jar包的名字和选择路径--finish
  • 2:jar包的使用
  • 导入jar包
  • 1:单独添加jar
  • 把jar复制,然后粘贴到项目路径下
  • 一定要把jar添加至classpath路径中
  • 怎么添加呢?
  • 右键jar包--添加构建路径项目下:.classpath文件中可以看到
  • 如果,这写jar不用了,那么,就从构建路径中把jar包移除
  • 选中项目--右键--首选项--Java Build Path--library--选中其中的jar包,给remove
  • 2:为了方便管理多个jar包
  • 通常建立一个目录,名字建立定义为lib
  • 将jar都存放在该目录下
  • 如果要使用jar包,只要将该jar导入到eclipse的classpath路径下
  • 右键至添加构建路径 项目下:.classpath文件中可以看到

导入已有的项目

  • 空白区域--右键--import--General--Existing Project into Workspace--选中你的项目目录--finish--OK
  • 删除项目中有两种。 选中和不选中删除硬盘上的项目
  • 请不要选中删除硬盘上的项目。

Object类

  • getClass()
Demo d = new Demo();
Class clazz1 = d.getClass(); // 返回对象的运行时类
Class clazz2 = Demo.class;
System.out.println(clazz1 == clazz2);
  • hashCode()
Demo d = new Demo();
int hashCode = d.hashCode();
System.out.println(hashCode);
  • toString()
Demo d = new Demo();
System.out.println(d); // 当对对象的引用打印时,会默认调用对象的toString方法,如果
System.out.println(d.toString()); // 该对象所属的类中没有toString方法,会调用Object类中(父类)

int[] arr = new int[5]; // 数组的父类也是Object
System.out.println(arr);
System.out.println(arr.toString());
  • equals()
public boolean equals(Object obj) {
return (this == obj);
}
==号和equals方法的区别、===(即比较值也比较地址)
1, ==号是一个符号,比较运算符,equals是一个方法
2, ==:比较基本数据类型比较的是值,比较引用数据类型比较的是地址值
3, ===:既比较值也比较地址
4, equals方法只能比较引用数据类型,比较对象的属性
  • finalize()
class DemoA {
@Override
public void finalize(){
System.out.println("垃圾被清扫了");
}
}

以下为字符串简介



几道小题

  • 1. 判断定义为String类型的s1和s2是否相等
  • String s1 = "abc";
  • String s2 = "abc";
  • System.out.println(s1 == s2); // true
  • System.out.println(s1.equals(s2)); // true
  • 2. 下面这句话在内存中创建了几个对象?
  • String s1 = new String("abc");
  • 3. 判断定义为String类型的s1和s2是否相等
  • String s1 = new String("abc");
  • String s2 = "abc";
  • System.out.println(s1 == s2); // false
  • System.out.println(s1.equals(s2)); // true
  • 4.判断定义为String类型的s1和s2是否相等
  • String s1 = "a" + "b" + "c";
  • String s2 = "abc";
  • System.out.println(s1 == s2); ?
  • System.out.println(s1.equals(s2)); 
  • 5.判断定义为String类型的s1和s2是否相等
  • String s1 = "ab";
  • String s2 = "abc";
  • String s3 = s1 + "c";
  • System.out.println(s3.equals(s2)); // true



构造函数

  • 1. 字节数组
  • byte[] arr = { 97,98,99 };
  • String str = new String(byte[]);  // 解码,让我们看的懂的,通过默认的编码表,将字节数组转换成字符串
  • String(byte[], String);  // 解码,通过指定的编码表,将字节数组转换成字符串
  • String(byte[], int offset, int length, String); // 解码,截取字节数组,offset是开始索引,length是截取的长度
  • 2. 字符数组
  • String(char[]) // 将字符数组转换成字符串
  • String(char[], int offset, int length) // 截取字符数组,offset是开始的索引,length是截取的长度

String类的常用方法

  • 1. 判断
  • 1.1 boolean equals(Object); // 传入的字符串是否与调用的字符串字符序列是否相同
  • 1.2 boolean equalsIgnoreCase(string); // 传入的字符串是否与调用的字符串字符序列是否相同,不区分大小写
  • 1.3 boolean contains(string); // 传入的字符串是否被调用的字符串包含
  • 1.4 boolean startsWith(string); // 调用的字符串是否以传入的字符串开头
  • 1.5 boolean endsWith(string); // 调用的字符串是否以传入的字符串结尾
  • 1.6 boolean isEmpty(); // 字符串是否为空
  • 2. 获取
  • 2.1 int length(); // 获取字符串的长度
  • 2.2 char charAt(index); // 通过索引获取对应的字符
  • 2.3
  • int indexOf(int ch); // 通过传入int数或者是字符找对应索引
  • int idnexOf(int ch, fromIndex); // 在指定fromIndex的位置查找传入的字符
  • 2.4
  • int indexOf(string str); // 通过传入字符串查找字符串所对应的索引
  • int idnexOf(string str, fromIndex); // 通过指定fromIndex的位置查找传入的字符串
  • 2.5
  • int lastIndexOf(ch); // 从后向前第一次找到的索引值返回
  • int lastIndexOf(ch, fromIndex): // 通过指定fromIndex的位置,从后向前第一次找到的索引值返回
  • 2.6
  • int lastIndexOf(string); // 通过传入的字符串,将第一次找到字符串中第一个字符的索引返回
  • int lastIndexOf(string, fromIndex): // 通过指定fromIndex的位置,将第一次找到字符串中第一个字符的索引返回
  • 2.7
  • String substring(start); // 通过传入的索引值开始向后截取,截取的是索引到length
  • String substring(start, end); // 通过传入的两个索引值截取,左闭右开
  • 3. 转换
  • 3.1
  • byte[] getBytes(); // 编码,让计算机看的懂的,用默认的编码表,将字符串转换成字节数组
  • byte[] getBytes(String); // 用指定的编码表进行编码
  • 3.2 char[] toCharArray(); // 将字符串转换成字符数组
  • 3.3
  • static String copyValueOf(char[]); // 将字符数组转换成字符串
  • static String copyValueOf(char[] data, int offset, int count);// 将字符数组转换字符串,通过offset开始,截取count个
  • 3.4
  • static String valueOf(char[]); // 将字符数组转换成字符串
  • static String valueOf(char[] data, int offset, int count);// 将字符数组转换字符串,通过offset开始,截取count个
  • 3.5
  • static String valueOf(int); // 将一个int数转换成字符串
  • static String valueOf(double);
  • static String valueOf(boolean); ...
  • 3.6
  • static String valueOf(object);
  • 和object.toString(); // 结果是一样的
  • 3.7
  • String toLowerCase(): // 将字符串全部转换为小写
  • String toUpperCase(): // 将字符串全班转换为大写
  • 3.8 "abc".concat("kk"); // 将两个字符串相连接,产生新的字符串
  • 4. 替换
  • 4.1 String replace(oldChar, newChar); // 将newChar替换OldChar,如果OldChar不存在,原字符串直接赋值给替换后字符串
  • 4.2 String replace(string, string);
  • 5. 切割
  • String[] split(regex); // 通过regex切割字符串,切割后会产生一个字符串数组
  • String s = "金三胖 郭美美 李天一";
  • String[] arr = s.split(" ");
  • 6. 去除字符串两空格
  • String trim();
  • 7. 比较
  • String str1 = "ab";
  • String str2 = "bc";
  • int num = str1.compareTo(str2); // 如果str比str1大的话,返回的正数

正则表达式

  • 1. 什么是正则表达式
  • 一种字符串的约束格式, 例如邮箱提示输入不合法
  • 2. 匹配
  • String里的matches() 验证一个字符串是否匹配指定的正则表达式"18612345678".matches("1[34578]\d{9}");
  • 3. 分割
  • String里的split() 用指定正则表达式能匹配的字符作为分隔符, 分割字符串
  • 4. 替换
  • String里的replaceAll(" ", " ") 把字符串中能匹配正则表达式的部分替换为另一个字符串
  • 5. 查找
  • Pattern.compile() 创建正则表达式对象
  • Pattern.matcher() 用正则表达式匹配一个字符串, 得到匹配器
  • Matcher.find() 查找字符串中是否包含能匹配正则表达式的部分
  • Matcher.group() 获取匹配的部分

StringBuffer的常用方法

  • 1. 添加
  • 1.1 StringBuffer append(int x); // 在缓冲区的末尾追加
  • 1.2 StringBuffer insert(int index, String str); // 在指定索引位置添加
  • 2. 删除
  • 2.1 StringBuffer delete(int start, int end); // 包含头索引,不包含尾部索引
  • 2.2 StringBuffer delete(0, sb.length); // 清空缓冲区
  • sb = new StringBuffer();
  • sb.append("aaaaa");
  • sb = new StringBuffer();
  • 2.3 StringBuffer deleteCharAt(int index); // 根据指定的索引删除索引对应的元素
  • 3. 修改
  • 3.1 StringBuffer replace(int start,int end,string); // 用String替换,包含头不包含尾
  • 3.2 void setCharAt(int index ,char); // 修改,把指定索引位置的值改成传入的char值
  • 3.3 StringBuffer reverse(); // 将缓冲区的元素反转
  • 3.4 void setLength(int len); //根据传入的len值截取缓冲区的长度
  • 3.5 toString(); // 转换成String
  • 4. 查找
  • 4.1 int indexOf(str); // 查找str在缓冲区第一次出现的位置
  • 4.2 int lastIndexOf(str); // 从后向前查找查找str在缓冲区第一次出现的位置

StringBuilder和StringBuffer

  • 1. StringBuilder和StringBuffer与String的区别
  • StringBuilder和StringBuffeer是可变字符序列
  • String是不变得,一但被初始化,就不能改变
  • 2. StringBuilder和StringBuffer的区别
  • StringBuilder是线程不安全的,所以效率比较高,1.5版本出现
  • StringBuffer是线程安全的,效率相对较低,1.0版本出现的

包装类

  • 1. 什么是包装类
  • 8种基本数据类型都会对应一个包装类
  • int是Integer, char是Character, 其他都是首字母大写double Double short Short boolean Boolean...
  • 2. 什么时候使用
  • 集合的泛型中只能写包装类型。JDK5之后, 基本数据类型和包装类之间可以自动的互相转换了
  • 3. 包装类常用的方法
  • static int parseInt(String s) // 将数字字符串转换成数字,如果是非数字字符串会转换失败,抛异常
  • Integer.toBinaryString() // 将一个十进制数字,转换成二进制的字符串
  • Integer.toOctalString() // 将一个十进制数字,转换成八进制的字符串
  • Integer.toHexString() // 将一个十进制数字,转换成十六进制的字符串
  • static long parseLong(String s)
  • static double parseDouble(String s)
  • static char forDigit(int digit, int radix) // radix代表的是进制例如二进制就传2,八进制就传8,digit代表后面进制里面的元素,而且不能超出后面进制的范围
  • String s = "123";
  • int x = Integer.parseInt(s);
  • String s = "abc";
  • char ch = Character.parseChar(s);