JAVA Review for assessment:
JAVA的基本数据类型:
1.) 四种整数类型( byte, short, int, long) byte:8 位,用于表示最小数据单位,如文件中数据,-128~127 short:16 位,很少用,-32768 ~ 32767 int:32 位、最常用,-231-1~231 (21 亿) long:64 位、次常用 注意事项: int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。 小于 32 位数的变量,都按 int 结果计算。
2.) 两种浮点类型 (float double)
3.) 一种字符类型(char)
4.) 一种布尔类型(Boolean)
note: (一些类型的强转换在java中, complier是会报错的)
.e.g.
class Example3 {
public static void main(String[] args) {
int w; // declare an int variable
double x; // declare a floating-point variable
w = 10; // TEST1 does it matter if we use 11?
x = 10.0; // TEST2 can we use 0.0 or -0.1? System.out.println("Original value of w: " + w); System.out.println("Original value of x: " + x);
System.out.println("Original value of w:" + w);
System.out.println("Original value of x:" + x); // print a blank line then now, divide both by 4 w = w / 4; //TEST3 does it matter if we use 4.0?
x = x / 4.0; //TEST4 does it matter if we use 4.0?
w = w / 4.0;
System.out.println("w after division: " + w); System.out.println("x after division: " + x);
}
}
在这里,跑的时候会出现这样的错误:
举个?方便理解:
将 double 转换为 int ,该值的精度会丢失。
例如,
将4.8657(double)转换为int时.int值为4.Primitive int 不存储十进制数字。所以你将失去0.8657。
2019.5.5
关于 JAVA 键入的几种方法:
今天本来想实现一个关于键入一个数组然后程序会将数组中的最大值返回的program,但是在 键入问题上出了差错,具体的 程序(仍然有问题)和bug如下:
public class Largest{
public int gotU(int[] arr){
int i;
int biggest = 1;
for(i=0;i<=arr.length;i++){
if (arr[i]> biggest){
arr[i] = biggest;
}
}
return biggest;
}
public static void main(String[] args){
Largest largest = new Largest();
java.util.Scanner in = new java.util.Scanner(System.in);
System.out.println("Please input five number");
int i;
int[] num=new int[5];
for(i=0;i<= 5;i++);
{
System.out.print("Please input next one");
num[i]=in.nextInt();
}
int Snow = largest.gotU(num);
System.out.print("The biggest numer in the array is" + Snow);
}
}
上网搜了一下这个bug -> 还没找出来为什么;(Figure it out later)
但这里学会了几种键入数组的方法:
1.)无限制键入数组数量的方法:
// 参考了下面链接博主的例子
// https://blog.youkuaiyun.com/weixin_43157131/article/details/88126490
System.out.println("请输入几个数并用逗号隔开:");
Scanner sc = new Scanner(System.in);
String str = sc.next().toString();
String[] arr = str.split(",");
int[] b = new int[arr.length];
System.out.println(arr); //这行是我+的 出来的结果是 [Ljava.lang.String;@2133c8f8
// -> 要注意解析十进制
for(int j = 0; j<b.length;j++) {
b[j] = Integer.parseInt(arr[j]); //这一步是把字符串参数解析成十进制
System.out.println(b[j]+" ");
}
2.) 有限制键入数组数量的方法:
System.out.println("请输入三个数:");
Scanner in = new Scanner(System.in);
int[] b=new int[3];
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
}
(亲测有用)
同时博主指出了 Scanner类中next() & nextLine()方法的区别:
next()与nextLine()区别很明确,next() 方法遇见第一个有效字符(不是空格和换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,也就是说使用next()方法获得的是不含空格和换行符的单个字符串。
而使用nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。)
Click here if u forget about it:
关于在主函数(static/静态类)的函数里调用非静态函数的方法
再po 一段我自己写的:
public class Max{
public static void main(String[] args){
int[] a = {5,4,10};
int[] b = new int[a.length];
Max max = new Max();
int c = max.selectMax(a);
System.out.println("The biggest number among them is" + c);
}
public int selectMax(int[] a){
int biggest = 0;
for(int i = 0;i<a.length;i++){
if(a[i] > biggest){
biggest = a[i];
}
}
return biggest;
}
}
转载一篇关于Method overloading(方法重载)&Method overwrite(方法重写)的文章,博主写得比较仔细
JAVA 抽象类:
关于抽象类与其子类的继承关系 和 抽象类的定义格式