冯·诺伊曼体系结构
在本篇文章的开头,我给大家介绍一个很伟大的人物:冯·诺伊曼,相信很多人都听过。冯·诺依曼(John von Neumann,1903~1957),20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。
冯·诺依曼体系结构
本篇博客我们所讨论的 “变量” 主要和我们的 “内存” 这样的硬件设备密切相关。
变量及其用法和命名
变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据。
类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性。
整形变量(int)
基本语法
代码示例:
int num = 20
System.out.println(num) ;
Java中定义一个变量的方法和C语言中大同小异,只是在Java中打印一个变量用到了System.out.println()(可输入sout快捷键)
注意:
在Java中int类型的大小永远是4个字节,不受计算机是多少位平台所影响,这体现了Java的跨平台性和可移植性
长整型变量(long)
和整形变量用法基本一致:
long num = 20L; //
但要注意定义一个长整型变量时, 初始值要写作 10l 也可以(小写的 L, 不是数字1)。如果什么都不写的话类型就是整形了。
双精度浮点型变量(double)
用法和C语言中的double用法一致,值得注意的有:
1.进行除法运算时,如果两边都为整形,则计算出的结果一定为整形:
int a = 1;
int b = 2;
System.out.println(a / b);
// 执行结果
0
若要使结果带有小数,则除号两边至少有一个小数:
double a = 1.0;
double b = 2.0;
System.out.println(a / b);
// 执行结果
0.5
2.
在Java中此代码输出的结果为
因为在Java中double类型的精度并不明确,所以在计算某些值时势必会存在一定误差
单精度浮点型变量(float)
float f = 12.5;
上述的写法是错误的!!!
因为C语言是弱类型的语言,对类型的检查并不严格,因此在C语言中这么写是正确的,但由于Java是强类型语言,对类型的检查比较严格,小数默认是double类型的,因此在Java中这么写是错误的,要想改进,第一种方法就是在小数后加个f/F(让他变成float类型),第二种就是强制类型转换。
这也体现了Java的安全性
字符型变量(char)
表示方法:
char ch = 'A';
System.out.println(ch);
注意:Java中字符char类型占2个字节,能表示汉字,但不能表示负数。
布尔类型变量(boolean)
代码示例:
boolean value = true;
System.out.println(value);
注意:
- boolean 类型的变量只有两种取值, true 表示真, false 表示假.
- Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.
- boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定.
- 布尔类型由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。
字符串类型变量(String)
有别于C语言,在Java中定义一个字符串类型变量后的打印方法为:
String name = "zhangsan";
System.out.println(name);
在打印时还可以使用加号进行字符串的拼接:
打印的结果为:
同时,也可以对整数进行拼接:
执行的结果为:
变量的命名规则
- 一个变量名只能包含数字, 字母, 下划线,不能包括**.**(点号)。
- 数字不能开头。
- 变量命名推荐小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词首字母都大写;另外,变量在命名时最好不要使用拼音,也不能使用关键字命名!
注意: 虽然语法上也允许使用中文/美元符($)命名变量,但是不推荐这样做,因为在有些企业中是禁止使用此符号的
附Java中常见关键字:
总结
数值提升
无需多记,只需记住以下两点即可:
- 不同类型的数据混合运算,范围小的会提升成范围大的。
- 对于short,byte等比4个字节小的类型,会先提升成4个字节的int,再运算。
因此,在必要的时候,要强制类型转换
运算符
整体来说,Java之中的运算符和C语言中的运算符用法是基本一样的,但也需注意有些细节,下面我会给大家详细介绍比较重要的部分:
除法
不管在C语言还是Java当中,除法都是一个非常易错的运算,下面,给大家看一组例题:
大家可以自己先算一下答案奥!
那么,接下来就揭晓答案啦:
是不是和你算的一样呢?只要注意float所修饰的具体内容,就可以很轻松得算出来啦!
取模
除了除法以外,取模也是一个比较易错的算法,因为大家都有了C语言的基础,那么就不再多说其用法啦,直接上题!
同样,此题也不难,只需要大家注意注意符号即可搞定!答案为:
==值得注意的是,%表示取余,不仅仅可以对 int 求模,也能对double来求模,例:
System.out.println(11.5 % 2.0);
// 运行结果
1.5
关系运算符
关系运算符主要有6种:== != < > <= >=
值得注意的是,关系运算符表达式的返回值都是布尔类型,不能单纯地只在输出里面输出某个数值,例:
System.out.println(6);
此种写法是错误的,因为在Java中不存在0是假,非0是真,而只有true和false,因此,只能写为:
int a=10;
int b=20;
System.out.println(a<b);
输出的结果为true!
逻辑运算符
逻辑运算符主要有三个:
&& || !
和C语言中逻辑运算符的用法基本一致,但需注意的是:逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean,同时,也符合C语言之中短路求值的情况
和C中不同的是,Java中有& 和 |两种运算符,此两种运算符在这里并不推荐大家使用,因为没有短路求值的情况,在某些情况下很容易出错,例:
System.out.println(10 > 20 & 10 / 0 == 0); // 程序抛出异常
System.out.println(10 < 20 | 10 / 0 == 0); // 程序抛出异常
位运算符
位运算符主要有四个:
& | ~ ^
注意:
- 0x 前缀的数字为十六进制数字,十六进制可以看成是二进制的简化表示方式,一个十六进制数字对应 4 个二进
制位。 - 0xf 表示10进制的15,也就是二进制的 1111
- printf 能够格式化输出内容,%x 表示按照十六进制输出.
- \n 表示换行符
其他地方和C中也是一样的,都是对数值的二进制位进行操作的!
移位运算符
移位运算符有三个:
<< >> >>>
注意:
- 左移1位, 在右边补0,相当于原数字 * 2,左移N位,相当于原数字*2的N次方
- 右移1位, 在左边补符号位,相当于原数字 / 2,右移 N 位,相当于原数字 / 2 的N次方
- 由于计算机计算移位效率高于计算乘除,当某个代码正好乘除 2 的N次方的时候可以用移位运算代替
- 移动负数位或者移位位数过大都没有意义
需要注意,
在Java中有一个无符号右移运算符:>>>,在左边统一补0!但是没有无符号左移运算符!
条件运算符
条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3(布尔表达式),例:
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
同时,在这里给大家分享一个比较有趣的题:
System.out.println(false==false?(true==true?false:true):true);
此代码输出结果为false,原因是第一步中false是等于false的,所以执行冒号前面的语句,又因为true和true是相等的,所以再执行冒号前面的,即打印false!!!
到这里,Java中比较重要的运算符知识都讲完啦,大家是不是收获了很多呢?运算符这里不难,就是需要记住一点语法,所以希望大家自己利用空闲时间多记记多练练,相信会进步非常明显的!
转载:https://blog.csdn.net/Mubei1314/article/details/115433079