0%

public class Main {

    public static void main(String[] args) throws UnsupportedEncodingException {
        Outer outer=new Outer();//实例化外部类
        Outer.Inner inner=outer.new Inner();//通过外部类的实例,得到内部类的实例
        inner.run();//第一种访问内部类的方法
        outer.run();//第二种通过外部类的方法访问内部类的方法 
        Outer.Inner inner2=outer.getInner();//通过外部类的getInner方法得到内部类实例
        inner2.run();//第三方访问方法
    }

}
class Outer{
    private int a=10;
    class Inner{
        private int a=20;
        public void run(){
            int a=30;
            System.out.println(a);
            System.out.println(this.a);
            System.out.println(Outer.this.a);
            
        }
    }
    void run(){//通过外部类的方法访问内部类方法
        Inner inner=new Inner();
        inner.run();
    }
    Inner getInner(){//返回内部类给对象
        Inner inner=new Inner();
        return inner;
        
    }
}

interface类似于class,只不过interface里的所有方法都是abstract抽象的,当一个非抽象的class实现(implements)一个接口interface时,必须实现接口中所有方法(因为都是abstract抽象的),否则该class必须声明为abstract.

public class Main {

    /**
     * @param args
     * @throws UnsupportedEncodingException 
     */
    public static void main(String[] args) throws UnsupportedEncodingException {
        // TODO Auto-generated method stub
        new Athlete().jump();
        new Athlete().run();
    }

}
interface Sport{
    void run();//默认public abstract
    void jump();
}
class Athlete implements Sport{//实现接口

    @Override
    public void jump() {
        // TODO Auto-generated method stub
        System.out.println("jump");
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("run");
        
    }
}

不同类通过接口实现通讯:

public class Main {

    public static void main(String[] args) throws UnsupportedEncodingException {
        Zhang z=new Zhang();
        Info info=new Info();
        info.setPeople(z);
        System.out.println(info.getName()+" is "+info.getDoing());

    }

}
interface People{//定义接口
    String name();
    String doing();//默认public abstract

}
class Zhang implements People{//实现接口

    @Override
    public String name() {
        // TODO Auto-generated method stub
        return "zhangshang";
    }

    @Override
    public String doing() {
        // TODO Auto-generated method stub
        return "sleeping";
        
    }	
}
class Info {
    People p;
    void setPeople(People p){
        this.p=p;
    }
    String getName(){
        return p.name();	
    }
    String getDoing(){
        return p.doing();
    }
}

1、一个接口可以继承(extends)自另一个接口 2、不允许类的多继承,但允许接口的多继承(同时继承多个接口) 2、类可以实现多个接口 3、类在继承另一个类的同时,可以实现多个接口,先extends后implements

一个简单的例子,一看就明白

package com.pocketdigi;
public class Extends {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Zhang zhang=new Zhang();
        zhang.setName("shang");
        zhang.setSex("male");
        zhang.setAge(20);
        System.out.println(zhang.name);
    }

}
class People{
    String name;
    String sex;
    int age;
    void setName(String n){
        name=n;
        System.out.println("父类设置名字为"+n);
    }
    void setSex(String s){
        sex=s;
    }
    void setAge(int a){
        age=a;
    }
}
class Zhang extends People{//类Zhang继承People,是People的子类
    //覆盖父类的setName方法
    void setName(String n){
        super.setName(n);
        //super代表父类,重载父类setName方法
        name="zhang"+n;
        System.out.println("子类设置名字为"+name);
    }
}

1、子类的对象也是父类的实例,但父类的对象不是子类的实例 2、final类不能被继承,final方法不能被覆盖 3、引用不同包的类,需先import,非public的类不能引用 4、private方法只能被同类访问、default只能在同包、同类中访问,不同包只有public可被访问,如果是子类继承父类,还可访问父类的protected方法 5、private、static方法不能被覆盖,即使编译器不报错,也是产生一个新的方法,并非覆盖 6、如果方法为abstract(抽象),所在类必须声明为abstract,抽象方法没有方法体。抽象类不能实例化为对象,必须先派生子类,至少实现其中的一个方法,再实例化。如果父类为抽象类,子类要么是抽象类,要么就实现父类的抽象方法。

其实代码都差不多,就是加上发送帐号密码的一段。

        try {
            URL newurl = new URL(url);		
            Authenticator auth = new Authenticator() {   
                private PasswordAuthentication pa =    
                    new PasswordAuthentication("username", "password".toCharArray());   
                @Override  
                protected PasswordAuthentication getPasswordAuthentication() {   
                    return pa;   
                }   
            };   
            Authenticator.setDefault(auth);   
                
            BufferedReader br = new BufferedReader(new InputStreamReader(newurl.openStream()));  
            String s = "";  
            StringBuffer sb = new StringBuffer("");  

            while ((s = br.readLine()) != null) {  
                sb.append(s + "\r\n");  

            }  
            br.close(); 
            String s1=sb.toString(); 
            byte[] bs=s1.getBytes();
            s1=new String(bs,"UTF-8");
            return  s1;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            return "error open url:" + url;  
        }

因为需要在两台服务器间传送文件,文件有700多兆,如用用FTP先下到本地,再传到另一台服务器,以ADSL,50K每秒的上传速度,要浪费大半天的时间,如果直接在两服务器上FTP,linux默认的FTP客户端又看不到进度,ncftp很好地解决了这个问题。 用法: 连接:open -u 用户名 -p 密码 -P 端口 服务器IP或域名 切换目录:cd 目录名 下载:get 远程文件名 上传:put 本地文件名

今天开始,从零开始学JAVA。面向对象编程具有易维护、效率高、易扩展的优点。 先定义一个类,这个例子的功能是下载远程网页的源代码。

class getRemote{

    String url;
    getRemote(){
        url="http://www.google.com";//通过构造函数设默认值
    }
    String getHtml(){
        try {
            URL newurl = new URL(url);
            BufferedReader br = new BufferedReader(new InputStreamReader(newurl.openStream()));  
            String s = "";  
            StringBuffer sb = new StringBuffer("");  

            while ((s = br.readLine()) != null) {  
                sb.append(s + "\r\n");  

            }  
            br.close();   
            return sb.toString();  
        } catch (Exception e) {
            // TODO Auto-generated catch block
            return "error open url:" + url;  
        } 
            
    }
}

使用方法:

        getRemote gr=new getRemote();//实例化getRemote类
        gr.url="http://www.pocketdigi.com";//设置url为http://www.pocketdigi.com
        System.out.print(gr.getHtml());//输出获取到的源代码

1、静态变量和静态方法只属于类本身,不属于实例化的对象 2、静态方法不能引用非静态变量和非静态方法,反之,可以。 3、静态变量和静态方法可以直接通过类名引用,但也可以通过对象引用 4、常量(final)通常申明为静态(static)(节约内存),必须初始化(可在申明时,也可以构造函数中),申明为静态时,必须在申明时初始化,因为直接通过类名调用静态变量不会执行构造函数。 5、定义常量,通常用大写

虽然说现在phpMyadmin管理Mysql很好用,但是如果你的数据库已经比较大,鉴于国内网速,通过浏览器导入或者导出数据库就比较麻烦,估计你的数据库还没上传完,程序已经超时了,而且PHP对上传文件大小有限制,如果数据库超过这个限制,是无法上传的。 用Navicat这个Mysql客户端就解决了以上问题。但是又有新的问题,通常情况下,为了安全起见,我们的Mysql会禁止除本地以外的所有IP登录,当然,你可以通过添加客户端IP来解决,但是我们的ADSL上网,IP是不固定的,每次管理数据库都要重新添加IP。 解决方法很简单,其实Navicat支持SSH通道,通过服务器上的SSH连接,再把服务器地址设为127.0.0.1,Mysql就是认为连接是说本地地址,就会顺利通过。 在连接设置中,常规选项,IP填127.0.0.1,切换到SSH,填上服务器IP,SSH帐号密码。

说实话,还是第一次写这么大的项目,共了差不多半个月时间,到现在已经发布两天了,发现了一些BUG,比如说FC、部分机型无法在线播放(这个没办法解决了,换手机吧)。可以在线观看优酷高清视频(除部分收费视频外),内置视频下载功能。搜索功能数据直接来源于优酷网,所以只要是优酷网上有的视频,都能观看下载。与优酷官方手机播放器不同,这款软件并没有针对手机对视频进行压缩,因此,在播放效果以及视频数量上比官方播放器要好很多,同时高清视频会消耗巨大流量,建议仅在 WIFI 网络下使用。 下载: EOEMarket

美国呆了几个月,韩国呆了个把月,为了方便国内的朋友,今天博客正式回国了。大家是不是感觉速度又快了一点?昨天在国内租了个VPS,700元RMB/年,256M内存,20G硬盘,3M独享,默认windows 2003系统,不过客服还算不错,帮忙装了Debian,装系统花了几个小时,问客服,回答竟然是“您要的系统太冷门,我们正在下载ISO“,汗!总体来说速度还不错,就是在国内用Linux有点麻烦,死机重启都得找客服,因为他们的后台面板只能重启Windows…

使用快捷键可以大大提高我们的工作效率,下面是我在学习Android开发中,Eclipse里常用到的快捷键,希望对新手有所帮助。 新建项目:Ctrl+N 这个基本上所有的软件都通用 快速保存:Ctrl+S 这个也通用 关闭文件:Ctrl+W 同样通用 注释与取消注释为:Ctrl+/ 多行注释先选中多行,单行注释只要把光标定位在该行即可 组织导入:Ctrl+Shift+O 快速导入需要的类,清除不需要的类(就是自动帮我们填写程序最顶上的import) 删除整行:Ctrl+D 删除光标所在行 定位到最后编辑的行:Ctrl+Q 这个真的很好用,尤其是对我这种记性差,常要翻上翻下看变量名,类名的名 定位到指定行:Ctrl+L Logcat会提示哪行出错,就用这个定位 文件重命名:Alt+Shift+R Eclipse默认是不能慢点两下左键来重命名的,需要点右键菜单 代码对齐:Ctrl+Shift +F,整个文件代码对齐,同样适用于Aptana编辑器,即支持html,Javascript等 自动缩进:Ctrl+i,对选中的代码自动缩进,与代码对齐不同,这个不会自动在分号后换行,不适用Aptana 选中字母转大写:Ctrl+Shift+X 选中字母转小写:Ctrl+Shift+Y 查找类:Ctrl+Shift+H 查看方法或变量调用层次:Ctrl+Alt+H System.out.println() 输入sysout按alt+/ 暂时就这么多,不定期更新