APHAL平台 一二三章

devtools/2024/12/25 13:21:33/

1.类和对象的关系是 抽象和 具体 的关系。类是创建对象的具体,对象是类的实例。

2.Java应用程序的主类必须是public类。

错,文件名是public类如

public class HAPPY{ }

那么文件名为HAPPY.java

3.一个文件可以有多个类,但是值可以有一个public类,public类不一定是主类,主类有main方法

4.

(1)上述源文件的名字应该是( Speak.java )
(2)上述源文件编译后生成( 2 )个字节码文件,这些字节码文件的名字是(Speak.classs )和( Xiti4.class )
(3)使用Java解释器运行该程序的完整命令是( java Xiti4 )

5.

6.下列源文件中,分别由1、2、3、4注释标注的哪行代码有错误?

Public class Example1                               //1
{public static void main(string[ ] args)   //2{System.out.println("ok");                 //3System.out.println("hello");system.out.println("您好");              //4} 
}

Public class Example1                               //1
{
    public static void main(string[ ] args)   //2
     {
          System.out.println("ok");                 //3
          System.out.println("hello");
          system.out.println("您好");              //4
     } 
}

7.枚举类型申明使用的关键字是 enum

7.ava语言有8种基本数据类型,分别是int ,long ,short,float,double,byte,char,boolean

8.Java 标识符的一些重要信息:

1. 命名规则

  • 字符集:标识符可以包含字母(大写和小写)、数字、下划线 _ 和美元符号 $
  • 开头字符:标识符必须以字母、下划线或美元符号开始,不能以数字开头。
  • 大小写敏感:Java 是大小写敏感的,因此 myVariable 和 myvariable 被视为两个不同的标识符。
  • 长度限制:标识符的长度没有限制,但建议保持简洁和可读性。

2. 关键字

  • 标识符不能与 Java 的保留关键字相同。例如,intclasspublic 等都是关键字,不能用作标识符。

3. 常见命名约定

  • 类名:通常使用帕斯卡命名法(PascalCase),例如 MyClass
  • 方法名和变量名:通常使用驼峰命名法(camelCase),例如 myMethod 或 myVariable
  • 常量:通常使用全大写字母和下划线分隔,例如 MAX_VALUE

4. 示例

以下是一些有效和无效的标识符示例:

有效的标识符
int count;           // 有效的变量名
String firstName;   // 有效的变量名
double $price;      // 有效的变量名
char _initial;      // 有效的变量名
无效的标识符
int 1stPlace;       // 开头不能是数字
String class;       // 关键字不能作为标识符
double my-variable; // 使用连字符是不合法的

9.

10.

11.

代码解析:

  1. 数组定义

    static int arr[] = new int[10];
    

    这行代码定义了一个静态的整型数组 arr,它的大小为 10,并且每个元素默认初始化为 0。在 Java 中,整型数组的默认值为 0。因此,数组 arr 的每个元素(arr[0], arr[1], ..., arr[9])的值都是 0

  2. 访问数组元素

    System.out.println(arr[1]);
     

    main 方法中,程序输出数组 arr 的第 1 个索引(即 arr[1])的值。由于数组初始化时每个元素都是 0,所以 arr[1] 的值是 0

12.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同,这种面向对象程序特性称为 方法的重载

13.

privateprotectedpublic 是三种常见的访问修饰符,使用权限:

正确答案:

创建对象时

详细解释:

  1. 类定义时

    • 在类定义时,构造方法并不会被调用。类定义只是描述了类的结构和行为,构造方法只有在创建对象时才会被执行。
  2. 创建对象时

    • 这是构造方法被调用的时机。当我们使用 new 关键字(或在某些语言中是直接创建对象)来实例化一个对象时,构造方法会被自动调用。构造方法用于初始化对象的状态。
  3. 调用对象方法时

    • 调用对象的方法时,构造方法并不会被再次调用。方法的调用是在对象创建后发生的,而构造方法是在对象创建过程中执行的。
  4. 使用对象的变量时

    • 当你访问对象的成员变量时,构造方法也不会被再次调用。构造方法只会在对象创建时执行一次,后续对变量的访问不会再次触发构造方法。

实例方法的调用是通过 对象 来完成的,而不是通过 类名

java">class MyClass {
public:void display() {  // 这是一个实例方法std::cout << "Hello from display!" << std::endl;}
};int main() {MyClass obj;  // 创建对象obj.display();  // 通过对象调用实例方法// 错误的调用方式:// MyClass::display();  // 错误,不能通过类名调用实例方法
}


public +类名

静态类可以直接通过类名调用

public类必须通过创建对象调用

eg: Hello.print();

\

答案:java.lang

解释:

在 Java 中,java.lang 包是一个特殊的包,它由 Java 编译器 自动导入,无需显式地使用 import 语句导入。

java.lang 包包含了许多常用的类和接口,例如:

  • String
  • System
  • Math
  • Thread
  • Object(所有类的根类)

因为这些类在 Java 编程中非常常用,所以它们被自动导入,这样程序员在使用这些类时就不需要写额外的 import 语句。

其他选项:

  • java.applet:这个包包含与 Java 小程序(applet)相关的类,但它需要显式导入。
  • java.awt:这个包包含图形界面(GUI)相关的类,例如 ButtonFrame 等,需要显式导入。
  • java.util:这个包包含了各种工具类(如 ArrayListHashMap 等),也需要显式导入。

因此,正确答案是 java.lang

在给定的代码中,// 1 n = 200; 这一行会有问题,原因是它出现在类体中,并且没有被放入任何方法或构造器内

详细解释:

类的成员变量:

在 Java 中,类的成员变量(例如 int m = 10, n;)是类的一部分,它们通常是在类体中定义的。但是,在类体中只能声明成员变量、构造器、方法和静态块等类体不能直接执行任何代码,即不能在类体中执行像 n = 200; 这样的语句。

为什么会出错?
  • n = 200; 这一行代码,表示对成员变量 n 进行赋值。但是,类体中不能执行代码,除非它是在构造器或方法内部。

  • 该行代码应该放在一个方法或构造器内才能被正确执行。如果把它放在类体中(但不在任何方法或构造器内),它会导致编译错误,因为 Java 不允许在类体的直接位置执行语句。

代码示例:
public class People {int m = 10, n;  // 成员变量声明// 1 n = 200;  // 错误:这行代码直接在类体中执行,应该放入方法或构造器中

    // 正确的做法:
    void someMethod() {
        n = 200;  // 这是合法的,n 被放在方法中执行
    }
}
 

正确的写法:
public class People {int m = 10, n;  // 成员变量声明

    // 构造器:在构造器中也可以执行 n = 200;
    public People() {
        n = 200;  // 合法:这是构造器中的代码,n 的值被赋为 200
    }

    // 方法:在方法内部也可以执行 n = 200;
    void f() {
        n = 200;  // 合法:这是方法内部的代码
    }
}
 

总结:

  • 问题n = 200; 这一行代码不能直接放在类体中。类体只能包含成员变量、构造器、方法等结构,不能执行代码。
  • 解决:这行代码应该放到构造器或方法中。

我们逐条分析你提供的选项,找出哪个叙述是正确的:

1. 源文件可以有2条包语句(package)。

  • 错误。一个源文件只能包含 一个 package 语句。package 语句必须是源文件的 第一条 语句(如果有的话),并且只能有一个 package 声明。多个 package 语句是不允许的。

    所以,这个叙述是 错误的

2. 源文件不可以有多条import语句。

  • 错误。一个源文件 可以 有多条 import 语句。实际上,import 语句是允许有多个的,它们可以用来导入多个不同包中的类。import 语句通常位于 package 语句之后,类定义之前。可以导入同一个包中的多个类,也可以有多个 import 语句导入不同的包。

    所以,这个叙述是 错误的

3. 如果源文件有package语句,该语句也可以是源文件的第2条语句。

  • 错误package 语句必须是源文件的 第一条 语句。如果文件中包含 package 语句,它应该是文件的 第一条,不能放在其他语句之后。即使没有 import 语句,package 语句依然是文件的首行。

    所以,这个叙述是 错误的

4. 类中的类方法(static方法)只能操作类变量(static变量),不可以操作实例变量。

  • 正确static 方法是 类方法,它属于类而不是类的实例。因此,static 方法只能访问类变量(static 变量)和其他 static 方法。它不能直接访问实例变量(非 static 变量)或实例方法,因为这些成员需要通过类的实例来访问。

    如果要在 static 方法中访问实例变量,必须通过类的实例来访问。

    所以,这个叙述是 正确的

  • 1. 成员变量有默认值。

  • 正确。Java 中的成员变量(即类的字段)在没有显式初始化时,会被自动赋予默认值。这些默认值是根据变量的类型来决定的:

    • 数值类型(如 intfloatdoublelong)的默认值为 0
    • 布尔类型boolean)的默认值为 false
    • 引用类型(如 String 或其他对象类型)的默认值为 null

    所以,这个叙述是 正确的

  • 2. this可以出现在static方法中。

  • 错误this 关键字用于引用当前对象的实例变量和实例方法this 只能在实例方法中使用,因为它依赖于类的实例。然而,static 方法是属于类的,而不是某个特定实例,因此无法使用 this 关键字。static 方法在调用时并没有与某个实例关联,因此不能使用 this

    所以,这个叙述是 错误的

  • 3. 类中的实例方法可以用类名调用。

  • 正确。尽管 实例方法(非 static 方法)通常是通过类的实例来调用,但实际上也可以通过类名来调用实例方法。这种做法是合法的,但不推荐,因为它会绕过实例化对象的必要性。例如:

    class MyClass { void myMethod() {
  • System.out.println("Hello, World!");
  • }
  • }
  • public class Test {
  • public static void main(String[] args) {
  • MyClass.myMethod(); // 可以通过类名调用实例方法,尽管通常是通过实例来调用
  • }
  • }
  • 但是这并不符合常规的编码习惯,通常应该通过创建实例来调用实例方法。

    所以,这个叙述是 正确的

  • 4. 局部变量也可以用访问修饰符:public, protected, private修饰。

  • 错误。局部变量是定义在方法、构造器或代码块中的变量。局部变量不能使用访问修饰符(如 public, protected, private)。访问修饰符只能应用于类、字段(成员变量)、方法和构造器。局部变量的作用范围仅限于它们所在的方法或代码块,因此不需要访问修饰符。

    所以,这个叙述是 错误的

  • 总结:

  • 成员变量有默认值。
  • 类中的实例方法可以用类名调用。

java">public class Test {public static void main(String args[]) {Tom cat = new Tom();  // 创建 Tom 类的对象}
}class Tom {// 这是一个普通方法(不是构造函数)void Tom() {System.out.println("ok");}// 这是 Tom 类的构造函数Tom(int m) {System.out.println("你好");}
}

问题分析:

创建对象时回使用对象的构造方法

  1. void Tom() 不是构造函数

    • 在 Java 中,构造函数的名称必须与类名完全相同,而且没有返回类型。你的代码中,void Tom() 看起来像一个普通的方法,而不是构造函数。
    • 正确的构造函数应该是没有返回类型的,且名称必须和类名一致。

    因此,void Tom() 这一行代码定义的是一个普通方法,而不是构造函数。

  2. 构造函数调用

    • 在 main 方法中,你尝试用 new Tom() 来创建一个 Tom 类的对象。但 Tom 类中没有无参构造函数,只有一个有参构造函数 Tom(int m),因此会导致编译错误。
    • 如果你希望创建一个 Tom 对象,并且不传递任何参数,你需要为 Tom 类提供一个无参构造函数。

当手动输入构造方法时,就不会自动生成无参的构造方法

下面是一个有关计算学生本学期各门功课总分和均分,并输出学生信息的程序,请将程序补充完整。

填空题

下面是一个有关计算学生本学期各门功课总分和均分,并输出学生信息的程序,请将程序补充完整。

java">import java.util.Scanner;
public class StudentInfor {public static void main(String[]args) {Student stu=new Student();stu.inputInfo();stu.printInfo();}
}
______(1)______{int number;String name;String course[]={"java","离散数学","大学英语","中国近代史纲要","高数","大学物理"};float score[];float sum=0,ave;public void inputInfo() {Scanner reader=new Scanner(System.in);System.out.println("请进入该同学的基本信息:");System.out.print("学号:");number=reader.nextInt();System.out.print("姓名:");name=reader.next();______(2)______; //score 数组的创建for(int i=0;i<course.length;i++) {System.out.println(course[i]+"成绩:");______(3)______; //score 数组元素的初始化}}public float getSum()  {for(int i=0;i<course.length;i++)______(4)______; return sum;}public float getAve()  {______(5)______;return ave;}public void printInfo() {System.out.println("该同学的基本信息为:");System.out.println("学号:"+number);System.out.println("姓名:"+name);System.out.println("总分:"+getSum());System.out.println("均分:"+getAve());}
}     

1.class Student

2.score=new float[course.length]

3.score[i]=reader.nextFloat()

4.sum+=score[i]

5.ave=sum/course.length

下面是一个有关计算盒子体积的程序,请将程序补充完整。

import ____(1)___; 
public class  MainClass_BoxVolume
{public static void main(String[] args){____(2)___;box.inputInfo();____(3)___;}
}
class Box
{int length;int width;int height;public void inputInfo(){System.out.println("Please input box's length,width,height:");____(4)___;length=sc.nextInt();width=sc.nextInt();height=sc.nextInt();}public void getVolume(){System.out.println("box's volume is:"+length*width*height);}
} 

1.java.util.Scanner

2.Box box=new Box()

3.box.getVolume()

4.Scanner sc=new Scanner(System.in)


http://www.ppmy.cn/devtools/145266.html

相关文章

《Cocos Creator游戏实战》非固定摇杆实现原理

为什么要使用非固定摇杆 许多同学在开发摇杆功能时&#xff0c;会将摇杆固定在屏幕左下某一位置&#xff0c;不会让其随着大拇指触摸点改变&#xff0c;而且玩家只有按在了摇杆上才能移动人物&#xff08;触摸监听事件在摇杆精灵上)。然而&#xff0c;不同玩家的大拇指长度不同…

力扣238. 除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…

YOLOv9-0.1部分代码阅读笔记-dataloaders.py

dataloaders.py utils\dataloaders.py 目录 dataloaders.py 1.所需的库和模块 2.def get_hash(paths): 3.def exif_size(img): 4.def exif_transpose(image): 5.def seed_worker(worker_id): 6.def create_dataloader(path, imgsz, batch_size, stride, single_cl…

Apache RocketMQ 5.1.3安装部署文档

官方文档不好使&#xff0c;可以说是一坨… 关键词&#xff1a;Apache RocketMQ 5.0 JDK 17 废话少说&#xff0c;开整。 1.版本 官网地址&#xff0c;版本如下。 https://rocketmq.apache.org/download2.配置文件 2.1namesrv端口 在ROCKETMQ_HOME/conf下 新增namesrv.pro…

Linux 环境下运行 .NET 8.0 core项目

在 Linux 环境下运行 .NET 8.0 项目&#xff0c;.NET 已支持跨平台运行&#xff0c;以下是完整的步骤&#xff1a; 1. 安装 .NET 8.0 SDK 或运行时 首先需要在 Linux 系统中安装 .NET 8.0 SDK 或运行时。 1.1 添加 Microsoft 包管理源 运行以下命令添加 Microsoft 包管理源并安…

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸&#xff0c;这样可以直接将低分辨率图片输入模型中&#xff0c;解决了输入尺度问题。改变特征维数&#xff0c;使用更小的卷积核和使用更多的映射层。卷积核更小&#xff0c;加入了更多的激活层。共享其中的映射层&…

html固定头和第一列简单例子

<!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>冻结第一行和第一列的表格</titl…

网络协议入门

一、概述 1、模型 为了减少协议设计的复杂性&#xff0c;大多数网络模型均采用分层的方式来组织。每一层都有自己的功能&#xff0c;就像建筑物一样&#xff0c;每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务&#xff0c;本层服务的实现细节对上层屏蔽…