2015年3月17日星期二

java中this的用法

在一般方法中
   最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某 个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this 就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:

public class DemoThis{
  private String name;
  private int age;
  DemoThis(String name,int age){
    setName(name); //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的
    setAge(age);
    this.print();
  }   
  public void setName(String name){
    this.name=name;//此处必须指明你要引用成员变量
  }
  public void setAge(int age){
    this.age=age;
  }
  public void print(){
    System.out.println("Name="+name+" Age="+age);//在此行中并不需要用this,因为没有会导致混淆的东西
  }
  public static void main(String[] args){
    DemoThis dt=new DemoThis("Kevin","22");
  }
}
   
这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),你完全可以用print()来代替它,两者效果一样。


转载以下来自博客园的一篇总结(转)java中this的用法

论专业技能和见识阅历

刚才在朋友圈看到宇轲分享的知乎帖子对放弃高考准备去上海图书馆自修的19岁男孩有怎样的建议?,字字句句甚是犀利。

阅历和视野让人受益匪浅,但是,对于青年来说,阅历是成本最低的成长方法。

每天大量的阅读量,博览群书,各种新闻深度,各种历史政治,觉得受益匪浅,自觉也比身边的“俗人”见识和阅历不知高到哪里去了。

可是,这几件事,没有一件有难度,没有一件是别人做不到的,只要别人想做,他们也能做到。显然,大多数的他们有更重要的事情。


很多人年纪不大,看不起自己宿舍的学霸,想着走千山万水,以为自己是英雄末路,恨不得三尺剑得天下,大学毕业了,学霸找到工作,又觉得学霸不懂人情世故,自己八面玲珑。

一年以后同学会,学霸各个八面琳珑,如鱼得水,自己还在找工作。

所谓八面琳珑,人情世故,见识阅历,视野开阔,你走上社会,最多三年,只要你想,肯定能成,除非你蠢。

但专业技能,知识匹配,一技之长,核心能力,熟练掌握者,百里挑一。


到底哪个才是更难的?

很显然,是专业知识、专业技能的学习。

写下这篇文字之前的我,是如此的幼稚,幼稚到以为见识和阅历是比专业技能更重要更有用的。诚然,我的意识不算错,只是错在了时间点。在没有坚实的基础,过人的技能,笑傲群雄的一技之长之前,见识和阅历也不过给饭桌上增加了点谈资,别人不会因此高看你什么。

要想让过人的见识和阅历变成你的护城河,必须先砌起自己稳固、高壮的城墙。你再怎么有战略思维,一辈子搬砖肯定用不上;再怎么有历史的眼光,天天蹲在地下室蜗居也用不上。你要做的是,一步一步扎实地积累,一寸一寸坚定地向上再向上。只有护城河,没有城墙的城堡就好比只有牙齿没有利爪的老虎,纸老虎!护城河和城墙相辅相成,才能各得其所,实现各自的最大价值。

感谢这篇知乎帖子,可谓是惊醒梦中人。法国时间2015年3月17日,21:28,以后无比厉害的我会铭记这一刻的。

2015年3月11日星期三

解决Chrome因Flash插件卡顿、页面假死问题

在线看高清点的视频,会很卡,抑或是Flash多点的页面,动不动就假死,很是烦人,搜索一番,找到了原因:


Chrome集成的Adobe Flash Player 不支持GPU硬解码,对于分辨率高的视频软解CPU很容易飙升

解决办法也很简单:

-禁用Chrome集成的Adobe Flash Player 
-用Adobe官方的替代之

  下载Adobe Flash Player ,安装

2.进入chrome://plugins页面,禁用Chrome自带的Flash(位置在chrome目录中的),启动新安装的(在windows目录中)

  如图所示


问题解决了,chrome可以愉快地飞起啦

-----update 2015-11-26----


Chrome的settings -> Show Advanced Settings... -> Privacy -> Prefetch resources to load pages more quickly


这样可以解决部分磁盘占用100%的情况。



Eclipse 新建Activity

2015.5.17更新:

Activity的建立方法有两种,我给他们起名字分别叫手动和自动,差异在是否自动在layout中建立xml文件及自动在AndroidManifest中注册。

之前写的帖子是谷歌得来的,现在看来非常狭隘。

先说,手动。

  1. 选中包,右键,新建class,命名之,superClass选项中填上需要继承的Activity,得到一基本空白的文件,然后手动完成onCreate等部分。
  2. 在res/layout中新建相应xml文件,选中此文件夹,右键->new->Android XML File,注意此xml文件名务必于1中setContentView(R.layout.Iamhandsomeboy)的Iamhandsomeboy保持一致
  3. 进入AndroidManifest文件,看清楚标签,在Application下,完成activity的注册,如<activity android:name="Iamhandsomeboy"></anctivity>,当然,这是最基础的部分。
再说,自动。
  1. 选中当前包,Eclipse左上角->New->Android->Android Activity
  2. 完成Activity Name,Layout Name等
  3. Hierarchical Parent中选中当前新建类的父类
  4. 溜溜的,当前包下的java文件(有初始代码),layout下的xml布局文件,AndroidManifest中的注册都搞定了。按需修改即可。
总结。
  1. 新建的Activity必须在AndroidManifest注册,必须
  2. 如果无关layout,可以不在layout中新建xml,即没有setContentView部分-----这个名词叫啥来着?



****************************************
有同学求救如何如题问题,那就写一个发给它喽

Ecplise中新建Activity

1.点击工具类中的New,注意不是直接右键


2.选中Android -> Android Activity, Next


3.Blank Activity, Next


4.配置Activity,新窗口中完善如下:

 * Activity Name: DisplayMessageActivity, 
 * Layout Name: activity_display_message
 * Title: My Message, 
 * Hierachical Parent: com.example.hellow.MainActivity
 Finish

此时,在src://下会新建一个名为DisplayMessageActivity.java的类,

打开DisplayMessageActivity.java文件,此类已经实现了onCreate()方法,稍后需要更新此实现方法。另外还有一个onOptionsItemSelected()方法,用来处理action bar的点击行为,保留这两个方法。

新建的Activity的标题需加入String.xml中:
<resources>
    ...
    <string name="title_activity_display_message">My Message</string>
</resources>
在AndroidMainfest.xml的application标签中为DisplayMyMessage添加标签:
<application ... >
    ...
    <activity
        android:name="com.mycompany.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.mycompany.myfirstapp.MyActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.mycompany.myfirstapp.MyActivity" />
    </activity>
</application>
其中,android:parentActivityName属性声明了在应用程序中该Activity逻辑层面的父类Activity的名称。 使用Support Library,如上所示的<meta-data>元素可以为安卓旧版本提供相同功能。

总结:新建activity很简单,重要的是记着在xml注册