Java学习到的问题
1、为什么要使用键盘录入数据:
a 为了让程序的数据更符合开发的数据
b 让程序能够更加的灵活一些
2.键盘录入的格式:
a :导包
格式
import java.util.Scanner;
位置:
在class上面.
b :创建键盘录入对象
格式:
Scanner sc = new Scanner(System.in);
c:通过对象获取数据
格式:
int x = sc.nextInt();
3、???
System.out.println("a="+a+",b="+b); //输出a和b的值
g=a/b; //将a除以b的结果放在g中
System.out.println("a/b="+g+"\n"); //输出g的值
3、BufferedReader
System.in的类型可以归结为节点流、字节流、输入流;
InputStreamReader这个对象是处理流,字符流,输入流;
BufferedReader的类型是缓冲处理流、字符流、输入流。
类 InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。如:GBK
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
System.in是个字节流
InputStreamReader是个字符流和字节流之间的转换中介
BufferedReader是个字符流
整体意思就是用InputStreamReader这个中介把System.in这个字节流转换成字符流BufferedReader
这样输入的时候就可以不是一个一个字节读,而是一个一个字符读,再加上是个Buffer,效率会高很多。
InputStream is = System.in;//键盘输入流
InputStreamReader isr = new InputStreamReader(is);//字节流转换为字符流
BufferedReader bufr = new BufferedReader(isr);//把字符流添加到缓冲流
用户通过reader对象的readLine方法来进行读取。
InputStreamReader 就是一个可以从 System.in 里面读取东西的管道
然后BufferedReader 就是比InputStreamReader 更高级的 更粗点的管道 可以嵌套在InputStreamReader的外面 从而实现缓冲功能 并且可以用外层管道的readLine()方法读取一行数据
依次类推 一种低级字节流管道的管道 我们可以在其外面嵌套一个更高级的数据流管道 从而更加方便的读写数据
4、.java与.javax的区别
java和javax都是Java的API包,java为java语言的核心包,javax为java语言的扩展包。
java包是java基础核心类库,也就是Java Development kit ,提供java语言编程核心包,如io、awt、集合库(如Collection、List、Map)等;
javax是java基础上的扩展包,如swing、servlet、jsp、xml等类库。
5、Icon
setIcon(Icon) - 类 javax.swing.AbstractButton 中的方法
设置按钮的默认图标。
setIcon(boolean) - 类 javax.swing.JInternalFrame 中的方法
如果外观支持图标化,则对此内部窗体执行图标化或取消图标化。
setIcon(Icon) - 类 javax.swing.JLabel 中的方法
定义此组件将要显示的图标。
setIcon(Icon) - 类 javax.swing.JOptionPane 中的方法
设置要显示的图标。
setIcon(MutableAttributeSet, Icon) - 类 javax.swing.text.StyleConstants 中的静态方法
设置图标属性。
在API中找到了这五个,但是我们一般用的就是setIcon(Icon),其中Icon类是接口,无法创建实例,所以这里的Icon一般用实现了Icon接口的ImageIcon类来代替。
举个例子:
假如你的同一个目录下有一个1.png的图片,给JLabel设置图标就可以这样:
JLabel label=new JLabel();
ImageIcon icon=new ImageIcon("1.png");
label.setIcon(icon);
6、碰撞检测
// 构造一个新的 Rectangle,其左上角的坐标为 (0,0),其宽度和高度由同名的参数指定。
public Rectangle(int width, int height)
// 构造一个新的 Rectangle,其左上角被指定为 (x,y),其宽度和高度由同名的参数指定。
public Rectangle(int x, int y, int width, int height)
和碰撞检测相关的方法:
// 计算此 Rectangle 与指定 Rectangle 的交集
public Rectangle intersection(Rectangle r)
// 确定此 Rectangle 是否与指定的 Rectangle 相交
public boolean intersects(Rectangle r)