JAVA程序设计实用教程 第二章 习题2

2-1  什么是标识符?标识符与关键字在定义和使用方面有何区别?为什么算法语言需要标识符?

标识符是用户定义的单词,用于命名变量,常量,类,对象,方法等。

关键字是由java语言定义的,具有特定含义的单词。(所有字母都为小写)

标识符命名规则:以字母开头的字母数字序列,数字包括0 - 9,字母包括大小写英文字母,下划线(_)和美元符($)。区分字母大小写,不能使用关键字,长度不受限制。

在这里插入图片描述

 

注意:开头的字母也包括(_)与($)

例如:i,x1,x_2,sum都是标识符

1x(必须以字母开头),x+y(“+”号不符合规则),R[1](“[”与“]”不符合规则),k*(“*”号不符合规则)不是标识符

2-2  java语言的基本数据类型有哪些?引用数据类型有哪些?p26

基本数据类型:整数类型:byte,short,int,long,浮点数类型:float,double,字符类型:char,布尔类型:boolean。

引用数据类型:数组(array),类(class),接口(interface)

2-3  short和char的取值范围有何不同?

short类型的取值范围是-32768~32767,是有符号数,首位为符号位,首位为1时,此整数位负数。
char类型的取值范围是0~65535 ,是无符号数,首位无论是0或1,代表的都是正数。

2-4  为什么需要常量或变量?声明常量或变量时,为什么必须给出其所属的数据类型?

在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语
言都提供常量和变量来存储数据。
为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它
们参加的合法运算和操作。

2-5  什么是变量的作用域?声明变量时,如何确定变量的作用域?
变量的作用域是指其作用范围。变量声明的位置决定了它的作用域
 

2-6  什么是最终变量?如何声明最终变量?p28

用关键字final声明的变量只能进行一次赋值,称为最终变量。

例如: final int value = 100;

2-7  java语言的运算分为哪些类型?各有哪些运算符?p29 - p32

算数运算符,关系运算符,位运算符,逻辑运算符,赋值运算符,类型强制转换符,条件运算符,括号运算符,字符串连接运算符,点运算符,对象运算符,new运算符

2-8  分析基本数据类型与引用数据类型的主要特点,说明这两种变量的差别。

		//基础数据类型
		int a = 3;
		int b = a;
		b = 2;
		System.out.println("a = "+ a + ",b = " + b);
		
		//引用数据类型
		int[] arr1 = {1,2,3};
		int[] arr2 = arr1;
		arr2[0] = 0;
		System.out.println("arr1:" + Arrays.toString(arr1));

结果:

a = 3,b = 2
arr1:[0, 2, 3]

在基础数据类型中,把a赋值给b时,a不会随着b的变化而变化。而在引用数据类型中,把数组arr1赋值给数组arr2时,数组arr1会随着数组arr2的变化而变化。

在这里插入图片描述

 

上图是两者在栈内存和堆内存的变化,可以看到,a和b在堆内存中开辟两块空间执行代码b = a 时只是b复制了a空间内的值,当b改变时并不会影响到a。引用数据类型在栈内存开辟的空间存储的是一个指向堆内存一块空间的地址,这块空间便是存储数组arr1内容的地址。当执行代码 arr2 = arr1时,arr2在栈内存的空间就复制了arr1数组的地址,这时数组arr1和数组arr2都指向同一块堆内存中的空间,所以两者的变化都会相互影响。

基础数据类型的内存中的变化就好比小明和小红都拥有两块糖,他们谁吃了自己的糖并不会影响对方糖的数量的变化。而引用数据类型就好比小明和小红都知道某个地方存在两颗糖,而他们之中任意一个人吃了糖都会影响糖数量的变化
 

2-9  

2-10  说明while,do-while和for三种循环的特点和区别

While语句的特点:“先判断后执行”,当条件满足时执行循环体
Do-while语句的特点:“先执行后判断”,先执行循环体,再判断条件是否满足
For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变
量的变化规律都以表达式形式写在循环体之前。

2-11  作为引用数据类型,数组变量与基本数据类型的变量有哪些区别?
数组变量与基本数据类型变量不同点在于,存储单元的分配方式不同,两个变量之间的赋值方式也不同。

基本数据类型变量获得存储单元的方式是静态的,声明了变量后系统就为变量分配了存储单元,就可以对变量赋值。两个变量之间的赋值是值本身。


数组变量的引用赋值,数组变量保存的是数组的引用,即数组占用的一片连续存储空间的首地址及长度特性。当声明一个数字变量而未申请空间时,变量是未初始化的,没有地址及特性值。只有申请了存储空间,才能以下标表示数组元素。
 

2-12  

2-13

2-14  java语言的String字符串有哪些特点?

1、字符串不可变,他们的值在创建后不能被更改。

2、虽然String的值是不可变的,但是他们可以被共享。

3、字符串效果上相当于字符数组(char[ ]),但是底层原理是字节数组(byte[ ])。

2-15  怎样将数值类型的数据转化为字符串?采用以下语句是否可行?

int i = 10;

String str = (String)i;

不行

方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

public class main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i=10;
		String s1=Integer.toString(i);
		String s2=String.valueOf(i);
		String s3=i+"";
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		
	}

}

2-16  能否以s[i]的格式读写java String字符串中的字符?为什么?

不能

遍历方法:

public class Test {
    public static void main(String[] args) {
        String s = "我爱中国";
        for(int i =0;i<s.length();i++){
            System.out.println(s.charAt(i));//指定索引处的字符值
        }
    }
}

2-17  怎样比较两个字符?怎样比较两个字符串?有几种比较字符串的方法?

public class StringA
{
    public static void main(String[] args)
    {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = new String("hello");
        String s4 = new String("hello");
        System.out.println("s1:" + s1);
        System.out.println("s2:" + s2);
        System.out.println("s3:" + s3);
        System.out.println("s4:" + s4);
        System.out.println("----------比较内容是否相等---------------");
        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
        System.out.println(s3.equals(s4));
        System.out.println("----------比较引用地址是否相等---------------");
        System.out.println(s1 == s2);
        System.out.println(s2 == s3);
        System.out.println(s3 == s4);
    }
}
s1:hello
s2:hello
s3:hello
s4:hello----------比较内容是否相等---------------truetruetrue
----------比较引用地址是否相等---------------truefalsefalse

“==”比较的是两个字符串变量的地址是否相同

equals方法比较的是两个字符串变量的内容是否相同

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计项目教程 第二版》是一本专门针对Java程序设计项目的教材。这本教材内容详实,适合初学者和有一定基础的读者。下面我将从几个方面介绍这本教材。 首先,该教材的内容极其全面和细致。书中从基本的Java语法和面向对象编程的概念讲起,逐步引导读者学习如何设计和实现Java程序项目。同时,该教材也涉及了一些常用的Java类库和开发工具的使用方法,如Swing GUI、JavaFX、数据库访问等。无论是学习Java的基础知识,还是进一步提高自己的项目开发技巧,都可以在此书中找到所需知识。 其次,该教材注重实践和项目案例。课本中不仅提供了丰富的练习题,还通过一系列实际项目案例来让读者应用所学知识解决实际问题。这种实践性的学习方法有助于读者从理论知识到实际应用的过渡,培养实际项目开发的能力。 另外,教材的编写风格简洁明了。作者通过清晰的语言和简单直观的示例代码,将复杂的概念和语法讲解得易于理解和掌握。这对于初学者来说非常友好,能够帮助他们快速入门并提高编程水平。 总结而言,《Java程序设计项目教程 第二版》是一本很好的Java项目编程教材。它内容全面,重点实践,在编写风格简洁明了。读者通过学习这本教材,不仅可以掌握Java语言基础,还能够应用所学知识开发项目。无论是初学者还是有一定基础的读者,都可以从中获得实际的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值