Java基础语法第2天

            第1章 变量

1.1 变量概述

什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水;你家里的大衣柜是容器,用来装载衣裤;饭盒是容器,用来装载饭菜。那么变量是装载什么的呢?答案是数据!结论:变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。

1.2 计算机存储单元

变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。换算公式:

1B(字节) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

扫描二维码关注公众号,回复: 1878993 查看本文章

1.3 基本类型之48

  大衣柜不能用来装载水,水杯也不能用来装载衣裤。这说明不同的容器装载不同的物品。变量也是如此,在创建变量时需要指定变量的数据类型,例如整型变量、浮点型变量等等。结论:变量必须要有明确的类型,什么类型的变量装载什么类型的数据。

Java中基本类型一共4类,把这4类展开后共8种基本类型。

四类

八种

字节数

数据表示范围

byte

1

-128~127

short

2

-32768~32767

int

4

-2147483648~2147483648

long

8

-263~263-1

浮点型

float

4

-3.403E38~3.403E38

double

8

-1.798E308~1.798E308

字符型

char

2

表示一个字符,如('a','A','0','家')

布尔型

boolean

1

只有两个值true与false

1.4 定义变量(创建变量)

定义变量的语法格式:

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

int      a    =  100;

其中int是数据类型,指定了变量只能存储整数,而且指定了存储范围为-21474836482147483648

其中a表示变量名,变量名是标识符,这说明只要是合法的标识符都可以用来做变量名。在程序中可以通过变量名来操作变量(内存中的小盒子)。

1.5 变量使用的注意事项

我们使用变量的时候需要注意,要满足变量的使用规则才可以使用的,我们来看看都有哪些注意事项。

l.变量使用的注意事项

1.变量定义后可以不赋值,使用时再赋值。不赋值不能使用。

public static void main(String[] args) {

int x;

x = 20; //x赋值20

System.out.println(x);//读取x变量中的值,再打印

}

2.变量使用时有作用域的限制。

public static void main(String[] args) {

int x = 20;

{

    int y = 20;

}

System.out.println(x);//读取x变量中的值,再打印

System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量(在同步代码块中,读取不到这个y)

}

3.变量不可以重复定义。

public static void main(String[] args){

      int x = 10;

      double x = 5.5;//编译失败,变量重复定义

}

1.6 数据类型转换

按照数据范围从小到大依次列出:

byte -> short -> int -> long -> float -> double

范围小的数据类型值(如byte),可以直接转换为范围大的数据类型值(如int);

范围大的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte

关于数据类型转换有两种方式:

l 自动类型转换

表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换

自动类型转换格式:

范围大的数据类型 变量 = 范围小的数据类型值;

如:

    double d = 1000;

    int i = 100;

    double d2 = i;

2 强制类型转换

表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换

强制类型转换格式:

范围小的数据类型  变量 = (范围小的数据类型) 范围大的数据类型值;

如:

int  i = (int)6.718;   //i的值为6

double  d = 3.14;

int  i2 = (int)d;     //i2的值为3

第2章 运算符

运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。

2.1 算术运算符

算术运算符最常见的操作就是将操作数参与数学计算,具体使用看下图:

运算符

运算规则

范例

结果

+

正号

+3

3

+

2+3

5

+

连接字符串

“中”+“国”

“中国”

-

负号

int a=3;-a

-3

-

3-1

2

*

2*3

6

/

5/2

2

%

取模

5/2

1

++

自增

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

2

--

自减

int b=3;a--/--a

2

我们在使用算术运算符时,记得要注意下列事项:

l 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。

l “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。

整数做被除数,0不能做除数,否则报错。

2.2 赋值运算符

我们来学习一下赋值运算符,赋值运算符就是为变量赋值的符号,赋值运算符的使用看下图:

运算符

运算规则

范例

结果

=

赋值

int a=2

2

+=

加后赋值

int a=2a+=2

4

-=

减后赋值

int a=2a-=2

0

*=

乘后赋值

int a=2a*=2

4

/=

整除后赋值

int a=2a/=2

1

%=

取模后赋值

int a=2a%=2

0

总结:

知识点总结

数据类型转换

数据类型范围从小到大排序(byte < char < short < int < long < float < double),布尔类型Boolean不能参与类型转换;

l 自动类型转换,范围小的数据类型向范围大的数据类型转换时使用;

l 强制类型转换,范围大的数据类型向范围小的数据类型转换时使用。

l 算数运算符

l 用来完成算数运算(如加减乘除计算等)

l ++,--运算符的使用

l ++,--前置(如++a),当参与运算时,变量a的值先自增1,然后用自增后的新值再参与运算;

l ++,--后置(如a++),当参与运算时,变量a先使用原有值参与运算符,变量a的值再自增1。

l 赋值运算符

用来完成数据的赋值(如 int a = 100;)

l +=,-,*=,/=这样的赋值运算符包含了一个强制转换的操作,会将左右两边运算后的结果,强制类型转换后赋值给左边

int n = 10;

byte by = 20;

by += n; // 运算完毕后,by的值为byte类型30, 相当于代码 by = (byte)(by + n);

l 比较运算符

用来比较数据的大小(如 3>4),比较运算符也称为条件运算符。

比较后的结果为布尔类型Boolean的值

l “==”两个等号代表比较是否相等,“=”一个等号代表赋值。

l 逻辑运算符

逻辑与& 和逻辑短路与&&:代表着并且的意思,左右两边都要条件成立,结果才为true;

逻辑或| 和逻辑短路或||:代表着或者的意思,左边两边有一个条件成立,结果就为true;

逻辑非!:代表着相反的意思,原先是false,结果就为true;原先是ture,结果就为false;

逻辑异或^: 左右两边条件结果相同,结果就为false,左右两边条件结果不同,结果就为true;

三元运算符

根据判断条件运算结果,执行不同的表达式值;条件为true,执行表达式1,否则,执行表达式2。

作业题
1.什么是变量?变量的定义格式?要使用变量需要注意什么?
就是可变的量
数据类型 变量名 = 数值;
同一范围内不能重复定义
不赋值不能使用

2.Java中的数据类型分几类?基本数据类型有哪些?
两大类
基本数据类型
byte(1) short(2) int(4) long(8) float(4) double(6) char(2) boolean(1)
引用数据类型
类 接口 数组 枚举

3.数据类型转换:
隐式转换:由低级专向高级
强制转换:由高级专向低级

面试题:
第一题:
byte b1=3,b2=4,b;
b=b1+b2;//错误 因为他们最终是要转向int类型 而int类型的值不能赋值给byte
b=3+4;//正确 因为他们都是常量 具有常量类型优化机制 可以直接识别为byte
哪句是编译失败的呢?为什么呢?

第二题:
byte  by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题 因为这个数超出了byte的取值范围 要用byte类型进行强制转换 结果是-126

第三题:
byte b = 10;
b++;
b = b + 1;//失败 因为在和一个int类型的常量进行相加的时候b自动转换成int类型 而一个int类型的数据是没办法直接赋值给byte类型的变量的哪句是编译失败的呢?为什么呢?
4.常见的算术运算符有哪些?
答:+ - * / %
(1)+运算符的作用有哪些?
可以作为数学运算符 也可用作字符串拼接符
(2)除法和取余的区别?
除法是数学运算机型相初操作 取余数运算符是对除法操作之后取其余数进行操作的
(3)++和--的使用规则?
分别为自增 自减 在放在 变量前面就是先进行运算放在后面就是后进行运算
5.常见的赋值运算符有哪些?
答:= += -= *= /= %=
(1)+=运算的作用是什么?
a += b;== a = a + b;
(2)扩展的赋值运算符有什么特点?
会进行自动强制数据类型转换
6. short s = 1; s = s + 1;有没有问题?如果有怎么解决?
有问题 因为short类型的专用字节数比int小 但是1是int类型 在表达式进行运算的时候就吧其值提升为int类型了 而int类型不能直接赋值给short类型的变量可以同过强制数据类型转换来解决short s = 1; s += 1;有没有问题?如果有怎么解决?
没有问题 因为使用的是扩展赋值运算符 这样的话就会实现自动强制数据类型转换
7.分析以下需求,并用代码实现:
(1)已知一个三位数,请分别获取该三位数上每一位的数值
代码1:
// String.valueOf转化成字符串,toCharArray()把字符串转成字符数组
char ch[]=String.valueOf(new Scanner(System.in).nextInt()).toCharArray();
System.out.println("百位数是:"+ch[0]+"\n"+"十位数是:"+ch[1]+"\n"+"个位数是:"+ch[2]);
代码2:
System.out.println("个位是:" + (354 % 10) + "\n十位是:" + (354 / 10 % 10) + "\n百位是:" +(354 / 100));

(2)例如:123的个位、十位、百位,分别是3、2、1
(3)打印格式"数字123的个位是 3, 十位是 2, 百位是 1"

8.看程序说结果,请不要提前运行?
public class Test1 {
public static void main(String[] args) {
int x = 4;
int y = (--x)+(x--)+(x*10);//26 3+3+(2*10)
System.out.println("x = " + x + ",y = " + y);
}
}


x = 2
y = 26











猜你喜欢

转载自blog.csdn.net/qq_39380737/article/details/80894501