读书笔记(一) 疯狂JAVA讲义 第三章 数据类型和运算符

3.1关于注释

单行注释 //

多行注释 /*

*/

文档注释 /**

*/

3.2.2标识符规则

所谓标识符就是用于给程序中变量、类、方法命名的符号。Java语言的标识符必须以字母、下划线(_)、美元符($)开头,后面可以跟任意数目的字母、数字、下划线和美元符号。标识符中不可以包含空格,不能使用Java关键字和保留字,标识符的长度没有限制。


3.2.3Java关键字

Java一共包含48个关键字。其中enum是jdk1.5之后新增的关键字,用于定义一个枚举。除了这些关键字外,Java还有两个特殊的保留字goto和const,Java暂未使用这两个单词作为关键字,但可能会在未来使用其作为关键字。不仅如此,Java还提供了三个直接量:true,false,null。



3.3数据类型分类

Java语言是强类型(strongly typed)语言,也就是说每个变量和每个表达式都有一个在编译时就确定的类型,所以,所有的变量必须显示声明类型,即 所有变量必须先声明,后使用。

声明变量的语法如下: type varName;


Java语言支持的类型分为两类:基本类型(Primitive Type) 和 引用类型(Reference Type)。

基本类型包括 Boolean类型和数值类型。数值类型有整数类型和浮点类型。整数类型包括byte,short,int ,long,char,浮点类型包括float和double。有时候也把char型称为字符型,实际上字符型也是一种整数类型。

引用类型包括类、接口和数组类型,还有一种特殊的null类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,知识Java语言里布再使用指针这个说法。



3.4基本数据类型

Java基本数据类型分为两大类:Boolean类型和数值类型。而数值类型又可以分为整数类型和浮点类型,整数类型里的字符类型也可以被单独对待。因此常常把Java里的基本数据类型分为4类,如下图所示:


Java语言里就包含了8中基本数据类型,字符串不是基本数据类型,字符串类型是一个类,也就是一个引用数据类型。


3.4.1 整型

byte  : 一个byte类型整数在内存里占8位,表数范围是-128(-2^7)~127(2^7-1)

short:一个short类型整数再内存里占16位,表数范围是-32768(-2^15)~32767(2^15-1)

int     :一个int类型整数再内存里占32位,表数范围是-2147 483 648(-2^31)~2147483647(2^31-1)

long :一个long类型整数再内存里占64位,表数范围是-9 223 372 036 854 775 808 (-2^63)~ 9 223 372 036 854 775 807(2^63-1)


int是最常用的整数类型,因此通常情况下,一个Java整数常量默认就是int类型。除此之外,有两种情况必须指出:

1.如果直接将一个较小的整数常量(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数常量当成byte或者short类型来处理。

2.如果使用一个巨大的整数常量(超出了int类型)时,Java不会自动把这个整数常量当成long类型来处理。如果希望系统把一个整数常量变成long类型来处理,应在这个整数类型后增加L作为后缀。



3.4.2 Java7 新增的二进制整数


3.4.3 字符型

字符型通常用于表示单个字符,字符常量必须使用单引号(')括起来。Java语言使用16位的Unicode字符集作为编码放方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Java程序支持各种语言的字符。

字符型常量有如下3种表示形式。

1、直接通过单个字符来指定字符型常量 。例如 ‘A’,’9‘

2、通过转义字符表示特殊字符型常量,例如’\n‘ 换行符,’\t‘ 回车符

3、直接使用Unicode值来表示字符型常量,格式是’\uxxxx‘,一共可以表示65535个字符,范围是‘\u0000’~'\uFFFF'.


char类型的值也可以直接作为整数类型的值来使用,但它是一个16位的无符号整数,即全部是整数,表述范围是0~65535.

如果把0~65535范围内的int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。

char char1='a';
char char2=97;
System.out.println(char1); //a
System.out.println(char2);//a
System.out.println(char1+char2);//194
int int1=char1;
System.out.println(int1);//97


值得指出的是,Java语言中的单引号、双引号和反斜杠都有特殊的用途,如果一个字符创中包含了这些特殊字符,则应该使用转义字符的表示形式。例如,在Java程序中表示一个绝对路径: “c:\codes”,这种写法得不到我们期望的结果,因为Java会把反斜线当成转义字符,应该这样写“c:\\codes”,Java会把第一个反斜线当成转义字符,和后一个反斜线组成真正的反斜线。


3.4.4浮点型


Java的浮点类型有两种:float和double。Java的浮点类型有固定的表数范围和字段长度,字段长度和表数范围与机器无关。double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型的数值占8个字节、64位,一个float类型的数值占4个字节、32位。

Java语言的浮点类型默认是double类型。如果希望Java把一个浮点型值当成float类型处理,应该在这个浮点类型值后紧跟f或F。


除此之外,Java还提供了3个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。

例如使用一个整数除以0将得到正无穷大,7.5/0

使用一个负数除以0将得到负无穷大,-1.2/0

0.0除以0.0或对一个负数开方将得到一个非数。

正无穷大通过Double或Float的POSITIVE_INFINITY表示;

负无穷大通过Double或Float的NEGATIVE_INFINITY表示,

非数通过Double或Float的NaN表示。

**所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。

**只有浮点数除以0才可以得到正无穷大或负无穷大,因为Java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)处理。

  如果一个整数除以0,则会抛出异常:ArithmeticException:/by zero(除以0异常)。


3.4.6布尔型

布尔型只有一个Boolean类型,并且其数值只能是true或false;


3.5 基本类型的类型转换

3.5.1 自动类型转换

Java中表数范围小的可以向表数范围大的进行自动类型转换,就如同有两瓶水,把小瓶的水倒入大瓶不会有任何问题。Java支持自动类型转换的类型如下图:

                 


   3.5.2强制类型转换

如果希望把上图中右边的类型转换为左边的类型,则必须进行强制类型转换,语法如下:(targetType)value.强制类型转换会造成数据丢失。

如:




以上代码不做解释。


其中这块比较典型的应用如下,生成一个随机的6位字符串:


其中还有一些容易出错的地方:

float f=4.5;这是错误的,因为浮点数默认是double类型,此处要么 float f=4.5F;要么强转 float=(float)4.5;


3.5.3表达式类型的自动提升


当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义了如下的自动提升规则。

1.所有的byte类型、short类型和char类型将被提升到int类型。

2.整个算术表达式的数据类型自动提升到与表达式中最高等级 操作数同样的类型。

short sValue=5;

sValue=sValue-2;//出错   sValue-2表达式的类型将被提升到int类型,这样就把右边的int类型值赋给左边的short类型变量,从而引起错误。

sValue-=2;//正确

3.6 直接量


字符串常量池

常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括关于类、方法、接口中的常量,也包括字符串直接量。

<span style="white-space:pre">	</span>String s1="abcd";
        String s2="abcd";
        String s3="ab"+"cd";
        String s4=new String("abcd");
        String s5=new String("abcd");
        System.out.println(s1==s2);//true
        System.out.println(s1==s3);//true
        System.out.println(s1==s4);//false
        System.out.println(s4==s5);//false

3.7 运算符

        System.out.println(3.0/0);//Infinity
        System.out.println(3.0%0);//NaN

3.7.6逻辑运算符

&& 短路与,前面的返回FALSE,后面的将不再判断

&   不短路与,不会短路,都会计算

||    短路或,前面的返回TRUE,后面的将不再判断

|    不短路或,不会短路,都会计算

!非

^ 异或 当两个操作数不同时才返回TRUE,相同则返回FALSE。



第三章先到这,基本上都是从书上摘抄的原话。以后得锻炼做一些个人的总结。



基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值