_02_Java程序基础之变量与运算符

一、概述
开发规范
Java严格区分大小写,public与Public是不一样的。
一个文件建议只定义一个类,且在类定义前面加public,文件名与类名要严格一致。如果一个文件中定义了多个类,只能有一个类前面加public,而且文件名必须与加public的类名严格一致。
Java Application程序的入口是main方法,即public static void main(String[] args) {}。写法固定,错一个字母也不行,大小写也要严格一致。包含main方法的类必须前面加public。
运行机制
结合上面的hello world程序讲解。
我们的源文件是.java文件,它是不能运行的,必须通过javac 编译为.class文件后才能运行。
java命令后面跟的必须是类名,不要再加.class。
这时,Java会寻找对应的.class文件(又叫类文件,字节码文件),找到对应的public类(主类),在主类中找入口方法main方法,找到后,开始从上向下执行main方法中的语句。语句以英文分号结束,语句对应着字节码指令。比如,System.out.println(“hello world”);这条语句的作用就是将字符串hello world输出到标准输出(即命令提示符的窗口中)。
二、程序基础
标识符、关键字、保留字
规则(强制与非强制)
标识符 : 标识符就是用于给程序中的变量、类、方法命名的符号。标识符可以由编程人员自由定义,但需要遵循一定的命名规则(强制和非强制)。
强制规则:
严格区分大小写
只能是 字母、数字、下划线_、美元符号$
数字不能开头
不能使用关键字保留字
非强制规则:
驼峰规则。见名知义。
关键字,Java语言中用以特殊用途而预占用的单词或标识符称之为关键字,Java中的关键字均为小写。保留字也是关键字,只是现在未投入使用
关键字 :

class extends implements interface
package break case continue
do if else for
switch while false true
boolean byte char short
long float double try
throw throws finally abstract
native private protected public
synchronized transient volatile instanceof
super void assert enum
const
除了上面表格中,goto和const为Java语言中的两个保留字。保留字是指预留的还未被使用的关键字,但可能在将来的版本中使用

基本类型
数据类型是为了把数据分成所需内存大小不同的数据,编程的时候需要用大的数据才申请大内存,这样可以充分利用内存。
Java语言是一种强类型语言,要求所有变量先声明后使用。目的就是为了保证变量或者表达式在编译时就能够确定其类型,并为其分配相应的内存。

分类 :
在这里插入图片描述
2.1整型
2.1.1 Java整型
byte/short/int/long
2.1.2整型取值范围
Java语言整数型默认为int类型,如果要声明成long类型在值后加入L,如:long l = 123L
类型 占用存储空间字节数 数值范围
byte 1 -128~127
short 2 -2的15次方2的15次方-1(-3276832767)
int 4 -2的31次方~2的31次方-1
long 8 -2的63次方~2的63次方-1

2.1.3 Java整型常量的三种表示方法
十进制:如123=1100+210+31=123
八进制,八进制0开头:如:013=1
8+31=11
十六进制,十六进制0x开头:如:0x23=2
16+3*1=35

【进制转换】
10进制到二进制
示例:求十进制数10的二进制
6/2=3 余 0
3/2=1 余 1
1/2=0 余 1
将余数逆序输出就是6的二进制表示:110,位数不够补零
二进制到十进制
示例:求二进制110的十进制
规则:取出最后一位,从2的0次方开始乘,将得到的结果相加即可
02的0次方=0
1
2的1次方=2
1*2的2次方=4
110的十进制为:0+2+4=6
八进制与二进制、十进制转换类同
2.2浮点型
2.2.1 Java浮点型
float/double
2.2.2两种表示形式
十进制形式:例如:123.456 0.314
科学计数法:例如:1.23456E2 3.14E-1
2.2.3 Java浮点型取值范围
浮点声明默认是double类型,若要是float,请在尾部添加f或是F。如:float myFloat=1.23
类型 占用存储空间字节数 数值范围
float 4 -3.4E38 ~ 3.4E38
double 8 -1.7E308~ 1.7E308
2.3布尔型
适用于逻辑运算,用于程序流程控制
只允许取值为true,false,不可以任何其它形式代替
[示例]
boolean real=true; //正确
boolean notReal=false; //正确
boolean read2=1; //错误
boolean notReal2=0; //错误
2.4字符型
2.4.1 Java字符型
通常意义上的字符,用单个引号括起来的单个字符
如’1’,‘a’,‘b’等等
Java采用Unicode编码(即为全球统一语言编码),均可以用十六进制表示编码值
char c = ‘\u0012’;
转义字符,用’\n’来表示,即为转变之前的意义,但依然是个字符
char c=’\n’; //表示换行符
3.基本类型转换

布尔类型不能与其它类型做任何转换
数值型、字符型可以相互转换,规则如下:
容量小的自动转换成表示范围容量大的,但byte,short,char不能相互转换,均转化成int做计算,当然byte b = 1;short s = b; 这样转换不会报错,因为会先转为int 默认转换为short, byte b = 1; 这和时候1其实是int的字面量,只不过这样可以直接转为byte和short,但是不能把int变量直接赋值给byte和short
容量大小排序为:byte,char,short<int<long<float<double
容量大转换为容量小的,要加强制转换符,此时容易丢失精度
多类型混合运算时,系统会自动转换成统一类型(大容量数据)后再进行计算,即先类型转换后计算

【问】:能否演示一下基本类型之间的转换
1.演示byte,short,char运算会转成int
2.演示大容量和小容量数据运算会先统一类型

变量、常量
变量分类(按作用范围)
数据类型、变量名、值、作用范围(作用域)。
按作用范围,变量分为
局部变量,实例变量(又叫属性、字段、域),类变量(又叫静态变量)。
常量,分为
字面量(又叫直接量)。像1、”1”这样的。
和 final修饰的”变量”。

二、程序基础
1.运算符
释义
用于表示数据的运算、赋值和比较的一系列符号我们称之为运算符。
分类
运算符按功能划分如下:
运算符类型 运算符
算术运算符 +,-,*,/,++,–,%
关系运算符 <,<=,>,>=,==,!=
布尔运算符 &&, ||,&,|,!,^
位运算符 &,|, ~,^,>>
赋值类运算符 =, +=, -=, *=, /=, %=
字符串连接运算符 +
条件运算符(三目运算符) ? :
其他运算符 instanceof,new

1.1算术运算符
类型 描述 示例
++(自加运算符) ++在变量前面时,先做运算后赋值 i = 1, j; j = ++i; 则j=2;
++在变量后面时,先做赋值后运算 i = 1, j; j = i++; 则 j = 1

–(自减运算符) 同上 i = 1, j; j = - -i; 则 j = 0;
i = 1, j; j = i- -; 则 j = 1;

1.2关系运算符
注意 ‘==’关系运算,其意义为全等,基本数据类型比较值,引用数据类型比较地址

1.3逻辑运算符
与 &:两个操作数相与,如果都为true,则为true
或 |:两个操作数相或,有一个为true,则为true
异或 ^:相异为true,两个操作数不一样就为true,相同为false

短路&& 和 逻辑& 区别?
1.短路与,从第一个操作数推断结果,只要有一个为fase,不再计算第二个操作数
2.逻辑与,两个操作数都计算

短路|| 和 逻辑| 区别?
1.短路或,从第一个操作数推断结果,只要有一个为true,不再计算第二个操作数
2.逻辑或,两个操作数都计算

1.4赋值运算符
注意
1)当 “=” 两侧数据类型不一致时,适用默认转换或强制转换处理,如long num=20;int i=(int)num;
2)特殊情况为:当byte,char,short被整赋值时,不需要进行强制类型转换,不超过取值范围即可。即一个自动装载的过程。
char c=100;byte b=20; //正确
char c2=-99999;byte b2=128; //类型越界错误

运算符 用法 c
+= a+=b a=a+b
-= a-=b a=a-b
= a=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b

1.5字符串连接运算符
"+" 可用于数值计算,当有一方是字符时,则为将左右两个数据转化成字符串连在一起。如int i=10+20;String j=“10”+“20”。
当" +" 任意一侧为字符串时,系统将自动将两侧转化成字符串,做字符串链接操作。
当进行System.out.println(var)打印操作的时候,均自动转化为字符串进行输出。

1.6运算优先级
优先级 运算符分类 结合顺序 运算符
由高到低 分隔符 左结合 . [] ( ) ; ,
一元运算符 右结合 ! ++ – - ~
算术运算符
移位运算符 左结合 * / % + -
<< >>
关系运算符 左结合 < > <= >= instanceof == !=
逻辑运算符 左结合 ! && || ~ & | ^
三目运算符 右结合 布尔表达式?表达式1:表达式2
赋值运算符 右结合 = *= /= %= += -= <<= >>= >>= &= *= |=

【问】:做一道综合性强点的练习题,感受感受运算符优先级怎么样?
int a = 5;
int b = 4;
int c = a++ - --b * ++a / b-- >> 2 % a–;
c的值是多少?
2.表达式
表达式是指由(常量、变量、操作数)与运算符所组合而成的语句。
符合语法规则的运算符+操作数,即为表达式,如:5+3,2.0+3.0,a+b,3%2
表达式最终运行结果即为表达式的值,值的类型就是表达式的类型
运算符优先级,决定表达式的运算顺序
三目运算符:
形如:x?y:z
释义:计算x的值,若为true,则表达式的值为y;若为false,则表达式的值为z
示例:
int score=70;
String result=score<60 ? “不及格” : “及格”;
System.out.println(result); //输出结果为及格

发布了24 篇原创文章 · 获赞 0 · 访问量 413

猜你喜欢

转载自blog.csdn.net/qq1317121361/article/details/102858087