第二周Java课后实验及实践问题整理

第二周Java课后作业报告

信2205-1班 20223688 孙怡然

一、p38枚举类型

1、代码示例

public class EnumTest {

public static void main(String[] args) {

Size s=Size.SMALL;

Size t=Size.LARGE;

//s和t引用同一个对象?

System.out.println(s==t); //false

//是原始数据类型吗?

System.out.println(s.getClass().isPrimitive());//false

//从字符串中转换

Size u=Size.valueOf("SMALL");//valueof是要把参数中给的值,转化为String类型

System.out.println(s==u); //true

//列出它的所有值

for(Size value:Size.values()){

System.out.println(value);

}

}

}

enum Size{SMALL,MEDIUM,LARGE};

2、运行结果

二、p45动脑动手:了解原码、补码和反码并编写程序进行各种位操作

1、代码示例

public class Demo{

public static void main(String[] args){

int a=3;

int b=4;

System.out.println(a & b); //输出0

System.out.println(a | b); //输出7

System.out.println(a ^ b); //输出7

System.out.println( ~ b ); //输出-5

System.out.println( b << 2 ); //表示b左移2位,输出13

System.out.println( b >> 2 ); //表示b右移2位,输出1

System.out.println( b >>> 2 ); //表示b无符号右移2位,输出1

}

}

2、运行结果

Java中的整数的存储和运算是采用补码形式进行的。

三、p47两数相加

1、代码示例

import javax.swing.JOptionPane; // import class JOptionPane

public class Addition {

public static void main( String args[] )

{

String firstNumber, // first string entered by user

secondNumber; // second string entered by user

int number1, // first number to add

number2, // second number to add

sum; // sum of number1 and number2

// read in first number from user as a string

firstNumber =

JOptionPane.showInputDialog( "Enter first integer" );

// read in second number from user as a string

secondNumber =

JOptionPane.showInputDialog( "Enter second integer" );

// convert numbers from type String to type int

number1 = Integer.parseInt( firstNumber );

number2 = Integer.parseInt( secondNumber );

// add the numbers

sum = number1 + number2;

// display the results

JOptionPane.showMessageDialog(

null, "The sum is " + sum, "Results",

JOptionPane.PLAIN_MESSAGE );

System.exit( 0 ); // terminate the program

}

}

2、运行结果

四、p52变量的作用域

动手动脑:Java变量遵循“同名变量屏蔽原则”,请编写代码在不同地方定义一些同名变量,看看输出的到底是哪个值

1、代码示例

public class VariableScopeExample {

private static int x = 10;

public static void main(String[] args) {

int x = 20;

System.out.println("内部x: " + x); // 输出内部变量x的值,应该是20

}

}

2、运行结果

五、p54在运行时读取用户输入(使用Scanner类)

1、代码示例

import java.util.*;

public class InputTest

{

public static void main(String[] args)

{

Scanner in = new Scanner(System.in);

// get first input

System.out.print("What is your name? ");

String name = in.nextLine();

// get second input

System.out.print("How old are you? ");

int age = in.nextInt();

int i;

String value="100";

i=Integer.parseInt(value);

i=200;

String s=String.valueOf(i);

// display output on console

System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));

}

}

2、运行结果

六、p56 Java中的类型转换

Java中每个数据类型所占的位数和表示数值的范围,能得出什么结论?

java中有8种基本数据类型:byte、int、short、long、boolean、char、float、double

对应的类为:Byte、Int、Short、Long、Boolean、Charecter、Float、Double

逻辑型:boolean

文本型:char

整数型:byte、short、int、long

浮点型:float、double

byte:    1字节 -128~127

short:   2字节 -2^15~2^15-1

int :      4字节 -2^31~2^31-1

long:    8字节 -2^63~2^63-1

boolean:1字节 true false(java中不能以0或非0代替)

float:    4字节 -3.403E38~3.403E38

double:8字节 -1.798E308~- 4.9E324

char:    2字节  ’\u0000‘~‘ ’\uffff ‘(16进制的,换算过来即0~65535)

(1字节等于8位)

结论: 数据类型所占位数越大,数值范围越大,低位数向高类型数据转化时,可能有精度损失,高位数向低位数类型数据转化时,会数据溢出。

七、p58 动手实验

1、代码示例

public class TestDouble {

public static void main(String args[]) {

System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));

System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));

System.out.println("4.015 * 100 = " + (4.015 * 100));

System.out.println("123.3 / 100 = " + (123.3 / 100));

}

}

2、运行结果

使用double类型的数值进行计算,其结果是不精确的

八、p60 为什么double类型的数值进行运算得不到数学上精确的结果?

因为计算机进行的是二进制运算,我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位的,比如1/3),而Double类型的数值只有64bit,后面舍去的位数就一定会带来误差,无法得到“数学上精确”的结果。

九、p61 怎样处理精度损失

1、代码示例

import java.math.BigDecimal;

public class TestBigDecimal

{

public static void main(String[] args)

{

BigDecimal f1 = new BigDecimal("0.05");

BigDecimal f2 = BigDecimal.valueOf(0.01);

BigDecimal f3 = new BigDecimal(0.05);

System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");

System.out.println("0.05 + 0.01 = " + f1.add(f2));

System.out.println("0.05 - 0.01 = " + f1.subtract(f2));

System.out.println("0.05 * 0.01 = " + f1.multiply(f2));

System.out.println("0.05 / 0.01 = " + f1.divide(f2));

System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");

System.out.println("0.05 + 0.01 = " + f3.add(f2));

System.out.println("0.05 - 0.01 = " + f3.subtract(f2));

System.out.println("0.05 * 0.01 = " + f3.multiply(f2));

System.out.println("0.05 / 0.01 = " + f3.divide(f2));

}

}

2、运行示例

十、p64动手动脑

1、代码示例

import java.math.BigDecimal;

public class TestBigDecimal

{

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");

}

}

2、运行结果

“+”符号在第一个语句当中是连接字符串,在第二个语句中是做运算符

posted @   记得关月亮  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示