这里是计算机专业大二学生小文,记录一下自己学习java的辛酸过往。
1.判断下列类型转换是否允许,如果允许,求出转换结果,如果不可以,写出 原因。注意查看编译提示错误信息
写了一个很简单的代码来进行转换,emmm其实大体就是看能不能输出,这部分没什么技术含量,但不妨碍我写下来自娱自乐(菜鸡本人)
public class test {
public static void main(String[] args) {
char c='A'; // typeA a=***
int i=(int)c; //typeB b=(typeB)a
System.out.println(b);// TODO Auto-generated method stub
}
}
char c = 'A'; int i = (int)c ;
可以完成转换,’A’被转换成了65
boolean b =false; int i = (int)b;
无法完成转换,出现运行错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot cast from boolean to int
at transform/transform.test.main(test.java:7)
float f = 1000.34f; int i = f;
无法完成转换,出现运行错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from float to int
at transform/transform.test.main(test.java:7)
long l = 100; int i = l;
无法完成转换,出现运行错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from long to int
at transform/transform.test.main(test.java:7)
double d = 1000.34; int i = (int)d;
可以完成转换,1000.34被转换成了1000
int i = 97; char c = (char)i;
可以完成转换,97被转换成了字符’a’
int i = 1000; boolean b = (boolean) i;
无法完成转换,出现错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot cast from int to boolean
at transform/transform.test.main(test.java:7)
2.编写程序查看基本数据类型的取值范围
简单粘个代码:
public class test {
public static void main(String[] args) {
System.out.println("byte:"+Byte.MIN_VALUE+"-"+Byte.MAX_VALUE);
System.out.println("short:"+Short.MIN_VALUE+"-"+Short.MAX_VALUE);
System.out.println("int:"+Integer.MIN_VALUE+"-"+Integer.MAX_VALUE);
System.out.println("long:"+Long.MIN_VALUE+"-"+Long.MAX_VALUE);
System.out.println("float:"+Float.MIN_VALUE+"-"+Float.MAX_VALUE);
System.out.println("double:"+Double.MIN_VALUE+"-"+Double.MAX_VALUE);
// TODO Auto-generated method stub
}
}
运行结果:
学到了两个新方法,此外没什么需要说的(一整个开摆)
3.编写程序,求 10000 以内的完全数。
提示:完全数是所有因子之和(包括 1 但不包括自身) 等于该数自身的数, 如
6 是完全数,因为 6=1*2*3 且 6=1+2+3*
依旧先粘个代码:
public class IsPerfect {
public static void main(String[] args) {
for(int i=1;i<=10000;i++) {
int count=0;
for(int j=1;j<i;j++) {
if(i%j==0) {
count+=j;
}
}
if(i==count) {
System.out.println(i+"是一个完全数\n");
}
}
// TODO Auto-generated method stub
}
}
最开始我把int count=0;这一行代码放在了for循环外边,结果发现一直运行不出来,大约有点运行超时的感觉(迷茫.jpg)
放进for循环里就好了(神奇.gif)
(如果有好心人刷到了指点一下迷津拜托拜托)
放个运行结果:
选做题目:
-
求 16/8 和 16*8 效率最高的算法。
一个小知识:在系统中,运算是以二进制形式进行的。移位运算是最高效率、最节省内存的计算方法
一个数左移(<<)一位相当于将自身乘以2,右移(>>)一位则相当于将自身除以2。
代码:
public class Shift {
public static void main(String[] args) {
int a,b;
a=16>>3;
b=16<<3;
System.out.print("16/8="+a+",16*8="+b);
// TODO Auto-generated method stub
}
}
2、编写程序,生成并输出 10 个 50- 100 之间的随机数。
此题没什么难度,直接上代码。
我是选择了将生成的数据存储在数组里,但题目并没有明确要求,不使用数组也可以直接将生成的随机数输出。
public class RandomTest {
public static void main(String[] args) {
int a[]=new int[10];
for(int i=0;i<10;i++) {
a[i]=(int)(Math.random()*50+50);
System.out.println(a[i]+"\t");
}
// TODO Auto-generated method stub
}
}
运行结果: