概述
java语言从1995年sun公司推出发展至今已经有22个年头,现在已经是使用最多的语言之一了。java又是一个比较容易入门的语言,我第一门接触的语言就是java。java发展。java的核心就是面向对象编程,其中多态、继承、封装来体现java的面向对象编程思想,还有java中的集合、流、反射等等。今天我会从最基础的数据类型和基本运算符开始说起:虽然说java的底层是由c去实现的,不过java和c还是有很多的不同也可以相互调用也就是JNI,我们会在以后去说去。
数据类型
在java中的数据类型分基本数据类型和引用数据类型
基本数据类型分为四类八种:
整数型:byte,short、int、long
浮点型:float、double
字符型:char
布尔型:boolean
下面就细致的说一下每个类型的区边。
整数型:包含所有整数。
byte: 1字节 取值范围是-128~127(0也算是正数之一)
short: 2字节 -2^15~2^15-1
int: 4字节 -2^31~2^31-1(常用)
long: 8字节 -2^63~2^63-1
浮点型:包含所有小数.
float: 4字节 -3.403E38~3.403E38(常用)
double: 8字节 -1.798E308~1.798E308
字符型:
char 4字节 0~65535
布尔型:只有
boolean 1字节 理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大
一般在代码中我们对数据会进行赋值为变量和常量来使用,其中java的变量是什么我们用三个问题去描述。
A:什么是变量
在程序执行的过程中,在某个范围内其值可以发生改变的量
B:变量的定义格式
数据类型 变量名 = 变量值;
C:为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用
在C问题中提出了常量这一概念,那么什么是常量呢,常量在java中被定义为其值被第一次赋值后就不可被改变的量,我们称之为常量。
定义格式是:public static final 数据类型 常量名 = 常量值;
注意:
1.变量/常量 名必须是一个有效的标识符;
2.变量/常量 名不可使用java中的关键字;
3.变量/常量 名不可重复;
4.应选择有意义的单词作为 变量/常量 名;
数据类型的转换:数据类型的转换分为隐式转换和强制转换
隐式转换:Java中的默认转换规则,取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算.
强制转换:当所占字节较多的数据类型赋值给所占类型较少的的数据类型时,因为会丢失精度所以java会提示编写者进行一次强制的类型转换.转换个格式为:
b = (byte)(a + b);
注意如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同;会丢失超出范围的字节。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
这里涉及了二进制的运算我会单独开一篇文章起解释;
引用数据类型:class(类),interface(接口),array(数组);
在这里我不会,不过我会在后面去详细解释引用数据类型,会在说面向对象时候去说.
基本运算符:
java中的运算符分为了:算数运算符,赋值运算符,比较(关系)运算符,逻辑运算符,位运算符,和三元运算符:
算数运算符:+(加),-(减),*(乘),/(除),%(取余),++(自增),--(自减)
其中"+","-"也可以作为数据的正负号,剩下加减乘除大家应该都经常使用的,取余和自增自减估计用的相对少一点.
%:就是字面意思取到余数,比如7%4就是3,8%4就是0
++:自加。对原有的数据进行+1,不过这里要注意的是++的位子如果是在数据的后面是代表参与运算完成后自增一,如果是在数据的前面,就是会在自增后去参与运算;
--:自减。对原有的数据进行-1,同自增一样.
例:
int x,y,z;
x = 2;
y = x++;
z = ++x;
System.out.println("y = " + y +" , z = " + z);
输出结果:y = 2 , z = 4
赋值运算符:=,+=,-=,*=,/=,%=
=:并不像数学中一样的将左边的值赋给右边,而是将右边的值赋值给左边.
+=:将左边的数据与右边的数据进行相加后再赋值给左边的数据;
-=:将左边的数据与右边的数据进行相减后再赋值给左边的数据;
*=:将左边的数据与右边的数据进行相乘后再赋值给左边的数据;
/=:将左边的数据与右边的数据进行相除后再赋值给左边的数据;
%=:将左边的数据与右边的数据进行取余后再赋值给左边的数据;
比较(关系)运算符:>,<,==,>=,<=,!=
>:比较左方是否大于右方;
<:比较左方是否小于右方;
==:比较左右是否相等;
>=:比较左方是否大于等于右方;
<=:比较左方是否小于等于右方;
!=:比较左方是否不等于右方;
注意:
其中除了"=="与"!="可以比较所有基本数据类型和引用数据类型外,剩下的只可以比较整型,浮点型,字符型;
比较运算符返回值皆为boolean类型
逻辑运算符:&(与),&&,|(或),||,!(非),^(异或)
&:有false则false。
|:有true则true。
^:相同为false,不同为true。
!:非false则true,非true则false。
特点:偶数个不改变本身
注意:
逻辑运算符操作数据必须是boolean型.
位运算符:&,|,^,~ ,>>,>>>,<<
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反
<<:左移 左边最高位丢弃,右边补齐0
>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0
注意:
位运算符操作的是底层的二进制所以也是最高效的运算方式,我会单独写一篇文章去叙说二进制运算和位运算符的使用方式和场景.
三元运算符:(关系表达式) ? 表达式1 : 表达式2;
若关系表达式为true则会返回表达式1,相反是false会返回表达式2;
注意:
简单的逻辑判断使用三元运算符更加简洁,较复杂的逻辑则建议使用if...else语句替代,(简单说明两者区边,三元运算符发生了运算符的赋值动作,也就是有运算的,而if语句则没有运算结果,只有判断.)
关于运算符的优先级:
运算顺序:增量减量运算>算术运算>比较运算>逻辑运算>赋值运算
特定符号运算顺序:
1 () 括号
2 +,- 正负号
3 ++,--,! 一元运算
4 *,/,% 乘除
5 +,- 加减
6 >>,>>>,<< 位运算
7 <,>,<=,>= 比较大小
8 ==,!= 比较是否相等
9 & 位与运算
10 ^ 位异或运算
11 | 位或运算
12 && 逻辑与运算
13 || 逻辑或运算
14 ?: 三元运算
15 = 赋值运算