第一章 JAVA 语言基础(合集)

1.1 JAVA主类结构

        1.JAVA语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性与方法两部分。

        2.每一个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。

        3.一个JAVA应用是由若干个类组成的。

        4.通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。

        5.main()方法是类体中的主方法。该方法从“{”开始,到“}”结束。public、static、void分别是

main()方法的权限修饰符、静态修饰符和返回值修饰符,JAVA程序中的main()方法必须声明成 public static void。String[] args 是一个字符串类型的数组,它是main()方法的参数。

        6.在JAVA语言中可以通过import关键字导入相关的类。

 1.2 基本数据类型

        1.2.1整数类型

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

表3.1 整形数据类型
数据类型内存空间(8位等于1字节)取值
byte8位-128~127
short16位-32768~32767
int32位-2147483648~2147483647
long64位-9223372036854775808~9223372036854775808

        接下来分别对四种数据类型进行介绍。

        1.int 型

        定义int有四种方法:

int x;                       //定义int型变量x
int x , y;                   //同时定义int型变量x,y
int x = 10 , y = -5;         //同时定义int型变量x,y 并赋予初值
int x = 5 + 23;              //定义int型变量x,并赋予公式(5+23)计算结果的初值

        int型变量在内存中占4字节,也就是32位,在计算机中bit是由0和1来表示的在计算机中是这样表示的。

00000000 00000000 00000000 00000101

        int型是JAVA整形值的默认数据类型。当对多个尚未被定义数据类型的整形做运算时,运算的结果将默认为int类型。

        2.byte型

        byte型的定义方式与int型的定义方式相同。

byte a;
byte a , b , c;
byte a = 9 , b = -45; 
        3.short型 

        short型的定义方式与int型的定义方式相同。

short s;
short s , t , r;
short s = 1000 , t = -19;
short s = 2000 / 10;
        4.long型

        由于long型的取值范围比int型大,且属于高级的数据类型,所以在赋值的时候要和int做出区分,需要在整数后加L或者l(小写的L)。

long number;
long number , run;
long number = 12345678L, run = -987654321L;
long number = 123456789L * 987654321L;

        1.2.2浮点类型

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

表1.2 浮点型数据类型
数据类型内存空间(8位等于1字节)取值范围
float32位1.4E-45~3.4028235E38
double64位4.9E-324~1.7976931348623157E308

        在默认情况下小数都被看作double型,若想使用float型小数,则需要在小数后面添加F或f。另外,可以使用后缀d或D来明确表明这是一个double类型数据,但加不加d或D并没有硬性规定。

float f1 = 13.23f;
double d1 = 4562.12d;
double d2 = 45678.1564;

        1.2.3字符类型 

        1.char型

        字符类型(char)用于存储单个字符,占用16位bit(两个字节)的内存空间。在声明字符型变量时,要以单引号表示,如's'表示一个字符。

char ch = 'a';

        由于字母a在Unicode表中的排序位置是97,因此允许将上面的语句写成

char ch = 97;

        由于unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。

        2.String型

        String类型是字符串类型,可以用来保存多个字符串组成的文本内容,其用法与字符类型相似,但文本内容需要用双引号标注。

        3.转义字符

        转义字符是一种特殊的字符变量,其以反斜线“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。JAVA中的转义字符如表1.3所示。

转义字符含义转义字符含义
\ddd1~3位8进制数据所表示的字符,如\123\r回车
\uxxxx4位16进制数据所表示的字符,如\u0052\n换行
\'单引号字符\b退格
\\反斜杠字符\f换页
\t垂直制表图,将光标移到下一个制表符的位置

        将转义字符赋值给字符变量的时候,与字符常量值一样需要使用单引号。

        1.2.4布尔类型

        布尔类型又称逻辑类型,简称布尔型,通过关键字Boolean来定义布尔类型变量。布尔类型只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中作为判断条件。

boolean b;                //定义布尔类型变量
boolean b1 , b2;          //定义布尔类型变量b1、b2
boolean b = ture;         //定义布尔类型变量b,并赋值给初值ture

1.3 变量与常量

        在程序执行过程中,其值能被改变的量称为变量,其值不能被改变的量称为常量。变量与常量的命名都必须使用合法的标识符。本节将介绍标识符与关键字以及变量与常量的声明方法。

        1.3.1 标识符与关键字

        1.标识符

        标识符可以简单地理解为一个名字,用来标识类名、变量名、方法名、数组名等的有效字符序列。

        Java规定标识符由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字。

        在Java中标识符的字母是严格区分大小写的,如good和Good是两个不同的标识符。Java使用unicode标准字符集,最多可以标识65535个字符,因此,Java中的字母不仅包括a、b、c等,还包括汉字、日文以及其他许多语言中的文字。

        2.关键字

        关键字又称保留字,是JAVA语言中已经被赋予特定意义的一些单词,不可以吧这些单词作为标识符来使用。JAVA中的关键字如表1.4所示。

表1.4 JAVA关键字
abstractassertbooleanbreakbytecase

catch

char
extendsfinalfinallyfloatforgotoifimplements
importinstanceofintinterfacelongnativenewpackage
privateprotectedclassconstcontinuedefaultdodouble
switchsynchronizedthisthrowthrowstransienttryvar
elseenumpublicreturnshortstaticstrictfpsuper
voidvolatilewhile

        1.3.2 声明变量

        变量的使用在程序设计中是一个十分重要的环节。声明变量就是要告诉编译器这个变量的数据类型,这样编译器才知道需要配置多少空间给他,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作给这个空间取名字,称为变量名。变量名必须是合法的标识符。内存空间内的值就是变量值。在声明变量的时候可以不用赋值,也可以直接赋予初值。

        变量的命名并不是随意的,应遵循以下几条规则:

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

                2.变量名不可以使用JAVA中的关键字。

                3.变量名不能重复。

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

        在JAVA10中提供了一个方便好用的新特性:使用var变量,var是一个关键字,它相当于是一种动态类型。编译器会根据赋给变量的值判断出变量的类型,因此在使用var声明局部变量的时候必须赋予初值。

var 变量名称 = 值

        需要注意的是,var不能用于声明成员变量,也不能作为方法的返回值。

        1.3.3 声明常量

        与变量不同,在程序运行过程中一直不会改变的量称为常量。常量在整个程序中只能被赋值一次,且常量的值可以共享给程序中的所有对象。

        在Java中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定。

finall 数据类型 常量名称 [ = 值]
final double PI = 3.1415926;         // 声明double型常量PI并赋值
final boolean BOOL = true;          // 声明boolean型常量BOOL并赋值

         当变量被finall修饰的时候,该变量就变成了常量,必须从设定的时候九赋予他初值,否则将会产生编译错误。

        1.3.4 变量的有效范围

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

        1.成员变量

        在类体中所生命的变量被称为成员变量,成员变量在整个类中都有效。

        如果在成员变量的前面加上static,这样的成员变量被称为静态变量。静态变量的有效范围可以跨类,甚至可以到达整个应用程序内。静态变量除了能在生命他的类中存取,还能直接以

“类名.静态变量”的方式存在其他的类内使用。

        2.局部变量

        在类的方法中生命的变量(方法内部定义,在“{” 和 “}”之间的代码中声明的变化量)称为局部变量。局部变量只在当前代码块中生效,也就是只能在“{” 和 “}”之间的代码中使用。

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

局部变量可以与成员变量的名字相同,此时成员变量将被隐藏,即成员变量在此方法中暂时失效。

 

 1.4 运算符

        1.4.1 赋值运算符

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

int a = 100;

        该表达式是将100赋值给a。左方的操作数必须是一个量,而右边的操作数则可以是变量(如a、number)、常量(如123、‘book’)、有效的表达式(如45*2)。

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

        1.4.2 算术运算符

        Java中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)、%(求余),它们都是二元运算符。Java中算术运算符的功能及使用方式如表1.5所示。 

表1.5 JAVA算术运算符
运算符说明实例结果
+12.45f+1527.45
-4.56-0.164.4
*5L*12.45f62.25
/7/23
取余数12%102

        其中“+”和“-”运算符还可以作为数值的正负号,如+5,-7。

        1.4.3 自增和自减运算符

        自增、自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。操作元必须是一个整型或者一个浮点型变量。自增、自减运算符的作用是使变量的值加1或减1。

++a(--a)            //表示在使用变量a之前,先将a+(-)1
a++(a--)            //表示在使用变量a之后,先将a+(-)1
b = ++a             //先将a的数值+1,再赋值给b,若a初始为4,则现在a = 5,b = 5
b = a++             //将a的数值赋值给b,然后将a的数值+1,则现在a = 5,b = 4

        1.4.4 比较运算符

        比较运算符属于二元运算符,用于程序中的变量之间、变量和自变量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean类型。当运算符对应的关系成立时,运算结果为ture,否则为false。如表1.6所示。

表1.6 比较运算符
运算符作用举例操作数据结果
>比较左方是否大于右方'a'>'b'整形、浮点型、字符型false
<比较左方是否小于右方165<456整形、浮点型、字符型ture
==比较左方是否等于右方'c'=='c'基本数据引用型、引用型ture
>=比较左方是否大于或等于右方479>=426整形、浮点型、字符型ture
<=比较左方是否小于或等于右方12.45<=45.5整形、浮点型、字符型ture
!=比较左方是否不等于右方'y'!='t'基本数据引用型、引用型ture

        1.4.5 逻辑运算符

        逻辑运算符是对true(真)和false(假)这两种逻辑值进行运算,运算后的结果仍是一个逻辑值。逻辑运算符包括&&(逻辑与)、||(逻辑或)、!(逻辑非)。逻辑运算符计算的值必须是boolean型数据。在逻辑运算符中,除了“!”是一元运算符之外,其他都是二元运算符。如表1.7所示。

表1.7 逻辑运算符
运算符含义用法结合方向
&&、&逻辑与op1 && op2从左到右
||逻辑或op1 || op2从左到右
逻辑非!op从右到左

        1.4.6 位运算符

        位运算的操作数类型是整型,可以是有符号的,也可以是无符号的。位运算符可以分为位逻辑运算符和位移运算符两大类。

        1.“按位与”运算

        位逻辑与实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求与,若两个操作数对象同一位都为1,则结果对应位为1,否则结果中对应位为0。

        2.“按位或”运算

        位逻辑或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求或,若两个操作数对象同一位都为0,则结果对应位为0,否则结果中对应位为1。

        3.“按位取反”运算

        取反运算符,实际上是将操作数转换成二进制表示方式,然后将各位二进制位由1变为0,由0变为1。

        4.“按位异或”运算

        位逻辑异或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求异或,若两个操作数对象同一位不同时,则结果对应位为1,否则结果中对应位为0。

        5.移位操作

        除了上述运算符,还可以对数据按二进制进行移位操作。JAVA中的移位运算符有三种:

        <<: 左移。

        >>: 右移。

        >>>:无符号右移。

        1.4.7 复合赋值运算符

        

表1.8 复合赋值运算符
运算符含义举例等价效果
+=相加结果赋予左侧a += ba = a + b
-=相减结果赋予左侧a -= ba = a - b
*=相乘结果赋予左侧a *= ba = a * b
/=相除结果赋予左侧a /= ba = a / b
%=取余结果赋予左侧a %= ba = a % b
&= 与结果赋予左侧a &= ba = a & b 
|=或结果赋予左侧a |= ba = a | b
^=异或结果赋予左侧a ^= ba = a ^ b
<<=左移结果赋予左侧a <<= ba = a << b
>>=右移结果赋予左侧a >>= ba = a >> b
>>>=无符号右移结果赋予左侧a >>>= ba = a >>> b

        1.4.8 三元运算符

        三元运算符的用法如下:

条件式 ? 值1 :值2

        三元运算符的运算法则是:若条件式的值位ture,则整个表达式取值1,否则取值2.

        1.4.9 运算符的优先级

        

表1.9 运算符的优先级
优先级描述运算符优先级描述运算符
1圆括号()9按位与运算&
2正负号+、-10按位异或运算^
3一元运算符++、--、!11按位非运算|
4乘除*、/、%12逻辑与运算&&
5加减+、-13逻辑或运算||
6移位运算<<、>>、>>>14三元运算符?=
7比较大小<、>、>=、<=15赋值运算符=
8比较是否相等==、!=

1.5数据类型转换

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

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

        数据转换有两种方式,即隐式转换和显式转换

        1.5.1 隐式类型转换

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

        隐式转换也要村寻一定的规则来解决在什么情况下,将哪种类型的数据转换成另一种类型的数据。详细规则如表1.10所示。

表1.10 隐式类型转换规则
操作数1的类型操作数2的类型转换后的数据类型
byte、short、charintint
byte、short、char、intlonglong
byte、short、char、int、longfloatfloat
byte、short、char、int、long、floatdoubledouble

        1.5.2显式类型转换 

        当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换(又称强制类型转换),当执行显式类型转换时可能会导致精度缺失。语法如下:

(类型名) 要转换的值

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

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值