《Java程序设计基础》第6章习题

6.1 类与对象的区别是什么?
类是对某一类事物的描述,是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体个体,因而也称为实例。类是对象的模板、图纸,而对象则是类的一个实例,是实实在在的个体,一个类可以对应多个对象。
6.2 如何定义一个类?类的结构是怎样的?
由于类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类实际上就是定义类的属性与方法。
类的一般语法结构如下:
[类修饰符] class类名称
{
[修饰符] 数据类型 成员变量名称;
……
[修饰符] 返回值的数据类型 方法名(参数1,……,参数n)
{
语句序列;
return[表达式];
}
……
}
6.3 定义一个类时所使用的修饰符有哪几个?每个修饰符的作用是什么?是否可以混用?
类的修饰符:
① public:将一个类声明为公共类,它可以被任何对象访问。
② abstract:将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例。
③ final:将一个类声明为最终类即非继承类,表示它不能被其它类所继承。
④ 缺省:缺省修饰符时,则表示只有在相同包中的对象才能使用这样的类。

一个类可以有多个修饰符,且无先后顺序之分,但abstract和final相互对立,所以不能同时应用在一个类的定义中。
6.4 成员变量的修饰符有哪些?各修饰符的功能是什么?是否可以混用?
成员变量的修饰符:
① public:公共访问控制符。指定该变量为公共的,它可以被任何对象的方法访问。
② private:私有访问控制符。指定该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此变量。
③ protected:保护访问控制符。指定该变量只可以被它自己的类及其子类或同一包的其他类访问,在子类中可以覆盖此变量。
④ 缺省:缺省访问控制符时,则表示在同一个包中的类可以访问此成员变量,而其他包中的类不能访问该成员变量。
⑤ final:最终修饰符。指定此变量的值不能改变。
⑥ static:静态修饰符。指定该变量被所有对象共享,即所有实例都可使用该变量。
⑦ transient:过渡修饰符。指定该变量是一个系统保留、暂无特别作用的临时性变量。
⑧ volatile:易失修饰符。指定该变量可以同时被几个线程控制和修改。

除了访问控制修饰符有多个之外,其他的修饰符都只有一个。一个成员变量可以被两个以上的修饰符同时修饰,但有些修饰符是不能同时定义在一起的。
6.5 成员方法的修饰符有哪些?各修饰符的功能是什么?是否可以混用?
成员方法的修饰符:
① Public:公共访问修饰符。指定该方法为公共的,它可以别任何对象的方法访问。
② Private:私有访问控制符。指定该方法只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此方法。
③ Protected:保护访问控制符。指定该方法只可以被它的类及其子类或同一包中的其他类访问。
④ 缺省:缺省访问控制符时,表示在同一个包中的类可以访问此成员方法,而其他包中的类不能访问该成员方法。
⑤ Final:最终修饰符。指定该方法不能被覆盖。
⑥ Static:静态修饰符。指定不需要实例化一个对象就可以调用的方法。
⑦ Abstract:抽象修饰符。指定该方法只声明方法头,没有方法体,抽象方法需在子类中被实现。
⑧ Synchronized:同步修饰符。在多线程程序中,该修饰符用于对同步资源加锁,以防止其他线程访问,运行结束后解锁。
⑨ Native:本地修饰符。指定此方法的方法体是用其他语言(如C语言)在程序外部编写的。

成员方法同样有多个控制修饰符,当用两个以上的修饰符来修饰同一个方法时,需要注意,有的修饰符之间是互斥的,所以不能同时使用。
6.6 成员变量与局部变量的区别有哪些?
成员变量与局部变量的区别:
① 从语法形式上看,成员变量属于类,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public、private、static等修饰符所修饰,而局部变量则不能被访问控制修饰符及static所修饰;成员变量和局部变量都可以被final所修饰。
② 从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存在于栈内存的。
③ 从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。
④ 成员变量如果没有被赋初值,则会自动以类型的默认值赋值(有一种情况例外,被final修饰但没有被static修饰的成员变量必须显式地赋值);而局部变量则不会自动赋值,必须显式地赋值后才能使用。

6.7 创建一个对象使用什么运算符?对象实体与对象引用有何不同?
使用new运算符创建新的对象。
对象实体是通过new运算符在堆内存中创建的一个类的实例对象。
对象引用是以类名作为变量的类型在栈内存中定义的一个变量,此变量只是对象的名称,指向对象实体,而非对象本身。
一个对象引用可以指向0个或者1个对象实体,一个对象实体可以有多个对象引用,引用就相当于实体的别名。对象实体存放的是对象,而对象引用存放的是对象的首地址。
6.8对象的成员如何表示?
通过对象来引用对象成员的格式为:对象名 . 对象成员。
6.9在成员变量或成员方法前加上关键字this表示什么含义?
如果要强调是对象本身的成员的话(在类的定义内调用本类的其他成员),可以在成员名前加this关键字,此时this代表调用此成员的对象。
6.10什么是方法的返回值?返回值在类的方法里的作用是什么?
方法的返回值是方法体中的代码执行后产生的结果,即return后的表达式的结果。返回值可以接收出方法的结果,使得它可以用于其他的操作。
6.11在方法调用中,使用对象作为参数进行传递时,是“传值”还是“传址”?对象作参数起到什么作用?
是“传值”,只不过传的是对象的引用的值(副本),是个地址值。对象作参数可以通过方法改变对象的值。
6.12什么叫匿名对象?一般在什么情况下使用匿名对象?
当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象称为匿名对象。

使用匿名对象通常有如下两种情况:
① 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
② 将匿名对象作为实参传递给一个方法调用。
6.13以m行n列二维数组为参数进行方法调用,分别计算二维数组各列元素之和,返回并输出所计算的结果。

import java.util.*;
public class SumOfEveryColumn
{
     public static void main(String[] args)
	 { 
	        
	       int m,n;
		   int[][] arr;
	       Scanner reader = new Scanner(System.in);
           System.out.print("请分别输入二维数组的行和列,用空格隔开:"); 
		   m=reader.nextInt();
		   n=reader.nextInt();
		   arr=new int[m][n];
           System.out.println("请输入"+m+"*"+n+"二维数据: ");
		   int i,j;
		   for(i=0; i<m; i++)
			for(j=0; j<n; j++)
				arr[i][j]=reader.nextInt(); 
           int[] colSum=new int[n];
		   for(j=0; j<n; j++)
		  { 
	          //colSum[j]=0
			  for(i=0; i<m; i++)
				 colSum[j]+=arr[i][j];
			 System.out.println("第"+(j+1)+"列的和为"+colSum[j]);
		  }
	 }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值