Java 初学者要知道的一些知识(未完待续)
来源:互联网 发布:软件自学教程 编辑:程序博客网 时间:2024/06/05 23:53
http://www.runoob.com/java/java-examples.html
Android 项目的目录结构
1、src项目源文件
2、gen有 R.java 资源文件,随.xml 文件自动生成
3、Android X.X 有 Android.jar 是Java 归档文件,里面有所需要的库
4、assets 放置mp3. mp4 等音频,视频文件,大文件
5、res 资源文件夹
drawable- 图标文件 png jpg
layout 界面布局文件
value 软件上所需要显示的各种文字,可以存放多个 xml 文件,也可以存不同类型数据
array.xml color.xml dimens.xml
6、AndroidManifest.xml 总配置文件,记录应用中所使用的各种组件,提供的功能
7、project.properties 记录项目中所需要的环境信息,android 版本等
Activity 四种状态:
1、Runing:Activity启动入栈,在屏幕最前端,栈最顶端,此时它处于可见并可和用户交互的激活状态。
2、Paused:Activity 被另一个透明或者Dialog样式的 Activity 覆盖时的状态。此时它依旧与窗口管理器保持连接,系统继续维护其内部状态,任然可见,但它已经失去了焦点数,故不可以与用户交互。
3、Stop:Activity 被另一个 Activity 覆盖,失去焦点并不可见时处于stoped状态。
4、Killed:Activity 被系统杀死回收或者没有被启动时处于 killed 状态。
Java 中的 extends 与 implements
extends 是继承父类,只要那个类不是声明为 final 或者那个类定义为 abstract 的就能继承,Java 中不支持多重继承,但是可以用接口来实现,这样就要用到 implements,继承只能继承一个类,但是 implements 可以实现多个接口,用逗号分开就行
class A extends B implements C,D,E
Java 中的抽象类与接口
一、抽象类
定义:public abstract class Fruit{
。。。
}// 不能实例化对象,Fruit fruit = new Fruit();
继承:public class Apple extends Fruit{
。。。
}
抽象方法:public abstract class Shape {
。。。
public abstract void draw();
。。。
}
二、接口
定义:public interface InterfaceA {
void methodA();
} // 接口中的方法都是抽象方法
实现:public class ClassA implements InterfaceA {
public void methodA(){
System.out.println ("....");
}
} // 类 ClassA 实现接口InterfaceA
抽象类实现:public abstract class ClassB implements InterfaceA {
}// 抽象类 ClassB 实现接口 InterfaceA ,但没实现具体实现方法methodA();
子类实现接口:public class ClassBSub implements InterfaceA {
public void methodA(){
System.out.println(".....");
}
}
接口和抽象类共同点与不同点
共同点:都可以有抽象方法。
不同点: 1、抽象类中可以有非抽象方法,接口中只有抽象方法。
2、抽象类中可以有各种类型变量,接口中只有 Static、final。
3、抽象类中可以有静态代码和静态方法,而接口中不能。
4、一个类只能继承一个抽象类,一个类可以实现多个接口。
Java 中接口与抽象类解决的多继承问题:
对于一个类实现多个接口的情况,因为接口只有抽象方法,具体方法只能由实现接口的类实现,在调用的时候始终只会调用实现的类方法(不存在歧义),因此不存在多重继承的第二个缺点;而又因为接口只有静态的常量,但是由于静态变量是在编译期间决定调用关系的,即使存在一定的冲突也会在编译时提示出错,而引用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多重继承的第一个缺点。对于一个接口继承多个父接口的情况也一样不存在这些缺点。
Android 回调函数
回调函数就是那些自己写的,但是不是自己来调用的,而是给别人来调用的函数。
消息响应数就可以看成是回调函数,因为是让系统在合适的时候去调用,这不过是消息相应函数就是为了处理消息的,所以就拿出来单做一类了。其本质上就是回调函数。
但是回调函数不是只有消息响应函数一种,比如在内核变成中,驱动程序就要提供一些回调函数,当一个设备的数据读写完成后,让系统调用这些回调函数来执行一些后续工作。
回调函数赋予程序员这样一种行为,让自己编写的代码能够跳出正常的程序控制流,适应具体的运行环境在正确的运行时间执行。
Java 中关于字符串拼接的问题,单引号是用来套双引号的。
Java 实例-方法重载
先来看下方法重载(Overloading)的定义:如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。 具体说明如下:
- 方法名相同
- 方法的参数类型,个数顺序至少有一项不同
- 方法的返回类型可以不相同
- 方法的修饰符可以不相同
- main方法也可以被重载
以下实例演示了如何重载 MyClass 类的 info 方法:
class MyClass { int height; MyClass() { System.out.println("无参数构造函数"); height = 4; } MyClass(int i) { System.out.println("房子高度为 " + i + " 米"); height = i; } void info() { System.out.println("房子高度为 " + height + " 米"); } void info(String s) { System.out.println(s + ": 房子高度为 " + height + " 米"); }}public class MainClass { public static void main(String[] args) { MyClass t = new MyClass(3); t.info(); t.info("重载方法"); //重载构造函数 new MyClass(); }}
输出结果:
房子高度为 3 米房子高度为 3 米重载方法: 房子高度为 3 米无参数构造函数
Java-方法覆盖
方法重载与方法覆盖区别如下:
- 方法重载(Overloading):如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。
- 方法覆盖(Overriding):如果在子类中定义一个方法,其名称、返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么可以说,子类的方法覆盖了父类的方法。
以下实例演示了 Java 方法覆盖(Overriding)代码的实现:
public class Findareas{ public static void main (String []agrs){ Figure f= new Figure(10 , 10); Rectangle r= new Rectangle(9 , 5); Figure figref; figref=f; System.out.println("Area is :"+figref.area()); figref=r; System.out.println("Area is :"+figref.area()); }}class Figure{ double dim1; double dim2; Figure(double a , double b) { dim1=a; dim2=b; } Double area() { System.out.println("Inside area for figure."); return(dim1*dim2); }}class Rectangle extends Figure { Rectangle(double a, double b) { super(a ,b); } Double area() { System.out.println("Inside area for rectangle."); return(dim1*dim2); }}
以上代码运行输出结果为:
Inside area for figure.Area is :100.0Inside area for rectangle.Area is :45.0
Java 文件写入
import java.io.*;public class Main { public static void main(String[] args) { try { BufferedWriter out = new BufferedWriter(new FileWriter("outfilename")); out.write("w3cschool"); out.close(); System.out.println ("文件创建成功!"); } catch (IOException e) { } }}
创建成功后当前目录下就会生成一个名为 outfilename 的文件并将"w3cschool菜鸟教程"字符串写入该文件。
Java 读文件
import java.io.*;public class Main { public static void main(String[] args) { try { BufferedReader in = new BufferedReader (new FileReader("test.log")); String str; while ((str = in.readLine()) != null) { System.out.println(str); } System.out.println(str); } catch (IOException e) { } }}
Java 文件删除
import java.io.*;public class Main{ public static void main(String[] args) { try{ File file = new File("c:\\test.txt"); if(file.delete()){ System.out.println(file.getName() + " 文件已被删除!"); }else{ System.out.println("文件删除失败!"); } }catch(Exception e){ e.printStackTrace(); } }}
Java 中的 Finally 关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会被执行 。
Java 实例 - 获取指定主机的IP地址
以下实例演示了如何使用 InetAddress 类的 InetAddress.getByName() 方法来获取指定主机(网址)的IP地址:import java.net.InetAddress;import java.net.UnknownHostException;public class GetIP { public static void main(String[] args) { InetAddress address = null; try { address = InetAddress.getByName ("www.w3cschool.cc"); } catch (UnknownHostException e) { System.exit(2); } System.out.println(address.getHostName() + "=" + address.getHostAddress()); System.exit(0); }}
以上代码运行输出结果为:
www.w3cschool.cc=222.73.134.120
Java 实例 - 查看端口是否已使用
import java.net.*;import java.io.*;public class Main { public static void main(String[] args) { Socket Skt; String host = "localhost"; if (args.length > 0) { host = args[0]; } for (int i = 0; i < 1024; i++) { try { System.out.println("查看 "+ i); Skt = new Socket(host, i); System.out.println("端口 " + i + " 已被使用"); } catch (UnknownHostException e) { System.out.println("Exception occured"+ e); break; } catch (IOException e) { } } }}
以上代码运行输出结果为:
……查看 17查看 18查看 19查看 20查看 21端口 21 已被使用查看 22查看 23查看 24
Java 实例 - 获取本机ip地址及主机名
import java.net.InetAddress;public class Main { public static void main(String[] args) throws Exception { InetAddress addr = InetAddress.getLocalHost(); System.out.println("Local HostAddress: "+addr.getHostAddress()); String hostname = addr.getHostName(); System.out.println("Local host name: "+hostname); }}
以上代码运行输出结果为:
Local HostAddress: 192.168.1.4Local host name: harsh
Java 实例 - 获取远程文件大小
import java.net.URL;import java.net.URLConnection;public class Main { public static void main(String[] argv) throws Exception { int size; URL url = new URL("http://www.w3cschool.cc/wp-content/themes/w3cschool.cc/assets/img/newlogo.png"); URLConnection conn = url.openConnection(); size = conn.getContentLength(); if (size < 0) System.out.println("无法获取文件大小。"); else System.out.println("文件大小为:" + + size + " bytes"); conn.getInputStream().close(); }}
以上代码运行输出结果为:
文件大小为:4261 bytes
Java 实例 - Socket 实现多线程服务器程序
import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;public class MultiThreadServer implements Runnable { Socket csocket; MultiThreadServer(Socket csocket) { this.csocket = csocket; } public static void main(String args[]) throws Exception { ServerSocket ssock = new ServerSocket(1234); System.out.println("Listening"); while (true) { Socket sock = ssock.accept(); System.out.println("Connected"); new Thread(new MultiThreadServer(sock)).start(); } } public void run() { try { PrintStream pstream = new PrintStream (csocket.getOutputStream()); for (int i = 100; i >= 0; i--) { pstream.println(i + " bottles of beer on the wall"); } pstream.close(); csocket.close(); } catch (IOException e) { System.out.println(e); } }}
以上代码运行输出结果为:
ListeningConnected
0 0
- Java 初学者要知道的一些知识(未完待续)
- 一些Windows系统的知识(未完待续)
- Java初学者应该知道和注意的一些知识
- Java虚拟机的结构(未完待续)
- java的基础语法(未完待续)
- 一些算法(未完待续)
- 一些数据结构(未完待续)
- JAVA 基础小知识~~未完待续.....
- 最近get到的小知识(未完待续)
- 安装GT4时遇到的一些问题(未完待续)
- 一些有价值的博文收录(未完待续)
- Eclipse的一些技巧以及快捷键(未完待续)
- mac下的一些工具或命令(未完待续。。。)
- 二叉堆的一些基本操作(未完待续)
- Qt使用的一些技巧(未完待续。。。)
- python 38一些图像处理的方法(未完待续)
- c++知识汇总(未完待续)
- c知识杂集(未完待续)
- mysql 如何设置自动增长序列 sequence(一)
- tomcat创建虚拟目录
- 【弦图染色】【bzoj 1006】: [HNOI2008]神奇的国度
- 新增支付接口修改
- VS2008 解决方案的目录结构设置和管理
- Java 初学者要知道的一些知识(未完待续)
- (转)卡马克卷轴算法研究
- pushing a navigation controller is not supported UIImagepickercontroller
- iOS应用国际化教程(2014版)
- nagios使用nsca实现被动监控
- linux下mysql配置文件my.cnf详解
- 关于ROS
- andrioid之BitmapUtil对图片处理代码demo
- C++11/14/17 Features In VS 2015 Preview(Stephan T. Lavavej)