一、Java环境的配置
1.1、JDK的安装
jdk包含了jre
jdk:开发用(javac、java、jps、jstack)
jre:开发程序
程序为什么要先编译?
机器语言-》汇编-》高级语言(c、java、c++)
javac把源程序编译成字节码文件(jvm再去把字节码翻译成机器语言)
1.2、环境的配置
- path:路径(可执行的路径)
path的应用:用annie下载腾讯视频、B站视频等
- classpath:class path(类路径)
需求:用java把学生表导出到Excel
1.下载POI的jar包
下载地址
https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-4.1.2-20200217.zip
2.写java程序
import java.io.FileOutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* Description:
* 作者:gu.weidong(Jack)
* date:2018年9月27日
* ProjectName:ExcelExport
*/
public class WriteExcel {
public static void main(String[] args) throws ParseException {
//创建一个HSSF,对应一个excel
HSSFWorkbook workbook = new HSSFWorkbook();
//在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = workbook.createSheet("学生表");
//在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow row = sheet.createRow((int) 0);
//创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = workbook.createCellStyle();
HSSFCell cell = row.createCell(0);
cell.setCellValue("学号");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("年龄");
cell.setCellStyle(style);
cell = row.createCell(3);
cell.setCellValue("生日");
cell.setCellStyle(style);
//写入实体数据
// List list = DemoDaoImpl.getStudent();
List list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(2);
list.add(2);
list.add(2);
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow((int) i + 1);
// Student stu = (Student) list.get(i);
//创建单元格,并设置值
row.createCell(0).setCellValue(i);
row.createCell(1).setCellValue("Jack");
row.createCell(2).setCellValue(20);
cell = row.createCell(3);
cell.setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
}
//将文件存到指定位置
try {
FileOutputStream fout = new FileOutputStream("E:/学生表.xls");
workbook.write(fout);
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
用java操作Excel(读、写)
rocketmq
java中很多第三方的应用都是以jar包的形式对外发布
spring
springmvc
springboot
springcloud
二、变量、流程控制
2.1、标识符、数据类型
- 基本类型(8种)
整形:
计算机分配内存的最小单位:字节
声明年龄这样的变量 byte age ;节省了3个字节
byte: 8位 -128(2的7次方)~127(2的7次方减一)
short:16位 -32768~32767
int:32位 -2147483648~217483647
long
字符:char
浮点:float、double
布尔:boolean
- 引用类型
类
接口
数组
2.2、 声明变量和赋值
数据类型 变量名称;
int a;
char c;
变量是一个容器(箱子)
byte age=22;
age=23;
2.3、流程控制
-
程序可以做某件事
-
程序在某个条件做某件事
if…else if…else
- 程序在某个条件下做某件事
for:明确循环次数
while:不明确循环次数
2.4、Java程序什么情况下算是结束
main线程结束,意味着jvm的退出
三、方法
3.1、方法的概念和语法
- 什么是方法?
能完成特定功能的代码的集合
- 如何定义方法
返回类型 方法名称(【参数1】,【参数2】......){
方法体
}
方法命名的依据?方法能完成什么功能
int c=abs(-5);
c是5
四、前四章综合案例
- 标识符
- 变量
- 流程控制
- 一维数组
- 二维数组
- 方法
编程的本质;调用方法
4.1、显示hero在屏幕上
- 知识点
声明变量
变量赋值
class MainCanvas extends Canvas
{
Image img;//变量的声明
public MainCanvas(){
try
{
img=Image.createImage("/sayo10.png");//变量赋值
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void paint(Graphics g){
g.setColor(250,200,180);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(img,100,100,0);
}
}
4.2、让hero可以四个方向走动
- 声明hero的x坐标和y坐标
int x,y;
- 给x和y赋初值
x=100;
y=100;
- 把drawImage中的100和100替换为x和y
g.drawImage(img,x,y,0);//第1个100是x坐标,第2个100是y坐标
- 在keyPressed中对x坐标和y坐标进行加减操作
if(action==LEFT){
System.out.println("向左走");
x=x-1;
}
else if(action==RIGHT){
System.out.println("向右走");
x=x+1;
}
else if(action==UP){
System.out.println("向上走");
y=y-1;
}
else if(action==DOWN){
System.out.println("向下走");
y=y+1;
}
repaint();
4.3、让hero自然走动(两个图片来回切换)
- 声明变量
- 流程控制之if…else
思路分析
声明1个变量,我们来回改变该变量的值,不同的值显示不同的图片
例如:int f;
如果f是1,则显示sayo00.png
如果f是2,则显示say020.png
4.4、使用循环和一维数组
Image LeftImg[],downImg[],upImg[],rightImg[];
LeftImg = new Image[3];
downImg = new Image[3];
upImg = new Image[3];
rightImg= new Image[3];
for(int i=0;i<LeftImg.length;i++)
{
leftImg[i]=Image.createImage("/sayo"+i+"0.png");
downImg[i]=Image.createImage("/sayo"+i+"1.png");
upImg[i]=Image.createImage("/sayo"+i+"2.png");
rightImg[i]=Image.createImage("/sayo"+i+"3.png");
}
4.5、使用循环和二维数组
Image heroImg[][];
heroImg = new heroImg[4][3];
for(int i=0;i<heroImg.length;i++)
{
for(int j=0;j<heroImg[j].length;j++)
{
heroImg=Image.createImage("/sayo"+i+j+".png");
}
}
五、递归
5.1、递归的概念
f
5.2、递归出口
- 死循环
public static void m1()
{
m1();
}
- 出口
static int a ;
public static void m1()
{
a++;
if(a>500)
{
return;
}
m1();
}
六、方法的结束
一个方法什么时候才算结束?
return调用就算方法结束了
heroImg=Image.createImage("/sayo"+i+j+".png");
}
}
## 五、递归
### 5.1、递归的概念
f
### 5.2、递归出口
- 死循环
```java
public static void m1()
{
m1();
}
- 出口
static int a ;
public static void m1()
{
a++;
if(a>500)
{
return;
}
m1();
}
六、方法的结束
一个方法什么时候才算结束?
return调用就算方法结束了