小白Java笔记——直接量和运算符(一)
2017-12-14 17:10
239 查看
一、直接量
直接量指在程序中通过源代码直接给出的值。
(一)直接量的类型
只有三种类型可以指定直接量:基本类型、字符串类型和null类型
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/25/e660e6ecf84d4a7126b02d409bfe7876)
(二)直接量的赋值
允许把一个数值的直接量直接赋给另一个类型的变量。
String类型的直接量不能赋给其他变量,除非通过包装类强制转;
null类型直接量可以赋给任何引用类型的变量;
boolean类型的直接量只能赋给boolean变量。
特别的,注意String字符串类型,程序第一次使用某个字符串直接量时,Java会用常量池(constant pool)来缓存该字符串的直接量。
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。包括类、方法、接口中的常量,也包括字符串直接量。
String类是一个典型的不可变类,因此不用担心共享String会导致混乱。
二、运算符
运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等等。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/25/0bd14676beaa08c087a3f70bd982936a)
(一)算术运算符
七个基本算术运算符:+、-、*、/、%、++
+可以当数学的加法运算符,也可以当字符串的连接运算符;-可以做减法的运算符,也可以做求负运算,即负负得正类似的。
++:自加,放在操作数的右边时,就先执行右边的运算,左后再执行自加;同样放在左边也同理
–:自减,同自加。注意5++、6–属于错误代码。
如果需要开方、乘方等,可以借助于java.lang.Math类的工具完成复杂的运算。
结果:
(二)赋值运算符
前面提到过“变量”的理解,变量相当于装数据的容器,而赋值运算符就是将数据装入变量的过程;
赋值运算符是从右往左执行计算的,程序先计算 = 右边的值,再将该值装入 = 左边的变量。所以左边必须也只能是变量;
赋值运算符是有值的,也就是等于右边被赋的值
(三)位运算符
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/25/37e87a80b9828188a2679a38615d301b)
一般的,位运算符只能操作整数类型的变量或者值
进行移位运算时遵循规则:
1.对于低于int类型(byte、short、char)的操作数总是先自动类型转换为int类型再移位;
2.int类型的整数移位a>>b,当b>32时,系统先用b对32求余(int只有32位),得到结果才是真正要移位的位数。如a>>33 和a>>1结果一样;
3.对于long类型的整数移位a>>b,当b>64时,执行原理同上
(三)扩展后的运算符
(四)比较运算符
突然断电,写的笔记都没了,时间原因就不再补了,以后用到再补充吧
直接量指在程序中通过源代码直接给出的值。
(一)直接量的类型
只有三种类型可以指定直接量:基本类型、字符串类型和null类型
(二)直接量的赋值
允许把一个数值的直接量直接赋给另一个类型的变量。
String类型的直接量不能赋给其他变量,除非通过包装类强制转;
null类型直接量可以赋给任何引用类型的变量;
boolean类型的直接量只能赋给boolean变量。
特别的,注意String字符串类型,程序第一次使用某个字符串直接量时,Java会用常量池(constant pool)来缓存该字符串的直接量。
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。包括类、方法、接口中的常量,也包括字符串直接量。
String类是一个典型的不可变类,因此不用担心共享String会导致混乱。
二、运算符
运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等等。
(一)算术运算符
七个基本算术运算符:+、-、*、/、%、++
+可以当数学的加法运算符,也可以当字符串的连接运算符;-可以做减法的运算符,也可以做求负运算,即负负得正类似的。
++:自加,放在操作数的右边时,就先执行右边的运算,左后再执行自加;同样放在左边也同理
–:自减,同自加。注意5++、6–属于错误代码。
/* *除法运算符 */ double a = 5.2,b = 3.1; double div = a/b; System.out.println(div); System.out.println(5/0.0);//0.0是浮点数,所以结果也是浮点数;结果是正无穷大 System.out.println(-5/0.0);//结果是负无穷大 System.out.println(5/0);//这时就会出错 /* *求余运算符:0或者0.0对零之外的的任何数求余都将得到0或者0.0 */ System.out.println(-5%0.0);//结果是非数NaN System.out.println(0%3);//结果是0 /* *自加++,1.自加是单目运算符,只能操作一个操作数;2.只能操作单个数值型(整型、浮点型)的变量,不能操作常量或表达式 */ int a = 5; int b = a++ + 6;//自加放在右边,a++就先执行右边的+6即a+6=11以后,再执行a加一自加 System.out.println(a+"\n"+b);//结果a=6,b=11
如果需要开方、乘方等,可以借助于java.lang.Math类的工具完成复杂的运算。
public class MathTest{ public static void main(String[] args){ double a = 3.2; //求a的五次方 double b = Math.pow(a,5); System.out.println(b); //求a的平方根 double c = Math.sqrt(a); System.out.println(c); //计算随机数,返回一个0-1的伪随机数。 /* *伪随机数: 真正意义上的随机数在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。 */ double d = Math.random(); System.out.println(d); //求1.57的sin函数值:1.57被当成函数值 double e = Math.sin(1.57); System.out.println(e); } }
结果:
335.5443200000001 1.7888543819998317 0.6327112069817589 0.9999996829318346
(二)赋值运算符
前面提到过“变量”的理解,变量相当于装数据的容器,而赋值运算符就是将数据装入变量的过程;
赋值运算符是从右往左执行计算的,程序先计算 = 右边的值,再将该值装入 = 左边的变量。所以左边必须也只能是变量;
赋值运算符是有值的,也就是等于右边被赋的值
(三)位运算符
一般的,位运算符只能操作整数类型的变量或者值
进行移位运算时遵循规则:
1.对于低于int类型(byte、short、char)的操作数总是先自动类型转换为int类型再移位;
2.int类型的整数移位a>>b,当b>32时,系统先用b对32求余(int只有32位),得到结果才是真正要移位的位数。如a>>33 和a>>1结果一样;
3.对于long类型的整数移位a>>b,当b>64时,执行原理同上
(三)扩展后的运算符
(四)比较运算符
突然断电,写的笔记都没了,时间原因就不再补了,以后用到再补充吧
相关文章推荐
- 小白Java笔记——运算符(二)及优先级
- Java小白之jar笔记
- 小白Java笔记——标识符和关键字
- 小白Java笔记——数据类型
- Java笔记之Java语言基础(运算符的运用)
- 【慕课笔记】第三章 常用的运算符 第5节 JAVA中的逻辑运算符
- Java小白笔记1
- Java学习笔记―第五章 运算符和表达式
- Java笔记(五)……运算符
- 零基础小白JAVA学习笔记(一)
- Java核心技术学习笔记之二:Java运算符
- Java基础程序设计笔记-- 运算符、表达式与语句
- java运算符的运用(笔记整理)
- 【学习笔记三】最基本的JAVA基础[数据类型,运算符]
- Java运算符笔记
- 小白Java笔记——运行机制
- Java笔记(1)- Java基础知识、类、对象、运算符、数据类型
- 小白Java笔记——垃圾回收机制
- 零基础小白JAVA学习笔记(二)
- 2016/1/1 运算符 笔记整理 接2015/12/30 Java 语法