900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > ChapterTwo---Java基本语法:变量 运算符与流程控制(上)

ChapterTwo---Java基本语法:变量 运算符与流程控制(上)

时间:2022-01-19 11:22:47

相关推荐

ChapterTwo---Java基本语法:变量 运算符与流程控制(上)

ChapterTwo---Java基本语法:变量、运算符与流程控制(上)

⑴关键字和保留字⑵标识符(Identifier)⑶变量以及基本数据类型整数类型:byte、short、int、long浮点类型:float、double字符型:char字符集布尔型:boolean ⑷基本数据类型转换自动类型转换强制类型转换▲变量运算规则的两个特殊情况 ⑸字符串类型:String⑹关于进制

⑴关键字和保留字

●关键字(keyword)的定义和特点

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写

●保留字(reserved word)

Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字

goto 、const

⑵标识符(Identifier)

●标识符:

Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符技巧:凡是自己可以起名字的地方都叫标识符。

●定义合法标识符规则:

由26个英文字母大小写,0-9,_或$组成。数字不可以开头。不可以使用关键字和保留字,但能包含关键字和保留字。Java中严格区分大小写,长度无限制。标识符不能包含空格。

●Java中的名称命名规范:

包名:多单词组成时所有字母都小写:xxxyyyzzz类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

⑶变量以及基本数据类型

●变量的概念:

内存中的一个存储区域该区域的数据可以在同一类型范围内不断变化变量时程序中最基本的存储单元。包含变量类型、变量名和存储的值。

●变量的作用:

用于在内存中保存数据

●使用变量注意:

Java中每个变量必须先声明,后使用使用变量名来访问这块区域的数据变量的作用域:其定义所在的一对{ }内变量只有在其作用域内才有效同一个作用域内,不能定义重名的变量

●声明变量:

语法:<数据类型> <变量名称>例如:int var;.

●变量的赋值:

语法:<变量名称> = <值>例如:var = 10;

●声明和赋值变量:

语法:<数据类型> <变量名> = <初始化值>例如:int var = 10;

●变量的分类—按数据类型

●变量的分类—按声明的位置的不同

整数类型:byte、short、int、long
Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long

public static void main(String[] args) {//整型:byte(1字节=8bit)\short(2字节)\int(4字节)\long(8字节)//byte的范围:-128~127//short的范围:-32768~32767//int的范围:-2147483648 ~ 2147483647//long的范围:-9223372036854774808 ~ 9223372036854774807byte b1=12;//byte b2=128; 编译不通过System.out.println(b1);//System.out.println(b2);//声明long行变量,必须以l或"L"结尾long l1= 2147483648L;System.out.println(l1);}

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

如果直接将一个较小的整数常量(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数常量当成byte或者short类型处理。如果使用一个巨大的整数常量(超出int类型的表数范围时),Java不会自动把这个整数常量当成long类型来处理。如果希望系统把一个整数常量当成long类型来处理,应在这个整数常量后加l或者L作为后缀。通常推荐使用L,因为字母l很容易根数字1搞混。

浮点类型:float、double
与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响浮点型常量有两种表示形式: 十进制数形式:如:5.12 512.0f .512 (必须有小数点)科学计数法形式:如:5.12e2 512E2 100E-2

注意:aEb 也可以写成 aeb 表示a*(10^b)其中a,b可正可负float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。double:双精度,精度是float的两倍。通常采用此类型。Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。

说明:Java的浮点数遵循IEEE745标准,采用二进制数据的科学计数法来表示浮点数,对应float型数值,第1位是符号位,接下来8位表示指数,再接下来的23位表示尾数;对于double类型数值,第一位也是符合位,接下来的11位表示指数,再接下来的52位表示尾数。

public static void main(String[] args) {//如果是整数后面只有一位小数double d1=12;//输出12.0float d2=12f;//输出12.0//小数点后可以保留16位double d3=4.0/3;//输出1.3333333333333333//小数点后可以保留7位//此处涉及一些浮点数的精度问题,回头看。float d4=(float) (4.0/3);//输出1.3333334System.out.println(d1);System.out.println(d2);System.out.println(d3);System.out.println(d4);}

▲此处涉及浮点数的精度问题,回头在了解。

字符型:char
char 型数据用来表示通常意义上“字符”(2字节)Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。字符型变量的三种表现形式: 字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。

转义字符有:

说明:

char类型的值可以直接作为整数类型的值来使用,但它是一个16位的无符号整数,即全部是正数,表数范围是0~65535。如果把0~65535范围内的一个int整数赋给char类型变量,系统会自动把int整数当成char类型处理,如果直接输出的话会直接输出该数字对应的字符。

public class CharacVariable {public static void main(String[] args) {/*字符型:char(1字符=2字节)* 定义char型变量,通常使用一对'',内部只能写一个字符*/char c1='a';//编译不通过//c1='ab';System.out.println(c1);char c2='1';char c3='中';char c4='せ';/** 表示方式* ①声明一个字符* ②转移字符* ③直接使用Unicode值*/char c5='\n';//换行符c5='\t';//制表符System.out.print("hello"+c5);System.out.println("world");//helloworldchar c6='\u0043';System.out.println(c6);//输出C/*转义字符:* ①\"---双引号* ②\'---单引号使用* ③\\---反斜线的使用*///此时\n换行System.out.println("你归来是诗 离去成词 且笑风尘不敢造次\n 我糟糠能食 粗衣也认 煮酒话桑不敢相思 ");//此时\\n就是输出\nSystem.out.println("你若撒野 今生我把酒奉陪 只道君心不美日夜东流水\\n ​");//此时用双引号强调隐疾二字System.out.println("你是我终生求医不得的\"隐疾\" 始于一见钟情 终于挫骨扬灰");//此时用单引号强调泪字System.out.println("山高不识东南北 左也是西 右也是西 回首长安\'泪\'双滴");}}

运行结果:

字符集
了解:ASCII 码

了解:Unicode 编码

了解: UTF-8

布尔型:boolean

●boolean 类型用来判断逻辑条件,一般用于程序流程控制:

if条件控制语句;while循环控制语句;do-while循环控制语句;for循环控制语句;

●boolean类型数据只允许取值true和false,无null。

不可以使用0或非 0 的整数替代false和true,这点和C语言不同。Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示。———《java虚拟机规范 8版》

public class BooleanVariable {public static void main(String[] args) {//只能取两个值之一:true、false//常常在条件判断、循环结构中使用boolean bb1=true;System.out.println(bb1);//true;}}

⑷基本数据类型转换

自动类型转换
容量小的类型自动转换为容量大的数据类型(就如同有两瓶水,当把小瓶里的水倒入大瓶中是不会有任何问题)。数据类型按容

量大小排序为:

整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

为什么要先转为int呢?或者说为什么short+short不能用short类型变量来接收(同理byte)?

自己理解:因为我们平常使用int行就能够满足,而定义byte、short、char会经常出现short+short(同理byte)超出short如果我们用short接收可能编译可以通过,运行时可能出错,所以就要求编译时用int接收,避免运行时超出范围。

boolean类型不能与其它数据类型运算。当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。

当然还有以下的这种情况,这种情况是因为我们在进行赋值运算的时候,java编译器可以明确知道运算的结果是否超过byte或short或char的取值范围,所以 byte a = 2+2 ; 并没有报错。byte c = a + b; 编译出错的原因是因为a和b均为一个变量,相加的结果是否会超过byte的取值范围编译器并不知道,所以编译器将结果提升为int型了。

package com.shangguigu.variable;/*** * @author 刘瘦瘦* 基本数据类型之间的运算规则:* 前提:这里讨论只是7中基本数据类型变量间的运算。不包含boolean* 1、自动类型提升:* 结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。* byte、short、char(它们三个不分先后)-->long-->float-->double(虽然float四个字节但比long八个字节表示的范围还要大)* 特别地:当byte、char、short三种类型的变量做运算时,结果为int* 说明:此时的容量大小指的是,表示数的范围的大小。比如float容量要大于long的容量* * * 2、强制类型转换:* * * * */public class BasicDataTypeConversion {public static void main(String[] args) {byte b1=2;int i1=129;//编译不通过//byte b2=b1+i1;int i2=b1+i1;long l1=b1+i1;System.out.println(i2);//131System.out.println(l1);//131float f=b1+i1;System.out.println(f);//131.0byte s1=127;double d1=s1;System.out.println(d1);//127.0/********************************/char c1='a';//97int i3=10;int i4=c1+i3;System.out.println(i4);//此组编译不通过的原因是:byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。short s2=10;//char c2=c1+s2;//编译不通过,说明不能用char接收char和short的运算byte b2=10;//char c3=c1+b2;编译不通过 说明char不能接收byte和char的运算//short s3=b2+s2;编译不通过//short s4=b1+b2;编译不通过}}

强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。 如: String a = “43”; int i = Integer.parseInt(a) boolean类型不可以转换为其它的数据类型。

public class ForceTypeConversion {public static void main(String[] args) {double d1=12.9;//精度损失举例1int i1=(int)d1;//截断操作System.out.println(i1);//输出12//没有精度损失long l1=123L;short s2=(short)l1;//精度损失举例2int i2=128;byte b=(byte)i2;System.out.println(b);//-128}}

▲变量运算规则的两个特殊情况

public class VariableParticularSituation {public static void main(String[] args) {//1.编码情况1long l=123123;//不加L也可以,相当于后面是个int型变量,发生了自动类型转换System.out.println(l);//编译失败,过大的整数,因为整型常量默认是int型(拿四个字节去存),超过了int的范围,就报错了//加上了L就会拿八个字节去存。//long l1=2112316163469165646513;long l2=211231589165646513L;/******************************///编译失败:浮点型默认是double,不像上面的可以发生自动类型转换//float f1=12.3;正确情况为:float f1=12.3F;float f2=(float)12.3;//2.编码错误2://整型常量,默认类型为int型//浮点型常量,默认类型为duble型byte b=12;//编译错误//byte b1=b+1;//后面是int型//float f1=b+12.3;//编译失败}}

⑸字符串类型:String

String不是基本数据类型,属于引用数据类型。使用方式与基本数据类型一致。例如:String str = “abcd”;一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如:

str = str + “xyz” ; int n = 100;str = str + n;

/*** * @author 刘瘦瘦* 1.String属于引用数据类型* 2.声明String类型变量时,声明一对""* 3.String可以和8种数据类型变量做运算,且运算只能是连接运算:+* 4.运算的结果仍然是String类型**/public class StringVariable {public static void main(String[] args) {String s1="hello World";System.out.println(s1);String s2="a";String s3="";//char c='';//编译不通过,必须得有一个字符/***********************/int number=100;String numberStr="学号";String info=numberStr+number;//+:连接运算符boolean b1=true;String info1=info+b1;//+连接运算符System.out.println(info1);/************************///练习1char c='a';//97 A:65int num=10;String str="hello";System.out.println(c+num+str);//107helloSystem.out.println(c+str+num);//ahello10System.out.println(c+(num+str));//a10helloSystem.out.println((c+num)+str);//107helloSystem.out.println(str+num+c);//hello10a//练习2//打印 **System.out.println("**");//**System.out.println('*'+'\t'+'*');//93System.out.println('*'+"\t"+'*');//**System.out.println('*'+'\t'+"*");//51*System.out.println('*'+('\t'+"*"));//**/******************///String str1=123;//编译不通过String str1=123+"";System.out.println(str1);//"123"//int num1=str1;//int num1=(int)str1;int num1=Integer.parseInt(str1);System.out.println(num1);//123}}

⑹关于进制

/*** * @author 刘瘦瘦* * ●所有数字在计算机底层都以二进制形式存在。* ●对于整数,有四种表示方式:* ①二进制(binary):0,1 ,满2进1.以0b或0B开头。 ②十进制(decimal):0-9 ,满10进1。 ③八进制(octal):0-7 ,满8进1. 以数字0开头表示。 ④十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0*/public class Jinzhi {public static void main(String[] args) {int num1=0b110;int num2=110;int num3=0127;int num4=0x110A;//都以十进制输出System.out.println("num1="+num1);//num1=6System.out.println("num2="+num2);//num2=110System.out.println("num3="+num3);//num3=87System.out.println("num4="+num4);//num4=4362}}

●进制间的转换,让二进制作为中间变量

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。