java动手动脑
2020年9月29日:
动手动脑第一项:
public class 枚举类
{
public static void main(String[] args)
{
Size s=Size.SMALL;
Size t=Size.LARGE;
System.out.println(s==t);
System.out.println(s.getClass().isPrimitive());
Size u=Size.valueOf("SMALL");
System.out.println(s==u);
for(Size value:Size.values())
{
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
结论:枚举类中定义的是一些确定的常量,并且可以直接使用枚举类型或者对枚举类型赋值,这两种的含义是一样的。
动手动脑第二项:
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
反码:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
补码:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1
实例:+7 原码:0 0000111 反码:0 0000111 补码:0 0000111
-7 原码:1 0000111 反码:1 1111000 补码:1 1111001
动手动脑第三项:
public class 枚举类{
private static int Albert = 1;
public static void main(String[] args) {
int Albert = 2;
System.out.println(Albert);
}
}
动手动脑第四项:
byte 1字节 数值范围: -128 ~ 127 short 2字节 数值范围:32768 ~ 32767 int 4字节 数值范围: -2147483648 ~ 2147483647 long 8字节 数值范围: -2^63 ~ 2^63-1 char 2字节 float4字节 double 8字节
从这张图中可以看出以下结论:
byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升,同时,byte当然可以直接提升到short型。
当对小于int的数据类型(byte, char, short)进行运算时,首先会把这些类型的变量值强制转为int类型进行计算,最后会得到int类型的值。
动手动脑第五项:
public class 枚举类
{
public static void main(String[] args)
{
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
}
}
第一个因为字符串在前面,而加号把X和Y连接在一起了所以就输出了100200;
第二个因为字符串在后面,而前面的X+Y就是数学上的加法。所以答案是300。
课后实验题:
public class 数学
{
public static int i;
public static int n;
public static int j;
public static int k;
public static int t;
public static char o;
public static char y;
static Random a=new Random();
public static List list;
public static String shuzu[];
public static void main(String[] args)
{
int l=0;
Scanner scan=new Scanner(System.in);
System.out.println("请输入题的数量:");
System.out.println("请输入数值范围:");
System.out.println("请输入操作数个数:");
System.out.println("请选择是否需要乘除法(Y or N):");
System.out.println("请选择是否需要括号(Y or N):");
t=scan.nextInt();
n=scan.nextInt();
j=scan.nextInt();
o=scan.next().charAt(0);
y=scan.next().charAt(0);
shuzu=new String[t];
for(int p=1;p<=t;p++)
{
list=new ArrayList();
System.out.print("第"+p+"题: ");
shu();
shuzu[p-1]=" ";
for(int u=0;u<list.size();u++)
{
shuzu[p-1]=shuzu[p-1]+list.get(u);
}
chachong(shuzu[p-1],p);
System.out.println(shuzu[p-1]);
}
}
public static void chachong(String str,int p)
{
boolean is=false;
while(is)
{
for(int s=0;s<p-1;s++)
{
if(str.equals(shuzu[s]))
{
shu();
}
else
k++;
}
if(k==p-1)
{
is=true;
}
}
}
public static void shu()
{
for(int i=0;i<2*j-1;i++)
{
int b=a.nextInt(n)+1;
if((i+1)%2!=0)
{
list.add(b);
}
else
{
int c=a.nextInt(4)+1;
if(o=='N')
{
if(c==3||c==4)
{
c=a.nextInt(2)+1;
}
}
switch(c)
{
case 1:list.add('+');break;
case 2:list.add('-');break;
case 3:list.add('*');break;
case 4:list.add('%');break;
}
}
}
if(y=='Y')
{
int v=a.nextInt(2*j-3);
int g=a.nextInt(2*j+1);
if((v%2==0&&g%2==0)&&(g-v>=4))
{
list.add(v,'(');
list.add(g,')');
}
}
}
}