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 的保留关键字相同。例如,
int
、class
、public
等都是关键字,不能用作标识符。
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.
代码解析:
-
数组定义:
static int arr[] = new int[10];
这行代码定义了一个静态的整型数组
arr
,它的大小为 10,并且每个元素默认初始化为0
。在 Java 中,整型数组的默认值为0
。因此,数组arr
的每个元素(arr[0]
,arr[1]
, ...,arr[9]
)的值都是0
。 -
访问数组元素:
System.out.println(arr[1]);
在
main
方法中,程序输出数组arr
的第 1 个索引(即arr[1]
)的值。由于数组初始化时每个元素都是0
,所以arr[1]
的值是0
。
12.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同,这种面向对象程序特性称为 方法的重载
13.
private
、protected
和 public
是三种常见的访问修饰符,使用权限:
正确答案:
创建对象时
详细解释:
-
类定义时:
- 在类定义时,构造方法并不会被调用。类定义只是描述了类的结构和行为,构造方法只有在创建对象时才会被执行。
-
创建对象时:
- 这是构造方法被调用的时机。当我们使用
new
关键字(或在某些语言中是直接创建对象)来实例化一个对象时,构造方法会被自动调用。构造方法用于初始化对象的状态。
- 这是构造方法被调用的时机。当我们使用
-
调用对象方法时:
- 调用对象的方法时,构造方法并不会被再次调用。方法的调用是在对象创建后发生的,而构造方法是在对象创建过程中执行的。
-
使用对象的变量时:
- 当你访问对象的成员变量时,构造方法也不会被再次调用。构造方法只会在对象创建时执行一次,后续对变量的访问不会再次触发构造方法。
实例方法的调用是通过 对象 来完成的,而不是通过 类名
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)相关的类,例如Button
、Frame
等,需要显式导入。java.util
:这个包包含了各种工具类(如ArrayList
、HashMap
等),也需要显式导入。
因此,正确答案是 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 中的成员变量(即类的字段)在没有显式初始化时,会被自动赋予默认值。这些默认值是根据变量的类型来决定的:
- 数值类型(如
int
,float
,double
,long
)的默认值为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("你好");}
}
问题分析:
创建对象时回使用对象的构造方法
-
void Tom()
不是构造函数:- 在 Java 中,构造函数的名称必须与类名完全相同,而且没有返回类型。你的代码中,
void Tom()
看起来像一个普通的方法,而不是构造函数。 - 正确的构造函数应该是没有返回类型的,且名称必须和类名一致。
因此,
void Tom()
这一行代码定义的是一个普通方法,而不是构造函数。 - 在 Java 中,构造函数的名称必须与类名完全相同,而且没有返回类型。你的代码中,
-
构造函数调用:
- 在
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)