Java第三章

本文详细介绍了Java编程的基础知识,包括主类的结构、成员变量和主方法,以及数据类型,如整数、浮点、字符和布尔类型。通过示例代码演示了如何声明和使用这些数据类型,还提到了变量的有效范围、运算符的使用以及数据类型转换。此外,文章强调了代码注释和编码规范的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java第三章

3.1Java主类结构

Java 语言是面向对象的程序设计语言,Java 程序的基本组成单元是类,类体中又包括属性与方法两部分每一个应用程序都必须包含一个 main()方法,含有 main()方法的类称为主类。

【例 3.1】创建主类并调用其主方法(实例位置:资源包\TMis3M)

在在 Eclipse 下依次创建项目 item、包 Number 和类 Frist。在类体中输入以下代码,实现在控制台上输出"你好,Java"。

注意:

代码中的所有标点符号都是英文字符。不要在中文输入法状醒号,否则会导致编译错误。

文件名必须和类名 Frist 相同,即 Fristjava。还要注意大小写,Java 是区分大小写的。

1.包声明

一个 Java 应用程序是由若干个类组成的。在例 3.1 中就是一个类名为 Frist 的类,语句 packageNumber 为声明该类所在的包,package 为包的关键字。

2.声明成员变量和局部变量

通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。全局变量声明在类体中,局部变量声明在方法体中。全局变量和局部变量都有各自的应用范围。在例 3.1 中,s1 是成员变量,s2 是局部变量。

3.编写主方法

main()方法是类体中的主方法。该方法从“{”开始,至“}”结束。public、static 和 void 分别是main()方法的权限修饰符、静态修饰符和返回值修饰符,Java 程序中的 main)方法必须声明为 public static void。String[]args 是一个字符串类型的数组,它是 main)方法的参数main(方法是程序开始执行的位置。

4.导入 API 类库

在 Java 语言中可以通过 import 关键字导入相关的类。在 JDK 的 API 中(应用程序接口)提供了130 多个包,如java.awt、java.io 等。可以通过 JDK 的 API文档来查看这些包中的类,把握类的继承结构、类的应用、成员变量表、构造方法表等,并对每个变量的使用目的进行了解,API 文档是程序开发人员不可或缺的工具。

3.2数据基本类型

基本数据类型范围四种:整数类型,浮点类型,字符类型、布尔类型。

3.2.1 整数类型

整数类型简称整型,用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整数数据根据它所占内存大小的不同,分为byte、short、int和long这四种类型。它们具有不同的取值范围,取值范围如下图所示:

整型数据类型

数据类型内存空间(8位等于1个字节)取值范围

byte8位-128(-2^7)~127(2^7-1)

short16位-2^15~2^15-1

int32位-2^31~2^31-1

long64位-2^63~2^63-1

用四种类型编写一个程序,运行结果,并用文字描述。(注意:long类型,在赋值的时候要和int类型做区分,需要在整数后加L(大写的L))

3.2.2浮点类型

浮点类型简称浮点型,用来存储含小数部分的数值。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围。如图所示:

浮点型数据类型

数据类型 内存空间(8位等于1字节) 取值范围 float 32位 1.4E-45~3.4028235E38 double 64位 4.9E-342~1.7976931348623157E308

用两种浮点型编写一个程序,运行结果,并用文字描述。(注意:使用float型小数,需要在小数后面添加F或f)

浮点型的例题:【例3.2】根据身高体重计算BMI指数(实例位置:资源包、TM\sl\3\2)

创建BMIexponent类,声明double型变量height来记录身高,单位为米: 声明int型变量weight记录体重,单位为千克: 根据BMI=体重/(身高*身高)计算BMI指数。实例代码如下

package zuoye;

public class javake {

public static void main(String[] args) {

// TODO Auto-generated method stub

short a=1;//定义一个短整型数值a=1

byte b=-125;//定义一个整型数值b=-125

System.out.println(a);//输出a的值并换行

System.out.println(b);//输出b的值并换行

int c=123456;//定义一个整型c=123456

long d=33333333333L;//定义一个长整型数值d=33333333333并在末尾加上大写字母“L”,声明此数值为长整型数值

System.out.println(c);//输出c的值并换行

System.out.println(d);//输出d的值并换行

float e=3.14f;//定义一个浮点类型单精度数值e=3.14并在末尾加上大写字母"F",声明此数值为单精度类型

double g=3.13;//定义一个双精度q=3.13

System.out.println(e);//输出e的值并换行

System.out.println(g);//输出g的值并换行

double h=1.74;//双精度数值,身高h=1.74

int w=65;//整型数值 体重w=65

double exponent=w/(h*h);//bmi计算公式

System.out.println("身高"+h);//输出身高并换行

System.out.println("体重"+w);//输出体重并换行

System.out.println("bmi值"+exponent);//输出bmi值并换行

System.out.println("你的体重属于");//输出您的体重属于

if(exponent>=18.5&&e<24.9){//如果>=18.5 bmi<24.9输出正常

System.out.println("正常");

}

if(exponent>=24.9&&exponent<29.9){//如果>=24.9bmi<29.9

System.out.println("过重");//输出过重

}

if(exponent>=29.9){//如果bmi>=29.9

System.out.println("肥胖");//输出肥胖

}

char b1='\\';//将转义字符赋值给b1

System.out.println(b1);//输出b1

char c1='\u2665';//将转义字符赋值给c1

System.out.print(c1);//输出c1的值

boolean a1=Boolean.TRUE;//判断真假

System.out.println("a1");//输出真a1

}

}

3.2.3字符类型

字符类型(char)用于存储单个字符,站16个位(两个字节)的内存空间。在定义字符型变量时要以单引号表示,如's'表示一个字符。用字符型编写一个程序,运行结果,并用文字描述。如图所示:

【例3.3】查看字符与Unicode码互换的结果(实例位置:资源包\TM\sl\3\3)

在项目中创建类Cess,编写如下代码,将Unicode表中某些位置上的字符以及一些字符在Unicode表中的位置在操作台上输出。

转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义。故称”转义“。

【例3.4】输出‘\’字符和‘★’字符(实例位置: 资源包\TM\sl\3\4)

'\'字符的转移为‘\\’;‘★’字符的Unicode码为2605,实例代码如下:

3.2.4布尔类型

布尔类型又称逻辑类型,简称布尔型,通过关键字boolean来定义布尔类型变量。布尔类型只有ture和false两个值,分别代表布尔类型的"真"和"假"。布尔值不能与整数进行互换。布尔类型通常被用在流程图控制中,作为判断条件。用布尔类型编写一个程序,运行结果,并文字描述 。如图所示:

3.3变量与常量

3.3.1标识符何关键词

1:标识符(注意:Java语言中的字母是严格区分大小写的)

标识符是用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。

标识符的要求:

1):Java语言规定标识符由任意顺序的字母、下划线(_)、数字、美元符号

2):不能以数字开头

3):关键字不可以作为标识符

2、关键字

关键字又称保留字,是Java语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来用

3.3.2声明变量(可变化的)

变量的使用是程序设计中一个十分重要的环节。声明变量就是告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,这个内存空间内的值就是变量值。

变量名的要求:

1:变量名必须是一个有效的标识符

2:变量名不可以使用Java中的关键字

3:变量名不能重复

4:应选择有意义的单词作为变量名

3.3.3声明常量(不可变化的)

在程序运行过程中一直不会改变的量成为常量(constant),通常也被称为"final变量"。常量在整个程序中只能被赋值一次。常量命通常用大写字母,但这不是必须的。

final 整数类型 常量名称 [= 值]

当变量被final关键字修饰时,该变量就变成了常量,必须在定义时就设定它的初值,否则将会产生编译错误。

【例3.5】尝试给常量赋值,观察是否会发生错误(实例位置:资源包\TM\sl\3\5)

在项目中创建类Exampiead,在类体中创造变量age与常量PI。在主方法中分别将变量与常量赋值,通过输出信息可测试变量与常量的有效范围。

3.3.4变量的有效范围

由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是说变量有它的生命周期。因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的"有效范围"将变量分为"成员变量"和"局部变量"。

1、成员变量

类体中所声明的变量被称为成员变量,朝阳北路在整个类中都有效。类的成员变量又可以分为两种,即静态变量和实例变量。

2、局部变量

在类的方法体中声明的变量(方法内部定义,"{"与"}"之间的代码中声明的变量)成为局部变量。局部变量只在当前代码块中有效,也就是只能在"{"与"}"之内使用。

在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只在前定义的方法内有效,不能用于类的其他方法中。局部变量的生命周期取决于方法,当方法被调用时Java虚拟机会为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放中局部变量占用的内存空间,局部变量也将会被销毁。

【例3.6】把成员变量"排挤掉"的局部变量(实例位置:资源包\TM\sl\3\6)

在项目中创建类Val,分别定义名称相同的局部变量与成员变量,当名称相同成员变量将被隐藏。

3.4运算符

3.4.1赋值运算符

赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的赋值给左方的操作数。

【例3.7】使用赋值运算符同时为两个变量赋值(实例位置:资源包\TM\sl\3\7)

在项目中创建类Eval,在主方法中定义变量,使用赋值运算符变为变量赋值。

由于赋值运算符“=”处理时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符,会从最右方的“=”开始处理。

3.4.2算术运算符

Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(余数),它们都是二元运算符。如图所示。其中"+"和"-"运算符还可以作为数值的正负号。

【例3.8】使用算术运算符模拟计算机(实例位置:资源包\TM\sl\3\8)

创建ArithmeticOperator类,让用户输入两个数字,分别用5种运算符对这两个数字进行计算。

3.4.3自增和自减运算符

自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增1或减1.放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使用该变量参与表达式的运算。放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算符,然后再使该变量加1(减1)。

3.4.4比较运算符

比较运算符属于二元运算符,用于程序中的变量之间、变量和白变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是 boolean 型。当运算符对应的关系成立时,运算结果为 true,否则为 false。所有比较运算符通常作为判断的依据用在条件语句中。比较运算符共有 6 个.

【例3.9】使用不同的比较运算符判断两个整数的关系(实例位置:资源包\TM\sl\3\9)

在项目中创建类Compare,在主方法中创建整数变量,使用比较运算符对变量进行比较运算,并将运算后的结果输出。

3.4.5逻辑运算符

返回类型为布尔类型的表达式,如比较运算符,可以被组合在一起构成一个更复杂的表达式。这是通过逻辑运算符来实现的。逻辑运算符包括&(&&)(逻辑与)、||(逻辑或)、!(逻辑非)。逻辑运算符的操作元必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符,其他都是二元运算符。逻辑运算符的用法和含义如图所示:

结果为boolean型的变量或表达式可以通过逻辑运算符组合为逻辑表达式。

用逻辑运算符进行逻辑运算时,结果如图所示:

【例 3.10】使用不同的比较运算符判断两个整数的关系(实例位置:资源包\TM\sI3M10)

在项目中创建类 Calculation,在主方法中创建 3 个整数,分别记录男生人数、女生人数和总人数,使用逻辑运算符来判断“男生人数大于女生人数并且总人数大于 30 人”和“男生人数大于女生人数或者总人数大于30 人”这两种情况是否存在。

3.4.6位运算符

位运算符除“按位与”和“按位或”运算符外,其他只能用于处理整数的操作数。包括byte、short、char、int和 long 等数据类型。位运算是完全针对位方面的操作。整型数据在内存中以二进制的形式表示,如 int 型变量 7 的二进制表示是 00000000 00000000 0000000 000011。

左边最高位是符号位,最高位是 0 表示正数,若为1 则表示负数。负数采用补码表示,如-8的二进制表示为 111111111 111111111 111111 11111000。这样就可以对整型数据进行核位运算。

位移操作:

述运算符,还可以对数据按二进制位进行移位操作。Java 中的移位运算符有以下3种

左移就是将运算符左边的操作数的二进制数据,按照运算符右边操作数指定的位数向左移动。自

分补 0。右移则复杂一些。当使用“>>”符号时,如果最高位是 0.右移空的位就现入0,如果最高位

是 1,右移空的位就填入 1。

3.4.7三元运算符

三元运算符的使用格式为:

条件式 ? 值1 :值2

三元运算符的运算规则为:若条件式的值为true,则整个表达式取值1,否则取值2.例如:

boolean b =20 < 45 ? true:false;

上述程序表达式"20<45"的运算结果返回真,那么boolean型变量b取值为true。相反,如果表达式的运算结果返回为假,则boolean型变量b取值为false。

三元运算符等价于if...else语句,例如上述代码等价于:

boolean a; //声明boolean型变量

if(20<45) //将20 < 45 作为判断条件

a=true; //条件成立,将true赋值给a

else

a=false; //条件不成立,将false赋值给a

3.4.8运算符优先级

Java中表达式就是使用运算符连接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。通常,优先级由高到低的顺序依次是:

增量和减量运算

算术运算

比较运算

逻辑运算

赋值运算

如果两个运算符有相同的优先级,那么左边的表达式要比右边表达式先被处理。左Java中众多运算符特定的优先级如图所示:

3.5数据类型转换

类型转换是將一个值从一种类型更改为另一种类型的过程。例如,可以将 String类型的数据“457”转换为数值型,也可以将任意类型的数据转换为 String 类型。

如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的;而把高数据类型向低精度数据类型转换时,则会有信息丢失,有可能失败。

数据类型转换有两种方式,即隐式转换与显式转换。3.

3.5.1 隐式类型转换

从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为 byte <short <int<long <float <double。

例如,可以将 int 型变量直接赋值给 float 型变量,此时 int 型变量将隐式转换成 float 型变量。代

码如下:

int x = 50; //声明 int 型变量 x

float y = x; //将 ×赋值给 y,y 的值为 50.0

隐式转换也要遵循一定的规则,来解决在什么情况下将哪种类型的数据转换成另一种类型的数据。

表 3.10 列出了各种数据类型隐式转换的一般规则。

隐式类型转换规则

操作数1的数据类型操作数2的数据类型转换后的数据类型

byte、short、charintint

byte、short、char、int、longlong

byte、short、char、int、longfloatfloat

byte、short、char、int、long、floatdoubledouble

下面通过一个简单实例介绍数据类型隐式转换。

【例 3.11】使用隐式转换提升数值的精度(实例位置:资源包\TM\sI\3\11)

在项目中创建类 Conver,在主方法中创建不同数值型的变量,实现将各变量隐式转换。

3.5.2显式类型转换

当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算(又称强制类型转换)。语法如下:

(类型名)要转换的值

比如,将高精度数字转为低精度数字。代码如下:

int a = (int)45.23; //此时输出a的值为45

long y = (long)456.6F //此时输出y的值为456

int b = (int)'d'; //此时输出b的值为100

执行显式类型转换时,可能会导致精度损失。除boolean类型外,其他基本类型都能以显式类型转换的方式实现转换。

3.6代码注释与编码规范

在程序代码中适当地添加注释,可以提高程序的可读性和可维护性。好的编码规范可以使程序易阅读和理解。本节将介绍Java中的代码注释方法以及应该注意的编码规范。

3.6.1代码注释

1、单行注释

"//"为单行注释标记,从符号"//"开始直到换行为止的所有内容均作为注释被编译器忽略。

2、多行注释

"/* */"为多行注释标记,符号"/*"与"*/"之间的所有内容均为注释内容。注释中的内容可以换行。

3、文档注释

“/***”为文档注释标记。符号“p*”与“*”之间的内容均为文档注释内容。当文档注释出现在声明(如类的声明、类的成员变量的声明、类的成员方法的声明等)之前时,会被 Javadoc 文档工具读取作为Javadoc 文档内容。除注释标记不同外,文档注释的格式与多行注释的格式相同。

3.6.2编码规范

在学习开发的过程中要养成良好的编码习惯,规整的代码格式会为程序日后的维护工作提供极大的便利。在此对编码规则做了以下总结,供读者学习:

1、回每条语句尽量单独占一行,每条语句都要以分号结束。

“注意:程序代码中的分号必须为英文状态下输入的,初学者经常会将“;”写成中文状态下的“;”,此时编译器会报出 InvalidCharacter(非法字符)这样的错误信息。

2、在声明变量时,尽量使每个变量单独占一行,即使有多个数据类型相同的变量,也应将其各自放置在单独的一行上,这样有助于添加注释。对于局部变量,应在声明的同时对其赋予初始值。

3、在 Java代码中,空格仅提供分隔使用,无其他含义,开发者应控制好空格的数量,不要写过多的无用空格。

4、为了方便日后的维护,不要使用技术性很高、难懂、易混淆的语句。因为程序的开发者与维

护者可能不是同一个人,所以应尽量使用简洁、清晰的代码编写程序需要的功能。

5、对于关键的方法要多加注释,这样有助于阅读者了解代码的结构与设计思路。

代码应该写在哪?这可能是第一次学习编程的读者最大的疑惑了。笔者对 Java 代码的主要结构做出了几点总结:

1、package 语句要写在类文件的第一行。如果类不在任何包中,可以不写 package 语句。

2、import 语句要写在类上方、package 语句下方

3、方法必须写在类的{}之内。方法的{}内不可以创建其他方法。

4、类的成员变量必须定义在类的{}之内、方法的{}之外的位置。方法的{}之内定义的变量均为局部变量。

5、除了上面几种类型的代码,其他类型代码都应该写在某个{}中(如代码块或方法体之内)。其他类型的代码包括局部变量、内部类等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值