java

java

js array map

PHPheishanlaoyao Published the article • 0 comments • 242 views • 2018-02-13 12:49 • 来自相关话题

Array.prototype.map = function(callback) {
var arr = this;
var count = arr.length;
for (var i = 0; i < count; i++) {
callback(arr[i]);
}
}

var aa = new Array(33, 3, 4, 5);
aa.map(function(index) {
alert(index);
}); 查看全部


Array.prototype.map = function(callback) {
var arr = this;
var count = arr.length;
for (var i = 0; i < count; i++) {
callback(arr[i]);
}
}

var aa = new Array(33, 3, 4, 5);
aa.map(function(index) {
alert(index);
});

Java 文件压缩

PHP766387hhh Published the article • 0 comments • 295 views • 2018-02-13 12:49 • 来自相关话题

package com.vim.ZipFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipDemo
{

public static void main(String[] args)
{
String[] src={"str.cpp", "hello.c", "hello.txt"};
String target="c:users/lenovo/desktop/target.zip";

try
{

ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(target));

FileInputStream fis=null;

for(int i=0; i<src.length; i++)
{
fis=new FileInputStream(src[i]);
zip.putNextEntry(new ZipEntry(src[i]));

int len;
byte[] buffer=new byte[1024];

while((len=fis.read(buffer, 0, buffer.length))!=-1)
zip.write(buffer, 0, len);

}
zip.closeEntry();
fis.close();
zip.close();

} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}


} 查看全部


package com.vim.ZipFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipDemo
{

public static void main(String[] args)
{
String[] src={"str.cpp", "hello.c", "hello.txt"};
String target="c:users/lenovo/desktop/target.zip";

try
{

ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(target));

FileInputStream fis=null;

for(int i=0; i<src.length; i++)
{
fis=new FileInputStream(src[i]);
zip.putNextEntry(new ZipEntry(src[i]));

int len;
byte[] buffer=new byte[1024];

while((len=fis.read(buffer, 0, buffer.length))!=-1)
zip.write(buffer, 0, len);

}
zip.closeEntry();
fis.close();
zip.close();

} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}


}



Java 文件目录的遍历

PHPgxwpf Published the article • 0 comments • 313 views • 2018-02-13 12:49 • 来自相关话题

package com.vim.ZipFile;

import java.io.File;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ConcurrentLinkedQueue;

public class TraverFileList
{
public static void main(String[] args)
{
String pathname="C:/Users/lenovo/Desktop/算法";
//traver(pathname);
//traverFile(pathname);
queueTraver(pathname);
}

public static void traver(String pathname)
{

File file=new File(pathname);

if(!file.exists())
return;
else if(file.isDirectory())
{
String[] filelist=file.list();
for(int i=0; i<filelist.length; i++)
traver(file.getAbsolutePath()+"\"+filelist[i]);
}
else
System.out.println(pathname);
}

public static void traverFile(String pathname)
{
Stack<String> stack=new Stack<String>();
stack.push(pathname);
while(!stack.empty())
{
File file=new File(stack.pop());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
stack.push(file.getAbsolutePath() + "\" + list[i]);
}
else
System.out.println(file.getAbsolutePath());
}
}

public static void queueTraver(String pathname)
{
int count=0;
Queue<String> queue=new ConcurrentLinkedQueue<String>();
queue.add(pathname);
while(!queue.isEmpty())
{
File file=new File(queue.remove());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
queue.add(file.getAbsolutePath() + "\" + list[i]);
}
else
{
count++;
System.out.println(file.getAbsolutePath());
}
}
System.out.println("count: " + count);
}
} 查看全部


package com.vim.ZipFile;

import java.io.File;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ConcurrentLinkedQueue;

public class TraverFileList
{
public static void main(String[] args)
{
String pathname="C:/Users/lenovo/Desktop/算法";
//traver(pathname);
//traverFile(pathname);
queueTraver(pathname);
}

public static void traver(String pathname)
{

File file=new File(pathname);

if(!file.exists())
return;
else if(file.isDirectory())
{
String[] filelist=file.list();
for(int i=0; i<filelist.length; i++)
traver(file.getAbsolutePath()+"\"+filelist[i]);
}
else
System.out.println(pathname);
}

public static void traverFile(String pathname)
{
Stack<String> stack=new Stack<String>();
stack.push(pathname);
while(!stack.empty())
{
File file=new File(stack.pop());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
stack.push(file.getAbsolutePath() + "\" + list[i]);
}
else
System.out.println(file.getAbsolutePath());
}
}

public static void queueTraver(String pathname)
{
int count=0;
Queue<String> queue=new ConcurrentLinkedQueue<String>();
queue.add(pathname);
while(!queue.isEmpty())
{
File file=new File(queue.remove());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
queue.add(file.getAbsolutePath() + "\" + list[i]);
}
else
{
count++;
System.out.println(file.getAbsolutePath());
}
}
System.out.println("count: " + count);
}
}

java 简易http服务器原理

PHPit小博士 Published the article • 0 comments • 236 views • 2018-02-13 12:49 • 来自相关话题

java 简易http服务器原理

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* Created by deliang on 10/12/15.
*/
public class ServerThread extends Thread {

private ServerSocket serverSocket;

public ServerThread() throws IOException {
serverSocket = new ServerSocket(8090, 5, InetAddress.getByName("127.0.0.1"));
}


@Override
public void run() {
super.run();

while (true) {
Socket client = null;
try {
client = serverSocket.accept();
System.out.println("Just connect to: " + client.getRemoteSocketAddress());
PrintStream out = new PrintStream(client.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html; charset=UTF-8");
out.println();
out.println("<h1>hello world</h1>");
out.flush();
out.close();
// DataInputStream in = new DataInputStream(client.getInputStream());
// System.out.println(in.readUTF());
client.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

} 查看全部


java 简易http服务器原理




import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* Created by deliang on 10/12/15.
*/
public class ServerThread extends Thread {

private ServerSocket serverSocket;

public ServerThread() throws IOException {
serverSocket = new ServerSocket(8090, 5, InetAddress.getByName("127.0.0.1"));
}


@Override
public void run() {
super.run();

while (true) {
Socket client = null;
try {
client = serverSocket.accept();
System.out.println("Just connect to: " + client.getRemoteSocketAddress());
PrintStream out = new PrintStream(client.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html; charset=UTF-8");
out.println();
out.println("<h1>hello world</h1>");
out.flush();
out.close();
// DataInputStream in = new DataInputStream(client.getInputStream());
// System.out.println(in.readUTF());
client.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

}


java 获取报头的信息

PHPq11111222 Published the article • 0 comments • 305 views • 2018-02-13 12:49 • 来自相关话题

import java.util.List;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.util.Map;


public class GetHttpHeader {
public static void main(String[] args) {
String path="http://yydl.duowan.com/4/setup/YYSetup-6.23.0.1-zh-CN.exe";
HttpHeader header=new HttpHeader(path);
try {
header.printHeader();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


class HttpHeader{

private String path;

public HttpHeader(String path){
this.path=path;
}

public void printHeader() throws IOException{
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
if(connection.getResponseCode()==200){
Map<String, List<String>> headers = connection.getHeaderFields();

for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

String key = entry.getKey();

for (String value : entry.getValue()) {

System.out.println(key + ": " + value);

}

}
}
}

} 查看全部


import java.util.List;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.util.Map;


public class GetHttpHeader {
public static void main(String[] args) {
String path="http://yydl.duowan.com/4/setup/YYSetup-6.23.0.1-zh-CN.exe";
HttpHeader header=new HttpHeader(path);
try {
header.printHeader();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


class HttpHeader{

private String path;

public HttpHeader(String path){
this.path=path;
}

public void printHeader() throws IOException{
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
if(connection.getResponseCode()==200){
Map<String, List<String>> headers = connection.getHeaderFields();

for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

String key = entry.getKey();

for (String value : entry.getValue()) {

System.out.println(key + ": " + value);

}

}
}
}

}

实现高保真文件复制

PHPlanmao Published the article • 0 comments • 243 views • 2018-02-13 12:49 • 来自相关话题

public static void copy(File file1, File file2){
try {
InputStream in=new FileInputStream(file2);
OutputStream out=new FileOutputStream(file1);
//StringBuffer sb=new StringBuffer();
byte[] bytes=new byte[20];
//int len=0;
while(in.read(bytes)!=-1){
out.write(bytes);
}
in.close();
out.close();
/* try {

Writer out=new FileWriter(file1);
out.write(sb.toString());
out.close();
} catch (IOException e) {
// TODO: handle exception
}*/

} catch (IOException e) {
e.printStackTrace();
}
} 查看全部


public static void copy(File file1, File file2){
try {
InputStream in=new FileInputStream(file2);
OutputStream out=new FileOutputStream(file1);
//StringBuffer sb=new StringBuffer();
byte[] bytes=new byte[20];
//int len=0;
while(in.read(bytes)!=-1){
out.write(bytes);
}
in.close();
out.close();
/* try {

Writer out=new FileWriter(file1);
out.write(sb.toString());
out.close();
} catch (IOException e) {
// TODO: handle exception
}*/

} catch (IOException e) {
e.printStackTrace();
}
}

DOM 方法实现java 读取xml文件

PHPlanmao Published the article • 0 comments • 262 views • 2018-02-13 12:49 • 来自相关话题

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


public class ReadXML{
public static void main(String[] args) {
String pathname="src/person.xml";
File file =new File(pathname);

try {
DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=db.newDocumentBuilder();
Document document=builder.parse(file); // get the file
NodeList list=document.getElementsByTagName("teacher");
for(int i=0; i<list.getLength(); i++){
System.out.println("teacher name: "+ document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
System.out.println("teacher title: "+ document.getElementsByTagName("title").item(i).getFirstChild().getNodeValue());
System.out.println("teacher age: "+ document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
}

} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
} 查看全部


import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


public class ReadXML{
public static void main(String[] args) {
String pathname="src/person.xml";
File file =new File(pathname);

try {
DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=db.newDocumentBuilder();
Document document=builder.parse(file); // get the file
NodeList list=document.getElementsByTagName("teacher");
for(int i=0; i<list.getLength(); i++){
System.out.println("teacher name: "+ document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
System.out.println("teacher title: "+ document.getElementsByTagName("title").item(i).getFirstChild().getNodeValue());
System.out.println("teacher age: "+ document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
}

} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}

一、Java的基础语法

PHPmdgsy Published the article • 0 comments • 267 views • 2018-02-13 12:49 • 来自相关话题

一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。学习一门新的语言,首先就得从基础学起,扎根与基础才能一步一步的的架构起高楼,所谓“勿在浮沙筑高楼”就是这个道理,我们不能够没有扎实的基础,就实现你的软件工程,这是我的一点小小的感悟,毕竟我自学其他语言C、C++、etc,走了很多的弯路,我希望我的读者能够从基础扎起,少走弯路。

首先从“Hello world”开始:
public class Base {

public static void main(String[] args) {
System.out.println("Hello world");
}

}就是这么简单,然后console就会打印出“Hello world”的字符串。



基本语法

编写Java程序时,应注意以下几点:
大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。主方法入口:所有的Java 程序由public static void main(String args[])方法开始执行。
Java标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于Java标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始首字符之后可以是任何字符的组合关键字不能用作标识符标识符是大小写敏感的合法标识符举例:age、$salary、_value、__1_value非法标识符举例:123abc、-salary
Java修饰符

像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
可访问修饰符 : default, public , protected, private不可访问修饰符 : final, abstract, strictfp
在后面的章节中我们会深入讨论Java修饰符。

Java变量
Java中主要有如下几种类型的变量局部变量类变量(静态变量)
static成员变量(非静态变量)
Java数组

数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。

Java枚举

Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
For Example:
public class Base
{

public static void main(String[] args)
{
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


class Apple
{
enum AppleSize{SAMLL, MEDUIM, LARGE};
AppleSize size;
}
Java关键字

下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。

关键字

描述

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

boolean

布尔数据类型

break

跳出循环或者label代码段

byte

8-bit 有符号数据类型

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

char

16-bit Unicode字符数据类型

class

定义类

const

未使用

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类

finally

为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。

float

32-bit单精度浮点数

for

for循环语句

goto

未使用

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问
子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例
或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环

Java注释

类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。
Fox Instance
public class Base
{

public static void main(String[] args)
{
/*
* 这个一个Base类, 然后这个
* 是多行注释
*
*
*/
// 单行注释
/* 这个也是单行注释 */
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


Java 空行

空白行,或者有注释的的行,Java编译器都会忽略掉。

继承

在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。

利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。

接口

在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。

接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。

下一节介绍Java编程中的类和对象。之后你将会对Java中的类和对象有更清楚的认识。


(有些基础概念引用:http://www.w3cschool.cc/java/j ... .html)  查看全部



一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。


  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
学习一门新的语言,首先就得从基础学起,扎根与基础才能一步一步的的架构起高楼,所谓“勿在浮沙筑高楼”就是这个道理,我们不能够没有扎实的基础,就实现你的软件工程,这是我的一点小小的感悟,毕竟我自学其他语言C、C++、etc,走了很多的弯路,我希望我的读者能够从基础扎起,少走弯路。



首先从“Hello world”开始:

public class Base {

public static void main(String[] args) {
System.out.println("Hello world");
}

}
就是这么简单,然后console就会打印出“Hello world”的字符串。





基本语法



编写Java程序时,应注意以下几点:


  • 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的Java 程序由public static void main(String args[])方法开始执行。


Java标识符



Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。



关于Java标识符,有以下几点需要注意:


  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是任何字符的组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary


Java修饰符



像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:


  • 可访问修饰符 : default, public , protected, private
  • 不可访问修饰符 : final, abstract, strictfp


在后面的章节中我们会深入讨论Java修饰符。



Java变量


Java中主要有如下几种类型的变量
  • 局部变量
  • 类变量(静态变量)
    static
  • 成员变量(非静态变量)


Java数组



数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。



Java枚举



Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。



例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。


For Example:

public class Base 
{

public static void main(String[] args)
{
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


class Apple
{
enum AppleSize{SAMLL, MEDUIM, LARGE};
AppleSize size;
}


Java关键字



下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。









































































































关键字

描述

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

boolean

布尔数据类型

break

跳出循环或者label代码段

byte

8-bit 有符号数据类型

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

char

16-bit Unicode字符数据类型

class

定义类

const

未使用

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示一个值在初始化之后就不能再改变了

表示方法不能被重写,或者一个类不能有子类

finally

为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。

float

32-bit单精度浮点数

for

for循环语句

goto

未使用

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问

子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例

或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环


Java注释



类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。


Fox Instance

public class Base 
{

public static void main(String[] args)
{
/*
* 这个一个Base类, 然后这个
* 是多行注释
*
*
*/
// 单行注释
/* 这个也是单行注释 */
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}




Java 空行



空白行,或者有注释的的行,Java编译器都会忽略掉。




继承



在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。



利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。



接口



在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。



接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。



下一节介绍Java编程中的类和对象。之后你将会对Java中的类和对象有更清楚的认识。





(有些基础概念引用:http://www.w3cschool.cc/java/j ... .html) 

二、Java类和对象

PHPLarryHof Published the article • 0 comments • 305 views • 2018-02-13 12:49 • 来自相关话题

Java对象和类

Java作为一种面向对象语言。支持以下基本概念:

多态继承封装抽象类对象实例方法消息解析

本节我们重点研究对象和类的概念。

对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。


简单的实现一个Dog类
class Dog
{
private String name;
private int age;
private String color;

// constructor
public Dog(String name, int age, String color)
{
this.name=name;
this.age=age;
this.color=color;
}

public void breaking()
{
System.out.println("Dog Breaking");
}

public void sleep()
{
System.out.println("Dog Sleeping");
}
}

创建对象(实例化对象)

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。实例化:使用关键字new来创建一个对象。初始化:使用new创建对象时,会调用构造方法初始化对象。
public class Base
{

public static void main(String[] args)
{
// 实例化对象
Dog dog=new Dog("ZJQ", 5, "Black");
dog.breaking();
dog.sleep();
}

}
Console:
Dog Breaking
Dog Sleeping




源文件声明规则

在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

一个源文件中只能有一个public类一个源文件可以有多个非public类源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。如果一个类定义在某个包中,那么package语句应该在源文件的首行。如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。




Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类
import java.io.*; 查看全部



Java对象和类



Java作为一种面向对象语言。支持以下基本概念:



  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 消息解析


本节我们重点研究对象和类的概念。



  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。




简单的实现一个Dog类

class Dog
{
private String name;
private int age;
private String color;

// constructor
public Dog(String name, int age, String color)
{
this.name=name;
this.age=age;
this.color=color;
}

public void breaking()
{
System.out.println("Dog Breaking");
}

public void sleep()
{
System.out.println("Dog Sleeping");
}
}


创建对象(实例化对象)



对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:



  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

public class Base 
{

public static void main(String[] args)
{
// 实例化对象
Dog dog=new Dog("ZJQ", 5, "Black");
dog.breaking();
dog.sleep();
}

}


Console:

Dog Breaking

Dog Sleeping






源文件声明规则



在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。



  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。


类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。



除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。







Java包



包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。



Import语句



在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。



例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类


import java.io.*;




js array map

PHPheishanlaoyao Published the article • 0 comments • 242 views • 2018-02-13 12:49 • 来自相关话题

Array.prototype.map = function(callback) {
var arr = this;
var count = arr.length;
for (var i = 0; i < count; i++) {
callback(arr[i]);
}
}

var aa = new Array(33, 3, 4, 5);
aa.map(function(index) {
alert(index);
}); 查看全部


Array.prototype.map = function(callback) {
var arr = this;
var count = arr.length;
for (var i = 0; i < count; i++) {
callback(arr[i]);
}
}

var aa = new Array(33, 3, 4, 5);
aa.map(function(index) {
alert(index);
});

Java 文件压缩

PHP766387hhh Published the article • 0 comments • 295 views • 2018-02-13 12:49 • 来自相关话题

package com.vim.ZipFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipDemo
{

public static void main(String[] args)
{
String[] src={"str.cpp", "hello.c", "hello.txt"};
String target="c:users/lenovo/desktop/target.zip";

try
{

ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(target));

FileInputStream fis=null;

for(int i=0; i<src.length; i++)
{
fis=new FileInputStream(src[i]);
zip.putNextEntry(new ZipEntry(src[i]));

int len;
byte[] buffer=new byte[1024];

while((len=fis.read(buffer, 0, buffer.length))!=-1)
zip.write(buffer, 0, len);

}
zip.closeEntry();
fis.close();
zip.close();

} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}


} 查看全部


package com.vim.ZipFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipDemo
{

public static void main(String[] args)
{
String[] src={"str.cpp", "hello.c", "hello.txt"};
String target="c:users/lenovo/desktop/target.zip";

try
{

ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(target));

FileInputStream fis=null;

for(int i=0; i<src.length; i++)
{
fis=new FileInputStream(src[i]);
zip.putNextEntry(new ZipEntry(src[i]));

int len;
byte[] buffer=new byte[1024];

while((len=fis.read(buffer, 0, buffer.length))!=-1)
zip.write(buffer, 0, len);

}
zip.closeEntry();
fis.close();
zip.close();

} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}


}



Java 文件目录的遍历

PHPgxwpf Published the article • 0 comments • 313 views • 2018-02-13 12:49 • 来自相关话题

package com.vim.ZipFile;

import java.io.File;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ConcurrentLinkedQueue;

public class TraverFileList
{
public static void main(String[] args)
{
String pathname="C:/Users/lenovo/Desktop/算法";
//traver(pathname);
//traverFile(pathname);
queueTraver(pathname);
}

public static void traver(String pathname)
{

File file=new File(pathname);

if(!file.exists())
return;
else if(file.isDirectory())
{
String[] filelist=file.list();
for(int i=0; i<filelist.length; i++)
traver(file.getAbsolutePath()+"\"+filelist[i]);
}
else
System.out.println(pathname);
}

public static void traverFile(String pathname)
{
Stack<String> stack=new Stack<String>();
stack.push(pathname);
while(!stack.empty())
{
File file=new File(stack.pop());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
stack.push(file.getAbsolutePath() + "\" + list[i]);
}
else
System.out.println(file.getAbsolutePath());
}
}

public static void queueTraver(String pathname)
{
int count=0;
Queue<String> queue=new ConcurrentLinkedQueue<String>();
queue.add(pathname);
while(!queue.isEmpty())
{
File file=new File(queue.remove());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
queue.add(file.getAbsolutePath() + "\" + list[i]);
}
else
{
count++;
System.out.println(file.getAbsolutePath());
}
}
System.out.println("count: " + count);
}
} 查看全部


package com.vim.ZipFile;

import java.io.File;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ConcurrentLinkedQueue;

public class TraverFileList
{
public static void main(String[] args)
{
String pathname="C:/Users/lenovo/Desktop/算法";
//traver(pathname);
//traverFile(pathname);
queueTraver(pathname);
}

public static void traver(String pathname)
{

File file=new File(pathname);

if(!file.exists())
return;
else if(file.isDirectory())
{
String[] filelist=file.list();
for(int i=0; i<filelist.length; i++)
traver(file.getAbsolutePath()+"\"+filelist[i]);
}
else
System.out.println(pathname);
}

public static void traverFile(String pathname)
{
Stack<String> stack=new Stack<String>();
stack.push(pathname);
while(!stack.empty())
{
File file=new File(stack.pop());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
stack.push(file.getAbsolutePath() + "\" + list[i]);
}
else
System.out.println(file.getAbsolutePath());
}
}

public static void queueTraver(String pathname)
{
int count=0;
Queue<String> queue=new ConcurrentLinkedQueue<String>();
queue.add(pathname);
while(!queue.isEmpty())
{
File file=new File(queue.remove());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i<list.length; i++)
queue.add(file.getAbsolutePath() + "\" + list[i]);
}
else
{
count++;
System.out.println(file.getAbsolutePath());
}
}
System.out.println("count: " + count);
}
}

java 简易http服务器原理

PHPit小博士 Published the article • 0 comments • 236 views • 2018-02-13 12:49 • 来自相关话题

java 简易http服务器原理

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* Created by deliang on 10/12/15.
*/
public class ServerThread extends Thread {

private ServerSocket serverSocket;

public ServerThread() throws IOException {
serverSocket = new ServerSocket(8090, 5, InetAddress.getByName("127.0.0.1"));
}


@Override
public void run() {
super.run();

while (true) {
Socket client = null;
try {
client = serverSocket.accept();
System.out.println("Just connect to: " + client.getRemoteSocketAddress());
PrintStream out = new PrintStream(client.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html; charset=UTF-8");
out.println();
out.println("<h1>hello world</h1>");
out.flush();
out.close();
// DataInputStream in = new DataInputStream(client.getInputStream());
// System.out.println(in.readUTF());
client.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

} 查看全部


java 简易http服务器原理




import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* Created by deliang on 10/12/15.
*/
public class ServerThread extends Thread {

private ServerSocket serverSocket;

public ServerThread() throws IOException {
serverSocket = new ServerSocket(8090, 5, InetAddress.getByName("127.0.0.1"));
}


@Override
public void run() {
super.run();

while (true) {
Socket client = null;
try {
client = serverSocket.accept();
System.out.println("Just connect to: " + client.getRemoteSocketAddress());
PrintStream out = new PrintStream(client.getOutputStream());
out.println("HTTP/1.1 200 OK");
out.println("Content-Type: text/html; charset=UTF-8");
out.println();
out.println("<h1>hello world</h1>");
out.flush();
out.close();
// DataInputStream in = new DataInputStream(client.getInputStream());
// System.out.println(in.readUTF());
client.close();
} catch (IOException e) {
e.printStackTrace();
}

}

}

}


java 获取报头的信息

PHPq11111222 Published the article • 0 comments • 305 views • 2018-02-13 12:49 • 来自相关话题

import java.util.List;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.util.Map;


public class GetHttpHeader {
public static void main(String[] args) {
String path="http://yydl.duowan.com/4/setup/YYSetup-6.23.0.1-zh-CN.exe";
HttpHeader header=new HttpHeader(path);
try {
header.printHeader();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


class HttpHeader{

private String path;

public HttpHeader(String path){
this.path=path;
}

public void printHeader() throws IOException{
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
if(connection.getResponseCode()==200){
Map<String, List<String>> headers = connection.getHeaderFields();

for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

String key = entry.getKey();

for (String value : entry.getValue()) {

System.out.println(key + ": " + value);

}

}
}
}

} 查看全部


import java.util.List;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.util.Map;


public class GetHttpHeader {
public static void main(String[] args) {
String path="http://yydl.duowan.com/4/setup/YYSetup-6.23.0.1-zh-CN.exe";
HttpHeader header=new HttpHeader(path);
try {
header.printHeader();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


class HttpHeader{

private String path;

public HttpHeader(String path){
this.path=path;
}

public void printHeader() throws IOException{
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
if(connection.getResponseCode()==200){
Map<String, List<String>> headers = connection.getHeaderFields();

for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

String key = entry.getKey();

for (String value : entry.getValue()) {

System.out.println(key + ": " + value);

}

}
}
}

}

实现高保真文件复制

PHPlanmao Published the article • 0 comments • 243 views • 2018-02-13 12:49 • 来自相关话题

public static void copy(File file1, File file2){
try {
InputStream in=new FileInputStream(file2);
OutputStream out=new FileOutputStream(file1);
//StringBuffer sb=new StringBuffer();
byte[] bytes=new byte[20];
//int len=0;
while(in.read(bytes)!=-1){
out.write(bytes);
}
in.close();
out.close();
/* try {

Writer out=new FileWriter(file1);
out.write(sb.toString());
out.close();
} catch (IOException e) {
// TODO: handle exception
}*/

} catch (IOException e) {
e.printStackTrace();
}
} 查看全部


public static void copy(File file1, File file2){
try {
InputStream in=new FileInputStream(file2);
OutputStream out=new FileOutputStream(file1);
//StringBuffer sb=new StringBuffer();
byte[] bytes=new byte[20];
//int len=0;
while(in.read(bytes)!=-1){
out.write(bytes);
}
in.close();
out.close();
/* try {

Writer out=new FileWriter(file1);
out.write(sb.toString());
out.close();
} catch (IOException e) {
// TODO: handle exception
}*/

} catch (IOException e) {
e.printStackTrace();
}
}

DOM 方法实现java 读取xml文件

PHPlanmao Published the article • 0 comments • 262 views • 2018-02-13 12:49 • 来自相关话题

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


public class ReadXML{
public static void main(String[] args) {
String pathname="src/person.xml";
File file =new File(pathname);

try {
DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=db.newDocumentBuilder();
Document document=builder.parse(file); // get the file
NodeList list=document.getElementsByTagName("teacher");
for(int i=0; i<list.getLength(); i++){
System.out.println("teacher name: "+ document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
System.out.println("teacher title: "+ document.getElementsByTagName("title").item(i).getFirstChild().getNodeValue());
System.out.println("teacher age: "+ document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
}

} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
} 查看全部


import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;


public class ReadXML{
public static void main(String[] args) {
String pathname="src/person.xml";
File file =new File(pathname);

try {
DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=db.newDocumentBuilder();
Document document=builder.parse(file); // get the file
NodeList list=document.getElementsByTagName("teacher");
for(int i=0; i<list.getLength(); i++){
System.out.println("teacher name: "+ document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
System.out.println("teacher title: "+ document.getElementsByTagName("title").item(i).getFirstChild().getNodeValue());
System.out.println("teacher age: "+ document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
}

} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}

一、Java的基础语法

PHPmdgsy Published the article • 0 comments • 267 views • 2018-02-13 12:49 • 来自相关话题

一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。学习一门新的语言,首先就得从基础学起,扎根与基础才能一步一步的的架构起高楼,所谓“勿在浮沙筑高楼”就是这个道理,我们不能够没有扎实的基础,就实现你的软件工程,这是我的一点小小的感悟,毕竟我自学其他语言C、C++、etc,走了很多的弯路,我希望我的读者能够从基础扎起,少走弯路。

首先从“Hello world”开始:
public class Base {

public static void main(String[] args) {
System.out.println("Hello world");
}

}就是这么简单,然后console就会打印出“Hello world”的字符串。



基本语法

编写Java程序时,应注意以下几点:
大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。主方法入口:所有的Java 程序由public static void main(String args[])方法开始执行。
Java标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于Java标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始首字符之后可以是任何字符的组合关键字不能用作标识符标识符是大小写敏感的合法标识符举例:age、$salary、_value、__1_value非法标识符举例:123abc、-salary
Java修饰符

像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
可访问修饰符 : default, public , protected, private不可访问修饰符 : final, abstract, strictfp
在后面的章节中我们会深入讨论Java修饰符。

Java变量
Java中主要有如下几种类型的变量局部变量类变量(静态变量)
static成员变量(非静态变量)
Java数组

数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。

Java枚举

Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
For Example:
public class Base
{

public static void main(String[] args)
{
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


class Apple
{
enum AppleSize{SAMLL, MEDUIM, LARGE};
AppleSize size;
}
Java关键字

下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。

关键字

描述

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

boolean

布尔数据类型

break

跳出循环或者label代码段

byte

8-bit 有符号数据类型

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

char

16-bit Unicode字符数据类型

class

定义类

const

未使用

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类

finally

为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。

float

32-bit单精度浮点数

for

for循环语句

goto

未使用

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问
子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例
或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环

Java注释

类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。
Fox Instance
public class Base
{

public static void main(String[] args)
{
/*
* 这个一个Base类, 然后这个
* 是多行注释
*
*
*/
// 单行注释
/* 这个也是单行注释 */
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


Java 空行

空白行,或者有注释的的行,Java编译器都会忽略掉。

继承

在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。

利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。

接口

在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。

接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。

下一节介绍Java编程中的类和对象。之后你将会对Java中的类和对象有更清楚的认识。


(有些基础概念引用:http://www.w3cschool.cc/java/j ... .html)  查看全部



一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。


  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
学习一门新的语言,首先就得从基础学起,扎根与基础才能一步一步的的架构起高楼,所谓“勿在浮沙筑高楼”就是这个道理,我们不能够没有扎实的基础,就实现你的软件工程,这是我的一点小小的感悟,毕竟我自学其他语言C、C++、etc,走了很多的弯路,我希望我的读者能够从基础扎起,少走弯路。



首先从“Hello world”开始:

public class Base {

public static void main(String[] args) {
System.out.println("Hello world");
}

}
就是这么简单,然后console就会打印出“Hello world”的字符串。





基本语法



编写Java程序时,应注意以下几点:


  • 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的Java 程序由public static void main(String args[])方法开始执行。


Java标识符



Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。



关于Java标识符,有以下几点需要注意:


  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是任何字符的组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary


Java修饰符



像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:


  • 可访问修饰符 : default, public , protected, private
  • 不可访问修饰符 : final, abstract, strictfp


在后面的章节中我们会深入讨论Java修饰符。



Java变量


Java中主要有如下几种类型的变量
  • 局部变量
  • 类变量(静态变量)
    static
  • 成员变量(非静态变量)


Java数组



数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。



Java枚举



Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。



例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。


For Example:

public class Base 
{

public static void main(String[] args)
{
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}


class Apple
{
enum AppleSize{SAMLL, MEDUIM, LARGE};
AppleSize size;
}


Java关键字



下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。









































































































关键字

描述

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

boolean

布尔数据类型

break

跳出循环或者label代码段

byte

8-bit 有符号数据类型

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

char

16-bit Unicode字符数据类型

class

定义类

const

未使用

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示一个值在初始化之后就不能再改变了

表示方法不能被重写,或者一个类不能有子类

finally

为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。

float

32-bit单精度浮点数

for

for循环语句

goto

未使用

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问

子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例

或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环


Java注释



类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。


Fox Instance

public class Base 
{

public static void main(String[] args)
{
/*
* 这个一个Base类, 然后这个
* 是多行注释
*
*
*/
// 单行注释
/* 这个也是单行注释 */
//System.out.println("Hello world");
Apple apple=new Apple();
apple.size=Apple.AppleSize.MEDUIM;
}

}




Java 空行



空白行,或者有注释的的行,Java编译器都会忽略掉。




继承



在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。



利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。



接口



在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。



接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。



下一节介绍Java编程中的类和对象。之后你将会对Java中的类和对象有更清楚的认识。





(有些基础概念引用:http://www.w3cschool.cc/java/j ... .html) 

二、Java类和对象

PHPLarryHof Published the article • 0 comments • 305 views • 2018-02-13 12:49 • 来自相关话题

Java对象和类

Java作为一种面向对象语言。支持以下基本概念:

多态继承封装抽象类对象实例方法消息解析

本节我们重点研究对象和类的概念。

对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。


简单的实现一个Dog类
class Dog
{
private String name;
private int age;
private String color;

// constructor
public Dog(String name, int age, String color)
{
this.name=name;
this.age=age;
this.color=color;
}

public void breaking()
{
System.out.println("Dog Breaking");
}

public void sleep()
{
System.out.println("Dog Sleeping");
}
}

创建对象(实例化对象)

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。实例化:使用关键字new来创建一个对象。初始化:使用new创建对象时,会调用构造方法初始化对象。
public class Base
{

public static void main(String[] args)
{
// 实例化对象
Dog dog=new Dog("ZJQ", 5, "Black");
dog.breaking();
dog.sleep();
}

}
Console:
Dog Breaking
Dog Sleeping




源文件声明规则

在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

一个源文件中只能有一个public类一个源文件可以有多个非public类源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。如果一个类定义在某个包中,那么package语句应该在源文件的首行。如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。




Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类
import java.io.*; 查看全部



Java对象和类



Java作为一种面向对象语言。支持以下基本概念:



  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 消息解析


本节我们重点研究对象和类的概念。



  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。




简单的实现一个Dog类

class Dog
{
private String name;
private int age;
private String color;

// constructor
public Dog(String name, int age, String color)
{
this.name=name;
this.age=age;
this.color=color;
}

public void breaking()
{
System.out.println("Dog Breaking");
}

public void sleep()
{
System.out.println("Dog Sleeping");
}
}


创建对象(实例化对象)



对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:



  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

public class Base 
{

public static void main(String[] args)
{
// 实例化对象
Dog dog=new Dog("ZJQ", 5, "Black");
dog.breaking();
dog.sleep();
}

}


Console:

Dog Breaking

Dog Sleeping






源文件声明规则



在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。



  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。


类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。



除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。







Java包



包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。



Import语句



在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。



例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类


import java.io.*;