以下为本人做的OJ题解
如有不足之处,欢迎大家评论指正。如看过后还有不明白的地方,或有更好的解题方法,欢迎大家在评论区留言讨论。
作者:HEAN

1.2 编程基础之变量定义、赋值及转换

1.2.1 整型数据类型存储空间大小

01整型数据类型存储空间大小

Integer.SIZE 和 Short.SIZE 分别表示 int 和 short 类型的位数,由于 1 字节等于 8 位,所以将位数除以 8 即可得到存储空间大小(单位:字节)。 

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        int intVar;
        short shortVar;

        System.out.println( (Integer.SIZE / 8) + " " + (Short.SIZE / 8));
        
    }
}

 1.2.2 浮点型数据类型存储空间大小

02浮点型数据类型存储空间大小

Float.SIZE 和 Double.SIZE 分别表示 float 和 double 类型的位数,由于 1 字节等于 8 位,所以将位数除以 8 即可得到存储空间大小(单位:字节)。 

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        float floatVar;
        double doubleVar;
        System.out.println((Float.SIZE/8) + " " + (Double.SIZE/8));
        
    }
}

1.2.3 其他基本数据类型存储空间大小

03其他基本数据类型存储空间大小

Byte.SIZE 和 Character.SIZE 分别表示 boolean 和 char 类型的位数,由于 1 字节等于 8 位,所以将位数除以 8 即可得到存储空间大小(单位:字节)。

char类型在C或C++中占1个字节,在java中占2个字节。本题char还需再除以2

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        boole booleVar;
        char charVar;
        System.out.println(D + " " + C);
        
    }
}

1.2.4 填空:类型转换1

04填空:类型转换1
a = 32768;
b = a;
printf("%d %d\n", a, b);

32768和-32768

在Java中,不同的数据类型有不同的表示范围。以下是Java中主要数据类型的表示范围:
        byte:-128 到 127(8 位,有符号)
        short:-32768 到 32767(16 位,有符号)
        int:-2147483648 到 2147483647(32 位,有符号)
        long:-9223372036854775808 到 9223372036854775807(64 位,有符号)
        float:大约 ±3.40282347E+38F(32 位,IEEE 754)
        double:大约 ±1.79769313486231570E+308(64 位,IEEE 754)
        char:'\u0000' 到 '\uffff'(16 位,Unicode)
        boolean:true 或 false
这些范围是由数据类型的位数和它们的编码方式(如有符号或无符号)决定的。例如,byte 是 8 位有符号整数,所以它的范围是从 -128 到 127。而 float 和 double 是浮点数,它们的范围是由 IEEE 754 标准定义的。 

        结合上述知识,输出答案

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("D" + " " + "C");
    }
}

1.2.5 填空:类型转换2

05填空:类型转换2
a = 1.000000001;
b = a;
printf("%.9f %.9f\n", a, b);

输出两个数:1.000000001 1.000000000

能用%f输出,表示a,b都是浮点型

在Java中,浮点型数据类型(float和double)的表示精度是由其位数决定的。float类型是32位,而double类型是64位。这意味着double类型可以表示的数值范围比float类型更广,并且具有更高的精度。
具体来说,float类型可以表示大约6到7位十进制有效数字,而double类型可以表示大约15到16位十进制有效数字。这是因为float类型使用23位来存储小数部分,而double类型使用52位来存储小数部分。
在实际应用中,如果需要处理非常大或非常小的数值,或者需要更高的精度,那么应该使用double类型。如果你对精度要求不高,或者需要节省内存空间,那么可以使用float类型。

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("F" + " " + "E");
    }
}

1.2.6 浮点数向零舍入

06浮点数向零舍入

 (int) num 将 float 类型的 num 强制转换为 int 类型,这样会直接截断小数部分,实现向零舍入的效果。

import java.util.Scanner;

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        float num = new Scanner(System.in).nextFloat();
        int roundedNum = (int) num;
        System.out.println(roundedNum);
    }
}

1.2.7 打印ASCII码

07打印ASCII码

scanner.next().charAt(0) 用于读取输入的第一个字符,然后将其转换为整数类型,即得到该字符的ASCII码

import java.util.Scanner;

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char ch = scanner.next().charAt(0);
        System.out.println((int) ch);
        scanner.close();
    }
}

1.2.8 打印字符

08打印字符

(char) asciiCode 将整数类型的 asciiCode 强制转换为字符类型,这样就可以得到该ASCII码对应的字符


import java.util.Scanner;

/**
 * @author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int asciiCode = scanner.nextInt();
        char ch = (char) asciiCode;
        System.out.println(ch);
        scanner.close();
    }
}

1.2.9 整型与布尔型的转换

09整型与布尔型的转换

在Java中,将一个整型变量的值赋给一个布尔型变量是不合法的,因为布尔型(boolean)只能存储true或false,而整型(int)可以存储更大范围的值。如果你尝试这样做,编译器会报错。
如果你想要将一个布尔型变量的值赋给一个整型变量,那么你需要进行类型转换。在Java中,布尔型转换为整型时,true会被转换为1,false会被转换为0。

本题使用c++解题

#include <bits/stdc++.h>
using namespace std;
int main()
{
    bool a;
    int b;
    cin>>b;
    a = b;
    b = a;
    cout<<b;
    return 0;
}

运用 布尔型和整型的转化规则 使用java语言解题:

但是提交会报运行时错误

import java.util.Scanner;

/**
 * author HEAN
 * time 2024/10/16
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println(a!= 0? 1 : 0);
        scanner.close();
    }
}

1.2.10 Hello, World!的大小

10Hello, World!的大小

 在Java中,字符串(如"Hello, World!")实际上是一个对象,而不是基本数据类型。因此,使用sizeof函数(在C++中用于确定数据类型大小的运算符)在Java中是不适用的。
如果想知道字符串对象在Java中占用的内存大小,你可以使java.lang.instrument.Instrumentation接口,但是这需要在运行时使用Java代理来实现,这超出了本章的范围。
只是需要获取字符串对象的引用大小(即,引用变量本身的大小,而不是字符串内容的大小),那么在Java中,对象引用的大小是固定的,通常是4字节(32位系统)或8字节(64位系统),这取决于JVM的实现。如果需要获取字符串内容的大小(即,字符的数量),你可以使String.length()方法。

c++中可以使用sizeof来解答本题:sizeof可以求某常量、变量或类型占用的内存空间,单位是字节,也可以求某数组所占用的内存空间字节数

#include <bits/stdc++.h>
using namespace std;
int main()
{
	cout<<sizeof("Hello, World!");
	return 0;
}

变量定义、赋值与转换

在Java中,变量定义、赋值及转换是编程的基础。
        变量定义:

                在Java中,变量定义需要指定变量的类型和名称。例如:
                int age;
        变量赋值:

                 定义变量后,可以给变量赋值。例如:
                age = 25;
        变量转换:        

                Java中的变量转换可以分为自动类型转换和强制类型转换。
                        自动类型转换:当较小类型的数据转换为较大类型时,会自动进行。例如:
                                int num = 10;
                                double decimal = num; // 自动转换为double类型
                        强制类型转换:当需要将较大类型的数据转换为较小类型时,需要进行强制类型转换。例如:
                        double decimal = 10.5;
                        int num = (int) decimal; // 强制转换为int类型

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐