%02 java_02 java语言基础

常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量

进制:

02.01_Java语言基础(常量的概述和使用)

A:什么是常量

在程序执行的过程中其值不可以发生改变

B:Java中常量的分类

字面值常量

自定义常量(面向对象部分讲)

C:字面值常量的分类

字符串常量 用双引号括起来的内容

整数常量 所有整数

小数常量 所有小数

字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号

布尔常量 较为特殊,只有true和false

空常量 null(数组部分讲解)

D:案例演示

用输出语句输出各种常量。null不演示

案例:

class Demo1_Constant { //constant 常量

public static void main(String[] args) {

/*

字符串常量 用双引号括起来的内容

整数常量 所有整数

小数常量 所有小数

字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号

布尔常量 较为特殊,只有true和false

空常量 null(数组部分讲解)

*/

System.out.println("abc"); //字符串常量“”之间可以是空的

System.out.println(123); //整数常量

System.out.println(12.3); //小数常量

//System.out.println('10'); //''中必须放的是单个字符,10代表的是1字符和0字符,所以是错的

//System.out.println(''); //''中什么也不放,是不可以的,因为代表不了任何字符

System.out.println(' '); //带表空格字符

System.out.println(true); //boolean类只有两个值,true和false

System.out.println(false);

}

}

02.02_Java语言基础(进制概述和二,八,十六进制图解)

A:什么是进制

进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

例如一周有七天,七进制,一年有十二个月,十二进制

B:十进制的由来

十进制的由来是因为人类有十个手指

C:二进制的由来

其实二进制来源与中国,请看史料记载

18世纪德国数理哲学大师莱布尼兹从他的传教士朋友鲍威特寄给他的拉丁文译本《易经》中,读到了八卦的组成结构,惊奇地发现其基本素数(0)(1),即《易经》的阴爻yao- -和__阳爻,其进位制就是二进制,并认为这是世界上数学进制中最先进的。20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,其运算模式正是二进制。它不但证明了莱布尼兹的原理是正确的,同时也证明了《易经》数理学是很了不起的。

D:八进制的由来

任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。

所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。

E:十六进制的由来

但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。

F:不同进制表现同一个数据的形式特点

进制越大,表现形式越短

容量的转换 1byte = 8bit

* 1024byte = 1k

* 1024k = 1m

* 1024m = 1g

* 1024g = 1t

6024651.html

02.03_Java语言基础(不同进制数据的表现形式)

A:二进制的数据表现形式

由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)

B:八进制的数据表现形式

由0,1,…7组成。以0开头

C:十进制的数据表现形式

由0,1,…9组成。整数默认是十进制的

D:十六进制的数据表现形式

由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

E:案例演示

输出不同进制表现100的数据。

0b100

0100

100

0x100

案例:

class Demo1_Scale { //scale 进制

public static void main(String[] args) {

/*

0b100

0100

100

0x100

*/

System.out.println(0b100); //4? 二进制表示形式前面加0b(b可以大写也可以小写)

System.out.println(0100); //64? 八进制表示形式前面加0

System.out.println(100);

System.out.println(0x100); //256? 十六进制表示形式前面加0x(可以大写也可以小写)

}

}

02.04_Java语言基础(任意进制到十进制的转换图解)

A:任意进制到十进制的转换原理

系数:就是每一位上的数据。

基数:X进制,基数就是X。

权:在右边,从0开始编号,对应位上的编号即为该位的权。

结果:把系数*基数的权次幂相加即可。

B:画图练习

二进制–十进制

八进制–十进制

十六进制–十进制

6024651.html

02.05_Java语言基础(十进制到任意进制的转换图解)

A:十进制到任意进制的转换原理

除积倒取余

*除以基数得到余数直到商为零,对所得余数倒序反转。

B:画图练习

十进制–二进制

十进制–八进制

十进制–十六进制

6024651.html

02.06_Java语言基础(快速的进制转换法)

A:8421码及特点

8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。

B:通过8421码的方式进行二进制和十进制的相互转换

C:二进制到八进制的简易方式

D:二进制到十六进制的简易方式

可以先转化成十六进制再转换二进制

6024651.html

02.07_Java语言基础(原码反码补码)

A:为什么要学习原码反码补码?计算机中都存补码

后面要学习强制类型转换,如果不知道有原反补会看不懂结果

B:有符号数据表示法的几种方式

原码

就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

通过一个字节,也就是8个二进制位表示+7和-7

0(符号位) 0000111

1(符号位) 0000111

反码

正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码

正数的补码与其原码相同;负数的补码是在其反码的末位加1。

02.08_Java语言基础(原码反码补码的练习)

A:已知原码求补码

0b10110100

B:已知补码求原码

0b11101110

6024651.html

原码与补码快速转化,从最后一位起找到第一个1,1以及其后面的东西都不变,左边的取反,符号位不变,

02.09_Java语言基础(变量的概述及格式)

A:什么是变量

在程序执行的过程中,在某个范围内其值可以发生改变的量

B:变量的定义格式

数据类型 变量名 = 变量值;

C:为什么要定义变量

用来不断的存放同一类型的常量,并可以重复使用

6024651.html

02.10_Java语言基础(数据类型的概述和分类)

A:为什么有数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间

B:Java中数据类型的分类

基本数据类型

引用数据类型

面向对象部分讲解

C:基本数据类型分类(4类8种)

整数型

byte 占一个字节 -128到127

short 占两个字 -2^15~2^15-1

int 占四个字节 -2^31~2^31-1

long 占八个字节 -2^63~2^63-1

浮点型

float 占四个字节 -3.403E38~3.403E38

double 占八个字节-1.798E308~1.798E308

字符型

char 占两个字节 0~65535

布尔型

boolean

boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小

02.11_Java语言基础(定义不同数据类型的变量)

A:案例演示

定义不同基本数据类型的变量,并输出

赋值时候注意float类型,long类型

整数给long赋值时,数据后面加L

小数给float赋值时,数据后面加f

案例:

class Demo1_DataType { //DataType数据类型

public static void main(String[] args) {

//整数类型

byte b = 10; //占一个字节,-128 到 127

short s = 20; //占两个字节

int i = 30; //占四个字节 整数默认的数据类型就是int类型

long x = 8888888888L; //占八个字节 如果不加L系统默认为int类型,如果这个数值不在int的范围之内就会报错,如果long类型后面加L进行标识最好加大L,因为小l太像一了

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(x);

//System.out.println(12345 + 54321l);

//浮点类型

float f = 12.3F; //占四个字节如果不加认为是double型,损失精度会报错,

double d = 33.4; //占八个字节 小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加

System.out.println(f);

System.out.println(d);

//字符类型

char c = 'a'; //占两个字节

System.out.println(c);

//布尔类型

boolean b1 = true;

boolean b2 = false;

System.out.println(b1);

System.out.println(b2);

}

}

02.12_Java语言基础(使用变量的注意事项)

按照作用范围分为局部变量(方法内定义的变量),成员变量(类内,方法外定义的变量)

实参,形参(按照调用与被调用)

A:案例演示

a:作用域问题

同一个区域不能使用相同的变量名

b:初始化值问题

局部变量在使用之前必须赋值(我们现在所使用的变量都是局部变量,因为都是定义在方法中的)

c

class Demo2_DataType {

public static void main(String[] args) {

/*int x = 10;

int x = 20;

System.out.println(x);

int y;

y = 10;

System.out.println(y);*/

int a,b,c,d,e;

a = 10;

b = 20;

c = 30;

d = 40;

e = 50;

System.out.println(a);

int x = 10;

int y = 20;

int z = 30;

}

}

02.13_Java语言基础(数据类型转换之隐式转换)

A:案例演示

a:int + int

b:byte + int

B:Java中的默认转换规则

取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算

C:画图解释byte+int类型的问题

案例:

class Demo3_DataTypeConversion { //Conversion转换

public static void main(String[] args) {

//数据类型转换之隐式转换

/*int x = 3;

byte b = 4;

x = x + b;

System.out.println(x);*/

//数据类型转换之强制转换

/*int x = 3;

byte b = 4;

b = (byte)(x + b);

System.out.println(b);*/

//00000000 00000000 00000000 10000010 130的二进制

//10000010 -126补码

//00000001 -1求反码

//10000001 -126反码

//11111110 -126原码

byte b = (byte)(126 + 4);

System.out.println(b);

//00000000 00000000 00000001 00101100 300的二进制

//00101100

byte b2 = (byte)300;

System.out.println(b2);

}

}

6024651.html

02.14_Java语言基础(数据类型转换之强制转换)

A:强制转换问题

int a = 10;

byte b = 20;

b = a + b;

B:强制转换的格式

b = (byte)(a + b); b=(byte)a+b是错误的,因为所有的数据都是先转化成int再参与运算,b变成int,算出的结果是int的,与b相加之后还是int,赋给b这个byte类型的变量就发生错误;

C:强制转换的注意事项

如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同

byte类型的数据的取值范围:-128-127之间

6024651.html

案例:

class Demo3_DataTypeConversion { //Conversion转换

public static void main(String[] args) {

//数据类型转换之隐式转换

/*int x = 3;

byte b = 4;

x = x + b;

System.out.println(x);*/

//数据类型转换之强制转换

/*int x = 3;

byte b = 4;

b = (byte)(x + b);

System.out.println(b);*/

//00000000 00000000 00000000 10000010 130的二进制

//10000010 -126补码

//00000001 -1求反码

//10000001 -126反码

//11111110 -126原码

byte b = (byte)(126 + 4);

System.out.println(b);

//00000000 00000000 00000001 00101100 300的二进制

//00101100

byte b2 = (byte)300;

System.out.println(b2);

}

}

6024651.html

?02.15_Java语言基础(面试题之变量相加和常量相加的区别)

A:案例演示

面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

byte b1 = 3;

byte b2 = 4;

byte b3 = b1 + b2;

从两方面去回答这个题

b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值,相加可能超出byte的取值范围;

2.byte类型的变量在进行运算的时候,会自动类型提升为int类型 ,不能直接赋值到byte类型的数值b3中

byte b4 = 3 + 4;相当于b4=7;

3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了

案例:

class Test1_DataTypeConversion {

public static void main(String[] args) {

//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

byte b1 = 3;

byte b2 = 4;

//byte b3 = b1 + b2;

/*

从两方面

1,byte与byte(或short,char)进行运算的时候会提升为int(因为整数默认的类型为int),两个int类型相加的结果也是int类型

2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围

*/

//System.out.println(b3);

//byte b4 = 3 + 4; //java编译器有常量优化机制,在编译的时候就把3+4的结果计算出来了,

byte b4 = 7; //以判断7在-128至127之间

System.out.println(b4);

}

}

进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的

byte,short,char – int – long – float – double(依次向右提升)

long: 8个字节

float:4个字节

IEEE754

4个字节是32个二进制位

1位是符号位

8位是指数位

00000000 11111111

0到255

1到254

-126到127

23位是尾数位

每个指数位减去127

A:它们底层的存储结构不同。

B:float表示的数据范围比long的范围要大

long:2^63-1

float:3.410^38 > 210^38 > 28^38 = 22^3^38 = 2*2^114 > 2^63-1

几个基本类型的取值范围如下:byte,short,char < int < long < float < double

案例:

class Test2_DataTypeConversion {

public static void main(String[] args) {

float f = 12.3f;

long x = 12345;

//f = x; //隐式转换

//System.out.println(f);

x = (long)f; //强制转换

System.out.println(x);

/

float占4个字节

IEEE 754

32个二进制位

1位代表是符号位

8位代表指数位

00000000 - 11111111

0 - 255

0代表0

255代表无穷大

1 - 254

-126 - 127

23位代表尾数位

*/

}

}

02.17_Java语言基础(字符和字符串参与运算)

A:案例演示

System.out.println('a');

System.out.println('a'+1);

通过看结果知道'a'的值是多少,由此引出ASCII码表

B:ASCII码表的概述

记住三个值:

'0' 48

'A' 65

'a' 97

C:案例演示

System.out.println("hello"+'a'+1);

System.out.println('a'+1+"hello");

D:+在有字符串参与中被称为字符串连接符

System.out.println("5+5="+5+5);

System.out.println(5+5+"=5+5");

案例:

class Demo4_DataTypeConversion {

public static void main(String[] args) {

//System.out.println('a' + 1); //98,因为有ASCII码表,a字符对应的是int类型的97

//字符型数据和整型数据进行运算会将字符提升为整型

//System.out.println((char)('a' + 1));//这里会打出b,System.out.println(char('a'+1));是错的为什么?

System.out.println("hello"+'a'+1); //结果helloa1 //任何数据类型用+与字符串相连接都会产生新的字符串

System.out.println('a'+1+"hello"); //结果98hello,按照优先顺序计算

System.out.println(" 5 + 5 = " + (5 + 5)); //结果是5+5=10;

System.out.println(" 5 + 5 = " + 5 + 5); // 结果是5+5=55

}

}

02.18_Java语言基础(char数据类型)

A:char c = 97; 0到65535

B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节

所以,Java中的字符可以存储一个中文汉字

案例:

class Demo5_Char {

public static void main(String[] args) {

char c = 'a';

System.out.println(c);

byte b = 100;

char c1 = 97; //0 - 65535

System.out.println(c1);

char c2 = 3;

char c3 = 4;

char c4 = 5;

char c5 = 6;

System.out.println(c2);

System.out.println(c3);

System.out.println(c4);

System.out.println(c5);

//char类型是否可以存储中文

char c6 = '中';

System.out.println(c6);

}

}

02.19_Java语言基础(算术运算符的基本用法)

A:什么是运算符

就是对常量和变量进行操作的符号。

B:运算符的分类

算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符

C:算数运算符有哪些

+,-,*,/,%,++,–

D:注意事项:

a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符

b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型

c:/获取的是除法操作的商,%获取的是除法操作的余数

%运算符

当左边的绝对值小于右边绝对值时,结果是左边

当左边的绝对值等于右边或是右边的倍数时,结果是0

当左边的绝对值大于右边绝对值时,结果是余数

%运算符结果的符号只和左边有关系,与右边无关

任何一个正整数%2结果不是0就是1可以用来当作切换条件

案例:

class Demo1_Operator { //operator 运算符

public static void main(String[] args) {

/*

a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符

b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型

c:/获取的是除法操作的商,%获取的是除法操作的余数

%运算符

当左边的绝对值小于右边绝对值时,结果是左边

当左边的绝对值等于右边或是右边的倍数时,结果是0

当左边的绝对值大于右边绝对值时,结果是余数

%运算符结果的符号只和左边有关系,与右边无关

任何一个正整数%2结果不是0就是1可以用来当作切换条件

*/

//System.out.println(10 / 3); //整数相除结果只能是整数

//System.out.println(10 / 3.0); //如果想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升

//System.out.println(-5 % 5);

System.out.println(13 % -5);

}

}

02.20_Java语言基础(算术运算符++和–的用法)

A:++,–运算符的作用

自加(++)自减(–)运算

++:自加。对原有的数据进行+1

–:自减。对原有的数据进行-1

B:案例演示

a:单独使用:

放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)

b:参与运算使用:

放在操作数的前面,(先自增或者自减),然后再参与运算。

放在操作数的后面,先参与运算,再自增或者自减。

案例:

class Demo2_Operator {

/*

a:单独使用:

放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)

b:参与运算使用:

放在操作数的前面,先自增或者自减,然后再参与运算。

放在操作数的后面,先参与运算,再自增或者自减。

/

public static void main(String[] args) {

//单独使用

/int a = 3;

//a++; //a = a + 1;

++a; //a = a + 1;

System.out.println(a);*/

//参与运算使用

int a = 3;

int b;

//b = a++; //当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1

b = ++a; //当++在变量前面的时候,会先自身加1,然后在将结果赋值

System.out.println("a = " + a);

System.out.println("b = " + b);

}

}

02.21_Java语言基础(算术运算符++和–的练习)

A:案例演示

请分别计算出a,b,c的值?

int a = 10;

int b = 10;

int c = 10;

a = b++;

c = --a;

b = ++a;

a = c--;

B:案例演示

请分别计算出x,y的值?

int x = 4;

int y = (x++)+(++x)+(x*10);

C:面试题

byte b = 10;

b++;

b = b + 1;

问哪句会报错,为什么

案例:

class Test1_Operator {

public static void main(String[] args) {

//第一题

/*int a = 10;

int b = 10;

int c = 10;

a = b++; //a = 10 ,b = 11

c = –a; //a = 9, c = 9

b = ++a; //a = 10, b = 10

a = c–; //a = 9, c = 8

System.out.println("a = " + a + ",b = " + b + ",c = " + c);*/

//第二题

/int x = 4;

// 4 + 6+ 60

int y = (x++)+(++x)+(x10);

System.out.println("x = " + x + ",y = " + y);*/

//第三题问哪句会报错,为什么

byte b = 10;

b++; //相当于b = (byte)(b + 1) 在进行++–运算时,系统会自动进行强制转换,

b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度

System.out.println("b = " + b);

}

}

02.22_Java语言基础(赋值运算符的基本用法)

A:赋值运算符有哪些

a:基本的赋值运算符:=

把=右边的数据赋值给左边。

b:扩展的赋值运算符:+=,-=,*=,/=,%=

+= 把左边和右边做加法,然后赋值给左边。

案例:

class Demo1_Operator {

public static void main(String[] args) {

//赋值运算符

int a = 3; //把右边的常量值赋值给左边的变量,左边必须是变量

//a += 4; //a = a + 4;

a = a + 4;

System.out.println(a);

}

}

02.23_Java语言基础(赋值运算符的面试题)

A:案例演示

面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

short s=1;s = s+1;

short s=1;s+=1;

案例:

class Test1_Operator {

public static void main(String[] args) {

// 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

//short s=1;s = s+1; //当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型

short s=1;s+=1; //s = (short)(s + 1);系统自动强制转换

System.out.println(s);

}

}

02.24_Java语言基础(关系运算符的基本用法及其注意事项)

A:关系运算符有哪些(比较运算符,条件运算符)

==,!=,>,>=,

注意事项:

无论你的操作是简单还是复杂,结果是boolean类型。

"=="不能写成"="。

案例:

class Demo1_Operator {

public static void main(String[] args) {

//==,!=,>,>=,

System.out.println(4 == 3);

System.out.println(4 != 3);

System.out.println(4 > 4);

System.out.println(4 >= 4);

System.out.println(4 < 3);

System.out.println(4 <= 3);

}

}

0b11001100

4.补充知识4:byte类型的数据范围:

正数最小值: 0 000 0001(+1)

正数的最大值:0 111 1111(+127)

0: 0 000 00000(0)

负数:

负数的最小值:1 111 1111(-127)

负数的最大值:1 000 0001(-1)

1 000 0000?表示什么呢?0111 11111+1

当用某种数据类型的正数的最大值+1之后,此时发生了一种情况,符号位变成了1,其余全是0

这样的话,此时的符号位1既代表符号位,又代表数值位(-128)

5.补充知识5:

对于整数而言,当超出int的范围赋值时,数字后面加L

对于小数而言,当给float类型赋值时要加F

int类型:2^31-1

cahr类型(无符号数,2个字节):2^16-1

7.根据变量的作用范围来分?

(1).局部变量:在方法声明上定义的变量或者在方法内部定义的变量,在整个方法内部有效

(2).成员变量(实例变量,类变量):

a.实例变量在类中方法外定义的变量(不用static修饰),在整个实例(对象)中有效

b.类变量在类中方法外定义的变量(用static修饰),在整个类中有效

8.调用和被调用

(1).形式参数:在方法声明时所定义的参数

(2).实际参数:在调用该方法时,所给定的实际的参数

9.利用/和%求出一个四位数字中的个位,十位,百位,千位上的数字并输出

class Demo1 {

public static void main(String[] args) {

int i = 12456;

int a1 =0, a2 =0, a3 = 0,a4 =0, a5 =0;

a1=i/10000;

a2=i%10000/1000;

a3=i%1000/100;

a4=i%100/10;

a5=i%10;

System.out.println("各位数是"+a5+",十位数是"+a4+",百位数是"+a3+",千位数是"+a2+",万位数是"+a1);

}

}

10.给定一个小写字母,将其变成大写字母并输出

/*

实现给出字母z,转换成大写字母Z然后打印出来

/

class Demo2 {

public static void main(String[] args) {

char c = 'z'; //注意'z'的写法,容易不加单引号

char c1 = (char)(c-32); //小写的字母值比大写的字母值更大

System.out.println(c1);

}

11.讲一下a = a++;

/

int a = 3;

int x = 0;

x = a++;//a=4, x=3

x = a++;//a=5, x=4

x = a++;//x=5,a = 6

System.out.println("x = "+x);

x = x++;

/先(x++)得出(x++)的值是5,然后进行赋值运算x=(x++),

所以x还是等于5,相当于先把x变为6,然后再次给他赋值成5,运算了两次,所以这种表达不管运算多少次都是原始值/

x = x++;

x = x++;

System.out.println("x = "+x);

*/

1.表达式:变量和运算符连接而成的式子如:a+b,a++,a–

2.x = a++;(里面有两个运算符++和=,但是++的优先级要高于=)

(1)是将(a++)表达式的值赋值给变量x,而不是将a的值赋值给变量x,所以我们要先计算a++表达式的值,由于++符号在a的后面,所以先使用a的值,

作为表达式的值,所以a++表达式的值是3

(2)进行++运算,a=a+1,a变成4,但是不管a的值变为了多少,都不会影响第(1)步中的表达式a++的值(3)

(3)进行赋值运算,将a++表达式的值(第一步已经算出来了3)赋值给x,x变为3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值