Java学习打卡:第十七天
Java养成计划(打卡第17天)
JAVA SE(夯实基础系列----Java初步)
内容管理
今天和大家分享界面编程的一个实例,调用API中的绘图在界面上画出好看的图画,另外再简单介绍一下基础chapter 3的内容,我们之前介绍的是表达式级的数据处理,现在我们分享一下语句级的数据处理。我们先来看看基础部分
语句级处理
语句有很多类别
空语句,表达式语句,块语句,标号语句,断言语句,选择语句,循环语句,跳转语句,同步语句,例外语句
分析一下使用少一些,印象不深刻的
- 空语句: 仅包含分号,不执行任何操作,用于程序中某处有需求但不需数据处理的,下面这种就是直接到达边界
for(int i = 0;i <= 1000;i++);
-
块语句 : 把一组语句用大括号括起来,不需要分号,方法体本身也是一个块语句,还有注意静态代码块
-
标号语句
- <标号>: <语句> 在多重循环跳出时用到,对某重for循环OUT: -----就将该for循环标记
-
断言语句 : assert<布尔表达式>[:<表达式>]; 很少使用,计算结果为true时,程序继续往下执行,否则就会抛出异常 ,但是在默认情况下是不执行的,为使执行,我们使用Dos命令
java -ea MyClass
-
循环、选择语句 :用case运算一年是第几天
多说一点,就是计算机虽然可以高速运算,但是在设计算法时还是要尽可能缩小范围
几个超常用的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); //result is true printf("result is %c",65); //result is A printf("result is %3d",65);//result is 65 printf("result is %6.2f",65.0);//result is 65.00 printf("result is %9.2e",0.0123);//result is 1.23e-02 printf("result is %4s","byte");result is byte
控制台输出
借助java.util中的Scanner类,Scanner是一种文本扫描器,依据分隔符从文本中抽取符号,默认情况下,扫描器将空白符号作为文本的分隔符
使用Graphics API接口绘制图像
这里一定要正确使用方法,要记得重写paint方法才能绘制成功,是以容器当的画板
Graphics g = getGraphics(); //我们采取这种方式获取Graphics对象,更加灵活
//还有一种就是在paint方法,这里是重写的方法,我们在创建之后就可以自动执行这个代码块,但是使用上面的get方法可以就不局限在paint方法里,说来惭愧,想了很久才掌握这点
这里就演示绘制图形
我们先创建一个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{
// private JPanel panel = new JPanel();
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);
}
}
//⚪类
当然我绘制的很简单,实践的时候需要我们 设计好图像再进行绘制,还有就是坐标设置的要合理
今天的分享就到这里,之后会详细分享画图类,今天只是稍微提一下,复习一下界面的知识~