Java学习打卡:第十七天
Java养成计划(打卡第17天)
JAVA SE(夯实基础系列----Java初步)
内容管理
今天和大家分享界面编程的一个实例,调用API中的绘图在界面上画出好看的图画,另外再简单介绍一下基础chapter 3的内容,我们之前介绍的是表达式级的数据处理,现在我们分享一下语句级的数据处理。我们先来看看基础部分
语句级处理
语句有很多类别 空语句,表达式语句,块语句,标号语句,断言语句,选择语句,循环语句,跳转语句,同步语句,例外语句
分析一下使用少一些,印象不深刻的
- 空语句: 仅包含分号,不执行任何操作,用于程序中某处有需求但不需数据处理的,下面这种就是直接到达边界
for(int i = 0;i <= 1000;i++);
多说一点,就是计算机虽然可以高速运算,但是在设计算法时还是要尽可能缩小范围
几个超常用的API的介绍
Math类
-
Math类解决了我们常见的数学运算,减少了部分代码,另外类中还定义了两个double变量:PI(圆周率)和 E (自然) -
该类为final类,就是不可以继承,并且该类的方法都是static,不需要创建实例 -
该类包含的方法有abs max min random ceil(上取整) floor(下取整) round(最接近) exp pow log(自然对数)sin cos tan toDegrees(弧度到角度)toRadians(角度到弧度) 只是注意sin cos tan 返回的是弧度 ####System -
该类也是final类,不能继承,其中包括final静态量InputStream in 标准输入流,PintStream out标准输出流,PrinrtStream err 标准错误输出流 -
还有几个set方法用于重新设置字节流,exit方法用于终止JAVA虚拟机,可以打破finally的强制执行,,设置key关键字系统属性 -
currentTimeMillis 可以返回当前时间,自UTC1970年1月1日到现在的毫秒数 -
格式化输出:和C语言一样可以标准输出,这里的%5d中的5就是输出5字段宽度,不足就补0,超出输出原数 printf("result is %5b",true);
printf("result is %c",65);
printf("result is %3d",65);
printf("result is %6.2f",65.0);
printf("result is %9.2e",0.0123);
printf("result is %4s","byte");result is byte
控制台输出 借助java.util中的Scanner类,Scanner是一种文本扫描器,依据分隔符从文本中抽取符号,默认情况下,扫描器将空白符号作为文本的分隔符
使用Graphics API接口绘制图像
这里一定要正确使用方法,要记得重写paint方法才能绘制成功,是以容器当的画板
Graphics g = getGraphics();
这里就演示绘制图形
我们先创建一个shape抽象类表示所有的图形,里面有个抽象方法draw,用具体的实现类如Circle等继承,这里我们采取定义画笔的方式绘制图像
package SecondChapter;
public class Mypic {
public static void main(String[] args) {
Picture pic = new Picture(400,300);
Circle c1 = new Circle(20,108, 23);
Retangle r1 = new Retangle(100, 109, 28, 28);
pic.add(c1);
pic.add(r1);
}
package SecondChapter;
import java.awt.*;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Picture extends JFrame{
Graphics g;
public Picture(int x,int y) {
super();
this.setSize(x, y);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public void add(Shape s)
{
g = getGraphics();
g.drawImage(getIconImage(), EXIT_ON_CLOSE, ABORT, getForeground(), null);
s.draw(g);
}
public void draw()
{
}
}
package SecondChapter;
import java.awt.Graphics;
public abstract class Shape {
public abstract void draw(Graphics g);
}
package SecondChapter;
import java.awt.Color;
import java.awt.Graphics;
public class Retangle extends Shape{
private int x;
private int y;
private int height;
private int width;
public Retangle(int x, int y, int height, int width) {
super();
this.x = x;
this.y = y;
this.height = height;
this.width = width;
}
@Override
public void draw(Graphics g) {
g.setColor(Color.gray);
g.drawRect(x, y, width, height);
}
}
package SecondChapter;
import java.awt.Color;
import java.awt.Graphics;
public class Circle extends Shape{
private int x;
private int y;
private int radius;
public Circle(int x, int y, int radius) {
super();
this.x = x;
this.y = y;
this.radius = radius;
}
@Override
public void draw(Graphics g) {
g.setColor(Color.blue);
g.drawOval(x, y,radius*2,radius*2);
}
}
当然我绘制的很简单,实践的时候需要我们 设计好图像再进行绘制,还有就是坐标设置的要合理
今天的分享就到这里,之后会详细分享画图类,今天只是稍微提一下,复习一下界面的知识~
|