- 环境配置
我的电脑 -> 属性 -> 高级 -> 环境变量 -> 系统变量
新建:
path -> C:\Program File\[ jdk 版本] \bin
java_home -> C:\Program File\[ jdk 版本]
classpath -> C:\Program File\[ jdk 版本]\lib\tools.jar;C:\Program File\[ jdk 版本]\lib\tr.jar;
配置完成之后,打开cmd窗口,输入java, javac出现信息就配置成功了。
不使用IDE的java文件编译方法:(以类文件为HelloWorld.java为例)
javac -d 目标路径 源文件; 如果存在当前路径,则可以用 ‘ . ’ 来表示
#javac -d . HelloWorld.java
java 类名
#java HelloWorld
- 文档注释
Java提供文档注释功能,在编写java源文件时添加合适的文档注释,通过JDK提供的javadoc工具可以直接将源代码中的注释 提取出来形成一份系统的API文档。
文档注释以 /** 开头,*/ 结尾,以及使用javadoc标记(@sth)来进行注释
package chapter1;
/**
* 本文档用以测试文档注释的用法,查看API文档
* @author daisy_wx
*
*/
public class Notation {
/**
* 简单测试
*/
static protected String name;
static public void main(String args[]){
name = "yaxi";
System.out.println(name+" hello!");
}
}
生成API文档有两种方式:
1. 命令行生成
javadoc 选项 Java源文件/包
2. Eclipse生成
File -> Export -> Java -> javadoc
在Configure中选择jdk中的javadoc的执行程序,选择储存路径,Finish。
在储存的路径下可以看到*.html文件,打开就可以看到刚刚生成的API文档了。API文档在做比较大的项目的时候方便查询函数 和变量。
- 变量声明
Java是Strongly typed 语言,每个变量和表达式在编译的时候都要确定类型,因此所有的变量都是显式声明类型。
- 数组
i. 定义:
type[ ] arrayName
type arrayName[ ]
ii. Java中的数组必须先初始化,即为数组的元素分配内存空间并赋初始值。
赋初始值有两种方式:
1) 静态赋值:arrayName = new type[ ] {element1,element2 , .....}
2) 动态赋值:arrayName = new type[length]
程序员只用指定数组的长度,系统会负责为元素分配初始值。
数组元素的类型为基本类型中的整型(byte,short,int 和 long),数组元素为0
数组元素的类型为基本类型中的浮点类型(float,double),数组元素为0.0
数组元素的类型为基本类型中的字符类型(char),数组元素为'\u0000'
数组元素的类型为基本类型中的布尔类型(boolean),数组元素为false
数组元素的类型为引用类型(类、接口和数组),数组元素为null
iii.堆内存&栈内存
方法执行时,方法会生成内存栈,因此局部变量保存在栈中,随着方法的结束而销毁。
程序中对象保存在内存堆中,不会随着方法的结束而销毁,只有当没有引用变量指向它时可以通过垃圾回收机制释放。
iv. 用二维数组画棋盘
package chapter2;
import java.io.*;
/**
* 简单五子棋应用
* 本文档用以练习对数组的应用
* @author daisy_wx
*
*/
public class Gobang {
//定义二维数组作为五子棋棋盘
private String[][] board;
//定义棋盘的大小
private static int BOARD_SIZE = 15;
public void ininBoard(){
//初始化棋盘数据
board = new String[BOARD_SIZE][BOARD_SIZE];
//把每个元素赋值为"十",用于画出棋盘
for(int i = 0 ; i < BOARD_SIZE ; i++){
for(int j = 0 ; j < BOARD_SIZE ; j++){
board[i][j] = "十";
}
}
//随机产生一个坐标,为机器的初始坐标
int x = (int)Math.random()*BOARD_SIZE;
int y = (int)Math.random()*BOARD_SIZE;
board[x][y] = "●";
}
//控制台输出棋盘
public void printBoard(){
for(int i = 0 ; i < BOARD_SIZE ; ++i){
for(int j = 0; j <BOARD_SIZE ; ++j){
System.out.print(board[i][j]);
}
System.out.println();
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String args[]) throws Exception{
Gobang gb = new Gobang();
gb.ininBoard();
gb.printBoard();
//获取键盘输入的方法
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = null;
//br.readLine:每当键盘上输入一行内容之后按回车键,刚输入的内容被br读取数据
while((inputStr = br.readLine())!=null){
//将用户的输入以逗号隔开,分割成两个字符串
String[] posStrArr = inputStr.split(",");
//将两个数据作为用户下棋的坐标
int xPos = Integer.parseInt(posStrArr[0]);
int yPos = Integer.parseInt(posStrArr[1]);
//将对应的数组元素设为“●”
gb.board[xPos-1][yPos-1] = "●";
/*
* 电脑随机产生两个整数,作为电脑下棋的坐标
* 需要优化的地方:
* 1.坐标的有效性
* 2.不能重复在一个位置下棋
* 3.每次下棋之后扫描谁赢。
*/
gb.printBoard();
System.out.println("请输入您下棋的位置:格式为\"x,y\"");
}
}
}
Thanks to 疯狂Java讲义 @李刚