java的基本数据类型与运算符
这里写目录标题
数据类型
byte数据类型
占用1个字节 对应的包装类 Byte 可以表示的数字大小 (-128~127)
public static void main(String[] args) {
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
}
// 输出 -128 127
short数据类型
占用2个字节 对应的包装类 Short 可以表示过的数字大小 (-32768~32767)
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
int数据类型
占用四个字节 对应包装类Integer 可以表示的数字大小 (-231~231-1)
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
long数据类型
占用八个字节 对应包装类 Long 可以表示数字大小 (-263~263-1)
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
浮点数据类型
float数据类型 占用四个字节 对应的包装类Float
double数据类型 占用八个字节 对应包装类Double
字符数据类型
char数据类型 占用两个字节 对应包装类 Character
布尔数据类型
boolean数据类型 没有大小 对应的包装类 Boolean
注意事项
java是强类型语言 c是若语言类型
-
定义float f=12.5;时必须这样写 float f=12.5f;
-
char占用两个字节 因此可以存放汉字 char a=‘王’;
-
char始终以字符的形式表现 char ch3=98;他会对应Ascall码 b ;
-
定义byte b3时不能 变量加变量
byte b1=10; byte b2=20; //byte b3=b1+b2;报错 变量不能变量加变量 //计算机再取数据的时候,都取4个字节 提升速度会提升为这整形进行计算 //System.out.println(b3); byte b4=10+20; System.out.println(b4);
-
定义的数是长整形和整形的和时会进行整形提升
-
boolen的值只有 true 和false
-
字符串可以直接进行拼接
public static void main20(String[] args) { String str1="abf"; String str2="dfdsa"; String str3=str1+str2; System.out.println(str3); }
-
定义变量的时候 局部变量必须初始化赋值 常量只能初始化一次;
-
final int a=10; //类似于c语言中的const 修饰常量
-
数字和字符串可以相互转化
public static void main(String[] args) { int a=10; String str1=a+""; System.out.println(str1); // 输出结果字符串10 String ret; ret=String.valueOf(a); //输出结果字符串10 System.out.println(ret); String str2="10"; //此处必须是数字不可以是10a等 int h=Integer.parseInt(str2); System.out.println(h); //输出结果是数字10 float m=Integer.valueOf(str2); System.out.println(m); //浮点数 10.0 }
-
命名规则
-
一个变量名只能包含数字, 字母, 下划线
-
数字不能开头.
-
变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量
-
变量命名要具有描述性, 见名知意.
-
变量名不宜使用拼音(但是不绝对).
-
变量名的词性推荐使用名词.
-
变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写.
-
不能使用关键字,下面是部分常用关键字
-
abstract 表明类或者成员方法具有抽象属性 assert 断言,用来进行程序调试 boolean 基本数据类型之一,声明布尔类型的关键字 break 提前跳出一个块 byte 基本数据类型之一,字节类型 case 用在switch语句之中,表示其中的一个分支 catch 用在异常处理中,用来捕捉异常 char 基本数据类型之一,字符类型 class 声明一个类 const 保留关键字,没有具体含义 continue 回到一个块的开始处 default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 do 用在do-while循环结构中 double 基本数据类型之一,双精度浮点数类型 else 用在条件语句中,表明当条件不成立时的分支 enum 枚举 extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 float 基本数据类型之一,单精度浮点数类型 for 一种循环结构的引导词 goto 保留关键字,没有具体含义 if 条件语句的引导词 implements 表明一个类实现了给定的接口 import 表明要访问指定的类或包 instanceof 用来测试一个对象是否是指定类型的实例对象 int 基本数据类型之一,整数类型 interface 接口 long 基本数据类型之一,长整数类型 native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 new 用来创建新实例对象 package 包 private 一种访问控制方式:私用模式 protected 一种访问控制方式:保护模式 public 一种访问控制方式:共用模式 return 从成员方法中返回数据 short 基本数据类型之一,短整数类型 static 表明具有静态属性 strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范 super 表明当前对象的父类型的引用或者父类型的构造方法 switch 分支语句结构的引导词 synchronized 表明一段代码需要同步执行 this 指向当前实例对象的引用 throw 抛出一个异常 throws 声明在当前定义的成员方法中所有需要抛出的异常 transient 声明不用序列化的成员域 try 尝试一个可能抛出异常的程序块 void 声明当前成员方法没有返回值 volatile 表明两个或者多个变量必须同步地发生变化 while 用在循环结构中
运算符
算术运算符
基本四则运算符 + - * / %
需注意的是int/int还是int 可以用double来表示结果
0不能做除数
% 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模
System.out.println(11.5 % 2.0); // 运行结果 1.5
增量赋值运算符 += -= *= /= %=
a+=1; 表示 a=a+1;
自增/自减运算符 ++ –
-
如果不取自增运算的表达式的返回值, 则前置自增和后置自增没有区别.
-
如果取表达式的返回值, 则前置自增的返回值是自增之后的值, 后置自增的返回值是自增之前的值.
关系运算符
== != < > <= >= 返回的结果都是boolean值
逻辑运算符
&& || !
结果也是boolean值
&& 两个操作数都为 true, 结果为 true, 否则结果为 false.
|| 两个操作数都为 false, 结果为 false, 否则结果为 true
! 操作数为 true, 结果为 false; 操作数为 false, 结果为 true
注意的是 && || 都是短路运算
- 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.
- 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.
位运算符
& | ~ ^
按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0.
按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.
特别注意
当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑 运算.
移位运算
<< >> >>>
左移 <<: 左侧位不要了, 右侧补0;
右移 >>: 右侧位不要了, 左侧补符号位(正数补0, 负数补1)
无符号右移 >>>: 右侧位不要了, 左侧补 0.
条件运算符
表达式1 ? 表达式2 : 表达式3
// 求两个整数的大值 int a = 10; int b = 20; int max = a > b ? a : b;
-