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;
}
}
java interface 接口的使用
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,抽象方法没有方法体。抽象类不能实例化为对象,必须先派生子类,至少实现其中的一个方法,再实例化。如果父类为抽象类,子类要么是抽象类,要么就实现父类的抽象方法。 
java获取需要HTTP验证的网页内容
其实代码都差不多,就是加上发送帐号密码的一段。
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;
}
linux下FTP客户端ncftp用法
因为需要在两台服务器间传送文件,文件有700多兆,如用用FTP先下到本地,再传到另一台服务器,以ADSL,50K每秒的上传速度,要浪费大半天的时间,如果直接在两服务器上FTP,linux默认的FTP客户端又看不到进度,ncftp很好地解决了这个问题。 用法: 连接:open -u 用户名 -p 密码 -P 端口 服务器IP或域名 切换目录:cd 目录名 下载:get 远程文件名 上传:put 本地文件名
Java面向对象编程 自定义类
今天开始,从零开始学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、定义常量,通常用大写
用Navicat管理远程Linux服务器上的Mysql数据库
虽然说现在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帐号密码。
掌上优酷 Android下第三方优酷客户端
说实话,还是第一次写这么大的项目,共了差不多半个月时间,到现在已经发布两天了,发现了一些BUG,比如说FC、部分机型无法在线播放(这个没办法解决了,换手机吧)。可以在线观看优酷高清视频(除部分收费视频外),内置视频下载功能。搜索功能数据直接来源于优酷网,所以只要是优酷网上有的视频,都能观看下载。与优酷官方手机播放器不同,这款软件并没有针对手机对视频进行压缩,因此,在播放效果以及视频数量上比官方播放器要好很多,同时高清视频会消耗巨大流量,建议仅在 WIFI 网络下使用。
下载: EOEMarket
回国了
美国呆了几个月,韩国呆了个把月,为了方便国内的朋友,今天博客正式回国了。大家是不是感觉速度又快了一点?昨天在国内租了个VPS,700元RMB/年,256M内存,20G硬盘,3M独享,默认windows 2003系统,不过客服还算不错,帮忙装了Debian,装系统花了几个小时,问客服,回答竟然是“您要的系统太冷门,我们正在下载ISO“,汗!总体来说速度还不错,就是在国内用Linux有点麻烦,死机重启都得找客服,因为他们的后台面板只能重启Windows…
Android开发中Eclipse常用快捷键整理(不定期更新)
使用快捷键可以大大提高我们的工作效率,下面是我在学习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+/ 暂时就这么多,不定期更新