九月工作总结
来源:互联网 发布:看二战电影软件 编辑:程序博客网 时间:2024/04/25 23:49
一.
Android应用层开发需要java,谁知自己java是那么的烂,考试还挂了,悲催,以下主要是分析那份试卷的笔记。
Java基础复习
1. java中,方法可以与class同名2011-09-15
2. 被final修饰的形式参数2011-09-15
形式参数可被字段修饰符中的final修饰,表示该传入的参数不能被修改。
3. 父类与子类变量的覆盖问题2011-09-15
BaseJava.java
public class BaseJava {
public int x;
public int y;
public BaseJava(){}
public BaseJava(int n,int m){
this.x = n;
this.y = m;
}
public void test()
{
System.out.println("base print x"+ x +" y"+ y);
}
}
JavaTest1.java
public class JavaTest1 extends BaseJava{
public int x ;
public int y;
public JavaTest1() {
// TODO Auto-generated constructor stub
}
public JavaTest1(int n,int m)
{
this.x = n;
this.y = m;
}
public void test()
{
super.test();
System.out.println("sub print x"+ x +" y"+ y);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaTest1 c1 = new JavaTest1(1,2);
BaseJava c2 = c1;
c1.test();
c2.test();
}
}
输出:
base print x1 y2
sub print x1 y2
base print x1 y2
sub print x1 y2
若子类声明的变量与父类的对应变量名字一样,则在实例化子类对象时,这两个同名变量的内存空间不一样,子类在构造时先调用父类构造函数初始化父类的x、y值,再调用本身构造函数初始化子类的x、y值。如本例中的x、y。
而若子类没再声明与父类同名的变量,本例中也即子类没再声明x、y,则子类构造函数初始化的还是父类的x、y。
4. 匿名内部类2011-09-15
所谓的匿名就是该类连名字都没有,匿名内部类不可以有构造器,因为匿名内部类是要扩展或实现父类或接口。匿名内部类可以继承其他类,因为是类就是继承自Object类的。
Q:Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
A:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
5. Java的汉字占几个字符2011-09-15
Java采用unicode编码,每个字符占16bit。一个汉字与一个英文都是一个字符。
6. String与StringBuffer的一些区别以及方法2011-09-15
String:长度不可变字串。
StringBuffer:长度可变字串。
String方法:
String.length()
String.charAt()
String.subString()
字串比较
String.equals()
String.equalsIgnoreCase()
String.compareTo()
String.compareToIgnoreCase()
String.toUpperCase()
String.toLowerCase()
7. 类变量与类方法2011-09-15
public class JavaTest2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
C.fun();//complie error
}
}
class C implements B{
private int c =2;
static void fun(){
b = 2;
c = 3;//complie error
//c是private,不是类变量,fun为类方法,类方法不能访问//非类变量。
}
}
interface B{
int b = 1;
}
类方法不能访问非类变量。
8. 对继承自接口的方法不能降低访问权限2011-09-15
public class JavaTest2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new C().funB();
}
}
class C implements B{
private int b =2;
void funB(){//complie error
//默认是friendly
System.out.println("b="+b);
}
}
interface B{
int b = 1;
void funB();
}
接口中的方法都是隐式public,而实现该接口的类中,不能对该方法的访问控制进行降级处理。
9. Final修饰变量的解析2011-09-15
public class JavaTest3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final B b= new B();
final int n = 10;
n=11000;// complie error
b.changeB();
b = new B();//complie error
b.changeB();
}
}
class B{
private int b;
public void changeB(){
b = 1000;//没错误
System.out.println("B.b = "+b);
}
}
final修饰的变量,在程序的运行中,不能再改变他的值。这里的“不能改变他的值”意思是:对于简单数据类型的变量,例如这里的n,程序运行中不能改变他的值。对于复杂数据类型的变量,可以改变类里面的变量的值,但是不能改变一整个对象的值,例如新建一个对象给他。
10. 多态的注意2011-09-15
public class JavaTest4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a =new A();
a.fun();
a.fun2();
B b = a;
b.fun();
b.fun2();
// B b =new B();
// b.fun();
// b.fun2();
// A a = b;// complie error
}
}
class A extends B{
public void fun(){
System.out.println("A.fun()");
}
}
class B{
public void fun(){
System.out.println("B.fun()");
}
public void fun2(){
System.out.println("B.fun2()");
}
}
输出:
A.fun()
B.fun2()
A.fun()
B.fun2()
最后两行输出,体现了多态性。父类对象b指向子类对象a,b可以共有的方法fun,但实际是调用A.fun(),而调用非共有的方法fun2(),则是调用了B.fun()。若是把注释代码打开,会有error,因为不能把子类对象指向父类对象。
父类对象可以指向子类对象,子类对象不能指向父类对象。
11. 关于变量的比较2011-09-15
public class JavaTest6 {
/**
* @param args
*/
private long val;
public static void main(String[] args) {
// TODO Auto-generated method stub
JavaTest6 x = new JavaTest6(10L);
JavaTest6 y = new JavaTest6(10L);
JavaTest6 z = y;
long a = 10L;
int b = 10;
System.out.println(x==y);
System.out.println(y==z);
System.out.println(a==b);
System.out.println(a==10.0);
}
public JavaTest6(long v){
val = v;
}
}
输出:
false
true
true
true
第一个:两个对象虽然里面成员变量相同,但是这两个对象内存空间不同,因此不相等。
第二个:z指向y,因此内存空间相同,因此相等。
12. NullPointerException的解析2011-09-15
public class JavaTest7 {
/**
* @param args
*/
private static int[] a;
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
System.out.print(1);
a = new int[1];
a[1]=0;
System.out.print(2);
}
catch (NullPointerException e) {
// TODO: handle exception
System.out.print(3);
}
catch (Exception e) {
// TODO: handle exception
System.out.print(4);
}
finally{
System.out.print(5);
}
System.out.print(6);
}
}
输出:
1456
对于数组a,已经进行了初始化,因此a指向的地方非空,对于a[1],只是进行越界操作,a[1]指向的地址是a实例化的一个元素(a[0])地址之后的一位,因此也非空。
13. 静态块与非静态块2011-09-15
public class JavaTest8 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new A();
new B();
}
}
class A extends B{
static {
System.out.print(1);
}
static {
System.out.print(2);
}
public A() {
System.out.print(3);
}
}
class B{
static {
System.out.print(4);
}
static {
System.out.print(5);
}
public B() {
System.out.print(6);
}
}
输出:
4512636
public class JavaTest8 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new A();
new B();
}
}
class A extends B{
static {
System.out.print(1);
}
{
System.out.print(2);
}
public A() {
System.out.print(3);
}
}
class B{
static {
System.out.print(4);
}
{
System.out.print(5);
}
public B() {
System.out.print(6);
}
}
输出:
41562356
<1>非静态块在实例化时被调用。一般用于对实例变量的初始化。对于代码
class B{
public int a;
{
a = 5;
}
}
等价于
class B{
public int a = 5;
}
<2>静态块在类初始化时运行。一般用于将静态对象进行初始化。对于代码
class B{
public static int a ;
static{
a = 5;
}
}
等价于
class B{
public static int a = 5;
}
<3>静态变量的声明以及初始化是两个不同的操作。而对于静态块,因为静态块在编译时就已经确定了存放的内存空间了,所以静态块对静态变量的初始化动作与静态变量的声明动作,两者的前后顺序可以任意。非静态块也是如此。例如,对于代码
class B{
static {
a = 10;
}
private static int a;
}
等价于
class B{
private static int a;
static {
a = 10;
}
}
<4>一个类中可以有多个静态块,这多个静态块可以进行合并。非静态块也是如此。对于代码
class B{
static {
a = 10;
}
static {
a = 20;
}
private static int a;
}
等价于
class B{
static {
a = 10;
a = 20;
}
private static int a;
}
14. Finally的执行顺序2011-09-15
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
答:会执行,在return前执行
15. 集合的简要小结2011-09-15
Iterator
迭代器
方法:
hasNext():是否存在下一个元素。
next():取得下一个元素。
remove():删除当前指向的元素。
Collection
是所有set、list的父类。
ArrayList
基本的操作。
HashMap
基本的操作。
二. 一些专题
主要涉及在学习android的一些专题。
1. Android实例代码学习——Snake 2011-09-15
1) Handler中,
handleMessage 会在sendMessage、sendMessageAtTime等等将message放入message loop后调用。
2)activity的onKeyDown响应key down事件。
2. Andorid实例代码学习——BTChat 2011-09-15
1)可以定义一些扩展的layout文件,如下面的custom_title.xml文件,该文件只是定义了title这个屏幕范围内的layout。
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);//取得想要自定义的feature,//这些feature在针对android.view.Window有定义。
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);//在//加载了主要layout后,再加载扩展layout
// Set up the custom title
mTitle = (TextView) findViewById(R.id.title_left_text);//同样通过findViewById取得对应控//件,以及进行控件相关操作,诸如setText。
mTitle.setText(R.string.app_name);
custom_title.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
>
<TextView android:id="@+id/title_left_text"
android:layout_alignParentLeft="true"
android:ellipsize="end"
android:singleLine="true"
style="?android:attr/windowTitleStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<TextView android:id="@+id/title_right_text"
android:layout_alignParentRight="true"
android:ellipsize="end"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="#fff"
android:layout_weight="1"
/>
</RelativeLayout>
一般来说,用的是相对布局。
2)
BluetoothAdapter:BT设备适配器。负责搜寻蓝牙设备,或是与BluetoothServerSocket配合建立listen等等。
BluetoothDevice:BT设备信息的管理器。
BluetoothServerSocket:server 端用于listen的socket。
BluetoothSocket:server端listen到client端的接入创建的socket,或是client端的socket。一般,client端在connect过程中需要一个BluetoothSocket来负责连接,在连接成功后需要一个BluetoothSocket来负责读写数据。
3)
edittext. setOnEditorActionListener:监听编辑框输入字符的事件。
3. Timer的使用2011-09-15
Timer t = new Timer();
TimerTask tt= new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.d(TAG, "timer excute end");
}
};
Log.d(TAG, "timer excute start");
t.schedule(tt,2000);//timertask的run会在2000ms后执行
<1>创建timer;
<2>创建timertask,并且overwrite他的run();
<3>timer.schedule启动这个定时器。
<4>可以使用timer.cancel取消这个定时器。
4. intent中的隐式调用2011-09-15
区别于intent的显示调用直接指定了将要调用的activity,隐式调用交由android去决定将要启动哪个activity。
隐式调用需要有一个筛选器intentFilter,在 AndroidManifest.xml中定义,如下:
<activity android:name=".ImplicitActivity"
android:label="Implicit Activity">
<intent-filter>
<action android:name="com.cellon.test.action"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="content"
android:mimeType="application/vnd.test"/>
<data android:host="com.cellon.train.test" />
<data
android:scheme="wap"
android:mimeType="train/vnd.test"/>
</intent-filter>
</activity>
在想要启动activity的java文件中,使用如下代码启动:
Intent intent = new Intent("com.cellon.test.action");//构造时同时定义了
//启动的action
intent.addCategory(Intent.CATEGORY_DEFAULT);//启动的category
intent.setDataAndType(Uri.parse("wap://com.cellon.train.test/1"),"application/vnd.test");//启动的data,包括host、scheme、mimeType等
startActivity(intent);
以下为匹配规则:
<1>当且仅当启动的intent的action、category、data与intentFilter的对应项均匹配时,该activity才会启动。本例中,ImplicitActivity的筛选器的对应项与启动的intent的对应项匹配,ImplicitActivity会被启动。
<2>对于data项,里面可以包含多项,诸如host、mimetype、scheme等,对于同一项,如mimetype,也可以定义了多少项,就表示有多少种mimetype可以导致匹配。本例中,scheme有两种情况,"content","wap";host有两种情况,"com.cellon.train.test"。
<3>对于筛选器中的action,只能定义一个action。Intent请求的action与<intent-filter>的任何一条匹配即可通过。
对于category,可以定义多个category。只有Intent请求中所有的Category与组件中某一个<intent-filter>的完全匹配时才能算通过,并且<intent-filter>中多余的Category不会影响匹配成功。
5. Service生命周期2011-09-15
startService()后,即使调用了startService()的进程结束了,Service仍然存在,直到stopService()被调用,或者Service自杀(stopService()),进程才真正结束。
bindService()后,Service将和调用了bindService()的进程同生共死,当调用bindService()的进程结束,Service也随之结束;当然,期间也可以调用unbindService()方法来结束Service。
当startService()和bindService()这两种方法被同时使用时,也就是说A进程调用了startService(),B进程调用了bindService(),只有当A进程stopService(),进程unbindService()之后,这個Service才会结束。
6. ListActivity使用2011-09-15
最小程序子集
private String stringList[] = {
"Start","Setting","About","Exit"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
try {
//创建list恰配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.main_listview,R.id.listitem,stringList);
//将list恰配器与list关联
this.setListAdapter(adapter);
} catch (Exception e) {
// TODO: handle exception
Log.d(TAG, "Exception");
}
}
<1>本类extends ListActivity。
<2>不用setContentView设置布局,则默认使用android指定的listview布局。
<3>注意创建ArrayAdapter时需要传入每个listitem显示的textview的id以及该textview定义的layout文件。
<4>override onListItemClick。
7. 在某个xml中可以引用另一xml的layout布局2011-09-15
<include layout="@layout/desk_clock_time_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/nextAlarm"
/>
8. Intent隐式启动activity的补充注意2011-09-15
<1>使用intent隐式启动activity,action与category必须都指定。
<2>xml中intentfilter的category的定义只能用字串形式的"android.intent.category.DEFAULT"等等,不能用Intent.CATEGORY_DEFAULT等等非字串形式的。
<3>xml中intentfilter的category的定义,必须保证有一个是"android.intent.category.DEFAULT"。
9. ListActivity中的item不单只是textview 2011-09-15
SimpleAdapter这个恰配器可以满足list中item的多样化。注意,这里的getList中,每次list.add的map都要重新实例化。
public class ZPSettingActivity extends ListActivity{
private String TAG = "ZPSettingActivity";
private String[] strList = {
"a","b","c","d","e"
};
private ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
private Map<String, Object> map;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
setContentView(R.layout.setting);
getList();
this.setListAdapter(new SimpleAdapter(this,
list,
R.layout.setting_listview,
new String[]{"item"},
new int[]{R.id.setting_lv_tv_name}));
}
private void getList(){
for(int i = 0;i < 5;i++){
map = new HashMap<String, Object>();
map.put("item", strList[i]);
list.add(map);
}
}
}
以下xml显示每个item由一个textview、两个button、一个checkbox组成。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/setting_lv_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></TextView>
<Button
android:id="@+id/setting_lv_btn_edt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/gobal_edit"
></Button>
<Button
android:id="@+id/setting_lv_btn_del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/gobal_delete"
></Button>
<CheckBox
android:id="@+id/setting_lv_chk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></CheckBox>
</LinearLayout>
三. 杂项
1. 一些有用的函数记录2011-09-15
View.requestFocus():获取view的焦点。
View. getWindowVisibility():返回该view是否可见。
edittext. setOnEditorActionListener:监听编辑框输入字符的事件。
2. MyEclipse 快捷键大全2011-09-15
文章分类:综合技术
Eclipse本身很快的,但是加上了myeclipse后,就狂占内存,而且速度狂慢,那如何让Eclipse拖着myeclipse狂飚呢?这里提供一个:
技巧:取消自动validation
validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,只是需要的时候才会手工校验一下,速度立马提升好几个档次!
取消方法: windows-->perferences-->myeclipse-->validation 除开Manual下面的复选框全部选中之外,其他全部不选手工验证方法:
在要验证的文件上,单击鼠标右键-->myeclipse-->run validation
程序代码自动排版:Ctrl+Shift+F,会自动把代码进行格式化的排版,非常方便
快速执行程序:Ctrl + F11第一次执行时,它会询问您执行模式,设置好后,以后只要按这个热键,它就会快速执行.
Ctrl+Shift+/ 加上段注释/**/
Ctrl+Shift+\ 取消段注释/**/
Ctrl+/ 加上行注释或取消行注释
自动汇入所需要的类别:Ctrl+Shift+M Ctrl+Shift+O 好象使用Ctrl+Shift+O 也可以
重要技巧(机器配置低就别用了,呵呵)
Eclipse中默认是输入"."后出现自动提示,用于类成员的自动提示,可是有时候我们希望它能在我们输入类的首字母后就出现自动提示,可以节省大量的输入时间(虽然按alt + /会出现提示,但还是要多按一次按键,太麻烦了).
从Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activation下,我们可以在"."号后面加入我们需要自动提示的首字幕,比如"ahiz".
然后我们回到Eclipse的开发环境,输入"a",提示就出现了.
但是我们可以发现,这个Auto-Activation下的输入框里最多只能输入5个字母,也许是Eclipse的开发人员担心我们输入的太多会影响性能,但计算机的性能不用白不用,所以我们要打破这个限制.
其实上面都是铺垫,制造一下气氛,以显得我们下面要做的事情很牛似的,其实不然,一切都很简单.嘿嘿
在"."后面随便输入几个字符,比如"abij",然后回到开发环境,File -> export -> general -> preferences -> 选一个地方保存你的首选项,比如C:\a.epf
用任何文本编辑器打开a.epf,查找字符串“abij”,找到以后,替换成“abcdefghijklmnopqrstuvwxyz”,总之就是你想怎样就怎样!!然后回到Eclipse,File -> import -> general -> preferences -> 导入刚才的a.epf文件.此时你会发现输入任何字幕都可以得到自动提示了.爽!!!
最后:自动提示弹出的时间最好改成100毫秒以下,这样会比较爽一点,不然你都完事了,自动提示才弹出来:),不过也要看机器性能.
myeclipse自动提示背景颜色设置(再也不那么淡)
window--preference--java--editor- completion proposals Background 颜色推荐85,90,205
Eclipse 常用快捷键
先来10个常用方便的快捷键。。
Ctrl + Shift + T: 打开类型:显示"打开类型"对话框来在编辑器中打开类型。"打开类型"选择对话框显示工作空间中存在的所有类型如类、接口等。
Ctrl + Shift + R: 打开资源:打开"打开资源"对话框以打开工作空间中的任何资源。在Package Explorer中不必浏览文件便可快速打开任意一个文件。使用这个快捷键可以打开一个对话框,在里面输入你想查找的文件或者通配符既可。
Ctrl + O: 快速大纲:打开当前所选类型的轻量级大纲图。在一个文件中直接打开一个成员变量(如字段、方法),尤其是有许多类似的方法名的时候这个快捷键将变得非常有用。
Ctrl + L: 输入行数: 转至行:打开一个对话框,允许您输入编辑器应该跳至的行号。仅适用于编辑器。输入行号,可以快速跳转到源文件中的第N行,
Ctrl + Q: 上一个编辑位置:显示上一个编辑操作的发生位置,返回到最近的修改位置。即使你查看不同的文件时,你也可以使用该快捷键来找到你最近对文件的修改位置。尤其是在文件比较大时,显得更为有用。
Ctrl + T: 快速类型层次结构:打开当前选择的类型的轻量级层次结构查看器,可以实现快速转到一个supertype或者subtype.
Ctrl + E: 快速跳转到另外一个编辑器。注意Ctrl + F6也可以实现这个功能,在使用的时候可以注意一下他们的异同。
Ctrl + ./Ctrl +,: 在一个文件中快速定位到一个问题(如错误、警告等)
Alt +← and Alt + →: 来回跳转至你所查阅的文件
F3: 快速转到一个类型声明。同时也可以按住ctrl健并点击该超链接变量或者类或者你想查看的任何声明都可以。
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。
1. 【ALT+/】
此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。
2. 【Ctrl+O】
显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。
3. 【Ctrl+/】
快速添加注释,能为光标所在行或所选定行快速添加注释或取消注释,在调试的时候可能总会需要注释一些东西或取消注释,现在好了,不需要每行进行重复的注释。
4. 【Ctrl+D】
删除当前行,这也是笔者的最爱之一,不用为删除一行而按那么多次的删除键。
5. 【Ctrl+M】
窗口最大化和还原,用户在窗口中进行操作时,总会觉得当前窗口小(尤其在编写代码时),现在好了,试试【Ctrl+M】快捷键。
查看和定位快捷键
在程序中,迅速定位代码的位置,快速找到Bug的所在,是非常不容易的事,Eclipse提供了强大的查找功能,可以利用如下的快捷键帮助完成查找定位的工作。
1. 【Ctrl+K】、【Ctrl++Shift+K】
快速向下和向上查找选定的内容,从此不再需要用鼠标单击查找对话框了。
2. 【Ctrl+Shift+T】
查找工作空间(Workspace)构建路径中的可找到Java类文件,不要为找不到类而痛苦,而且可以使用“*”、“?”等通配符。
3. 【Ctrl+Shift+R】
和【Ctrl+Shift+T】对应,查找工作空间(Workspace)中的所有文件(包括Java文件),也可以使用通配符。
4. 【Ctrl+Shift+G】
查找类、方法和属性的引用。这是一个非常实用的快捷键,例如要修改引用某个方法的代码,可以通过【Ctrl+Shift+G】快捷键迅速定位所有引用此方法的位置。
5. 【Ctrl+Shift+O】
快速生成import,当从网上拷贝一段程序后,不知道如何import进所调用的类,试试【Ctrl+Shift+O】快捷键,一定会有惊喜。
6. 【Ctrl+Shift+F】
格式化代码,书写格式规范的代码是每一个程序员的必修之课,当看见某段代码极不顺眼时,选定后按【Ctrl+Shift+F】快捷键可以格式化这段代码,如果不选定代码则默认格式化当前文件(Java文件)。
7. 【ALT+Shift+W】
查找当前文件所在项目中的路径,可以快速定位浏览器视图的位置,如果想查找某个文件所在的包时,此快捷键非常有用(特别在比较大的项目中)。
8. 【Ctrl+L】
定位到当前编辑器的某一行,对非Java文件也有效。
9. 【Alt+←】、【Alt+→】
后退历史记录和前进历史记录,在跟踪代码时非常有用,用户可能查找了几个有关联的地方,但可能记不清楚了,可以通过这两个快捷键定位查找的顺序。
10. 【F3】
快速定位光标位置的某个类、方法和属性。
11. 【F4】
显示类的继承关系,并打开类继承视图。
调试快捷键
Eclipse中有如下一些和运行调试相关的快捷键。
1. 【Ctrl+Shift+B】:在当前行设置断点或取消设置的断点。
2. 【F11】:调试最后一次执行的程序。
3. 【Ctrl+F11】:运行最后一次执行的程序。
4. 【F5】:跟踪到方法中,当程序执行到某方法时,可以按【F5】键跟踪到方法中。
5. 【F6】:单步执行程序。
6. 【F7】:执行完方法,返回到调用此方法的后一条语句。
7. 【F8】:继续执行,到下一个断点或程序结束。
常用编辑器快捷键
通常文本编辑器都提供了一些和编辑相关的快捷键,在Eclipse中也可以通过这些快捷键进行文本编辑。
1. 【Ctrl+C】:复制。
2. 【Ctrl+X】:剪切。
3. 【Ctrl+V】:粘贴。
4. 【Ctrl+S】:保存文件。
5. 【Ctrl+Z】:撤销。
6. 【Ctrl+Y】:重复。
7. 【Ctrl+F】:查找。
其他快捷键
Eclipse中还有很多快捷键,无法一一列举,用户可以通过帮助文档找到它们的使用方式,另外还有几个常用的快捷键如下。
1. 【Ctrl+F6】:切换到下一个编辑器。
2. 【Ctrl+Shift+F6】:切换到上一个编辑器。
3. 【Ctrl+F7】:切换到下一个视图。
4. 【Ctrl+Shift+F7】:切换到上一个视图。
5. 【Ctrl+F8】:切换到下一个透视图。
6. 【Ctrl+Shift+F8】:切换到上一个透视图。
Eclipse中快捷键比较多,可以通过帮助文档找到所有快捷键的使用,但要掌握所有快捷键的使用是不可能的,也没有必要,如果花点时间熟悉本节列举的快捷键,必将会事半功倍
1. edit->content Assist - > add Alt+/ 代码关联
2. Window -> Next Editor -> add Ctrl+Tab 切换窗口
3. Run/Debug Toggle Line Breakpoint -> add Ctrl+` 在调试的时候 增删断点
4. Source-> Surround with try/catch Block -> Ctrl+Shift+v 增加try catch 框框
5. Source -> Generate Getters and Setters -> Ctrl+Shift+. 增加get set 方法
-----------有用的快捷键-----------
Alt+/ 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+1:光标停在某变量上,按Ctrl+1键,可以提供快速重构方案。选中若干行,按Ctrl+1键可将此段代码放入for、while、if、do或try等代码块中。
双击左括号(小括号、中括号、大括号),将选择括号内的所有内容。
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
-----------Ctrl系列-----------
Ctrl+K:将光标停留在变量上,按Ctrl+K键可以查找到下一个同样的变量
Ctrl+Shift+K:和Ctrl+K查找的方向相反
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+T 快速显示当前类的继承结构
Ctrl+Shift-T: 打开类型(Open type)。如果你不是有意磨洋工,还是忘记通过源码树(source tree)打开的方式吧。
Ctrl+O:在代码中打开类似大纲视图的小窗口
Ctrl+鼠标停留:可以显示类和方法的源码
Ctrl+H:打开搜索窗口
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
-----------Ctrl+Shift 系列-----------
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+O:快速地导入import
Ctrl+Shift+R:打开资源 open Resource
-----------F快捷键 系列-----------
F3:打开声明该引用的文件
F4:打开类型层次结构
F5:单步跳入
F6:单步跳过
F7:单步跳出
F8:继续,如果后面没有断点,程序将运行完
-----------行编辑用-----------
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Ctrl+Shift+Enter 在当前行插入空行(原理同上条)
-----------不常用的-----------
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Ctrl+Shift+S:保存全部
Ctrl+W 关闭当前Editer
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+G: 在workspace中搜索引用
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
-----------不明白-----------
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
四. FAQ
1. 模拟器不能识别2011-09-15
问题描述:
在启动模拟器时,出现不能识别vm(你的模拟器名字)的问题。
解决方案:
一般是AVD路径的问题。
1) 查看下C:\Documents and Settings\zeping.zhou\.android\avd下存在该vm吗?
2) 可以试着添加环境变量ANDROID_SDK_HOME,路径是C:\Documents and Settings\zeping.zhou\.android\avd。重启eclipse。
2. 不能创建模拟器2011-09-15
问题描述:
不能创建模拟器。
解决方案:
1) 试着删除ANDROID_SDK_HOME这个环境变量。
2) 试着重装eclipse,以及重新覆盖avd文件到eclipse目录下。
3. invalid command-line parameter 2011-09-15
问题描述:
启动模拟器时出现“invalid command-line parameter”。
解决方案:
1,确认android sdk不是存放在带有空格的路径名(诸如program files)或是中文名路径上。
4. Android模拟器运行很慢2011-09-15
问题描述:
Android模拟器运行很慢。
解决方案:
1)增加模拟器内存大小.http://blog.sina.com.cn/s/blog_5f30b9410100pd1k.html在模拟器保存的位置,例如:C:\Documents and Settings\android\.android\avd\android3.avd 找到.congfig.ini.设置 hw.ramSize=256 ;为一个更大的值。
2)具体位置为:设置 - 显示 - 关闭“自动旋转屏幕”的选项
3) 打开了模拟器后,就不要关闭,修改完代码直接run as或是debug as即可。
- 九月工作总结
- 九月工作总结
- 九月中旬工作总结
- 九月
- 九月
- 九月
- 九月
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- 工作总结
- Oracle Spatial 及 OCI高级编程
- ICMP协议(Internet Control Message Protocol)
- VS2008添加MSChart控件问题
- office live meeting 2007相关资料
- finally中的不安全因素return
- 九月工作总结
- 微软应提前发布专用于ARM处理器的Windows 8平板电脑系统
- Oracle Spatial与ArcGIS连接
- jQuery插件的开发
- 职场中必需修炼的七项意识
- 我的游戏之路(9)
- 10款有趣强大的jQuery插件推荐
- JSON基础
- 十月百度,阿里巴巴,迅雷搜狗最新面试十一题(待更新)