第一章 初识Java
说出计算机语言为什么按照第一代、第二代、第三代发展?
- 计算机语言从刚开始的机器语言发展到汇编语言再演变到现在的高级语言,究其原因是人们想用人类的思维方式去和计算机交流
Java有什么核心优势让其流行?
Java的三个版本是什么?
- JavaSE
- JavaMe
- JavaEE
Java是哪个公司发明的? 现在这家公司处境如何? 为什么?
- sun公司发明,现在被oracle公司收购了,为什么?oracle的发展战略
Java的跨平台是通过什么实现的?
- Java虚拟机
Java语言释型还是编译型?还是两者都是?
- 编译型
JDK、JRE、JVM的全称是?
- JDK (Java Development Kit)
- JRE (Java Runtime Environment)
- JVM (Java Virtual Machine)
JDK包含JRE,这句话对吗?
- 对, JDK = JRE+Java开发工具集
熟悉DOS命令行方式的常用命令:
- A:d: 回车 盘符切换
- B:dir(directory):列出当前目录下的文件以及文件夹
- C:cd (change directory)改变指定目录(进入指定目录)
- D:cd.. : 退回到上一级目录
- E:cd: 退回到根目录
- F:cls : (clear screen)清屏
- md (make directory) : 创建目录
- rd (remove directory): 删除目录
- del (delete): 删除文件,删除一堆后缀名一样的文件*.txt
- notepad 创建文件
- 删除带内容的文件夹
- rd + /s文件夹名称(询问是否删除)
- rd + /q + /s 文件夹名称(直接删除)
DOS下,自动补齐命令的键是哪个?DOS下,想查找以前执行的命令用哪个键?
- Tab
- 向上箭头
DOS下,dir命令表示什么含义? cd 表示什么含义?
- dir(directory)列出当前目录下的文件以及文件夹
- cd (change directory)改变指定目录(进入指定目录
为什么采用JAVA_HOME的方式配置环境变量较好?
public class 的类名必须跟文件名保持一致吗?
- 必须一致
编程风格一定要:成对编程和缩进。用文字或代码说明如何实现成对编程和缩进。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
16 . System.out.println(“hi”); —-这句代码能否顺利执行?
- 若程序完整则可以
17 . 一个Java源文件可以写多个class吗?编译后,会不会生成多个class文件?
* 可以,但只能有一个public class, 会产生多个class
18 . 编程时,为什么需要注释?注释的类型
- 注释是为了更好的维护代码
- 注释的类型
// 单行注释
/*
* 多行注释
*/
/**
* 文档注释
*/
19 . 多行注释能不能嵌套使用?
- 不能
阶段项目课程
20 . 【项目】台球游戏小项目
项目需求:
桌球在球桌中按照一定线路和角度移动;遇到边框会自动弹回
package com.weng.main;
import com.weng.ui.JFrameGame;
/**
*
* @ClassName Main
* @Description 程序入口
* @author apple
* @Date 2017年8月17日 下午7:55:35
* @version 1.0.0
*/
public class Main {
public static void main(String[] args) {
new JFrameGame();
}
}
package com.weng.ui;
import java.awt.Toolkit;
import javax.swing.JFrame;
/**
*
* @ClassName JFrameGame
* @Description 游戏窗体
* @author apple
* @Date 2017年8月17日 下午7:44:16
* @version 1.0.0
*/
public class JFrameGame extends JFrame {
private static final long serialVersionUID = 1L;
public JFrameGame() {
/**
* 初始化窗体
*/
this.init();
}
/**
*
* @Description 初始化窗体
*/
private void init() {
// 1.设置窗体标题
this.setTitle("桌球运动");
// 2.设置窗体大小
this.setSize(800, 600);
// 3.设置窗体关闭方式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 4.静止用户缩放窗体
this.setResizable(false);
// 5.窗体居中
// 5.1 获取屏幕的高
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 5.2 获取屏幕的宽
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 5.3 计算窗体的坐标
int x = (width - this.getSize().width) >> 1;
int y = (height - this.getSize().height) >> 1;
// 5.4 设置坐标
this.setLocation(x, y);
// 6. 设置窗体
this.add(new JPanelGame());
// 7. 设置窗体默认可见
this.setVisible(true);
}
}
package com.weng.ui;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
/**
*
* @ClassName JPanelGame
* @Description 游戏面板
* @author apple
* @Date 2017年8月17日 下午7:42:29
* @version 1.0.0
*/
public class JPanelGame extends JPanel {
private static final long serialVersionUID = 1L;
/**
* @Description 球桌图片
*/
private static final Image IMG_TABLE;
/**
* @Description 球图片
*/
private static final Image IMG_BALL;
static {
// 初始化球桌图片
IMG_TABLE = new ImageIcon("resources/table.png").getImage();
// 初始化球图片
IMG_BALL = new ImageIcon("resources/ball.png").getImage();
}
/**
* @Description 球的x坐标
*/
private int x = 400;
/**
* @Description 球的y坐标
*/
private int y = 300;
/**
* @Description 球的速度
*/
private int speed = 3;
/**
* @Description 球运动的角度
*/
private double degree = Math.PI / 3;
/**
* @Description 小球运动线程
*/
private Thread ballRunThread;
public JPanelGame() {
ballRunThread = new Thread() {
@Override
public void run() {
while(true) {
try {
sleep(1000/60);
// 小球运动
ballRun();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
ballRunThread.start();
}
/**
* @Description 小球运动
*/
protected void ballRun() {
x += (int) (speed*Math.cos(degree));
y += (int) (speed*Math.sin(degree));
// 球到达右边界
if (x > 800 - 60) {
degree = Math.PI -degree;
}
// 球到达左边界
if (x < 60) {
degree = Math.PI -degree;
}
// 球到达下边界
if (y > 600 -60) {
degree = -degree;
}
// 球到达上边界
if (y < 60) {
degree = -degree;
}
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制球桌
g.drawImage(IMG_TABLE, 0, 0, 800, 600, null);
// 绘制球
g.drawImage(IMG_BALL, x, y, null);
}
}
项目GitHub地址https://github.com/cccoing/Ball