Contents
前言(转载请说明作者!)2020.2.26
内容导引
学习英语,要从音标,单词,基础语法学起。Java SE同样是门语言,当然它的基本语法的学习是极为重要的。它为你以后流畅正确的编写出代码打下硬性基础。
在本文章中,会引用“身高预测任务”这个一个实例,通过实战操作巩固这些基本语法知识。
最终实战导引
任务:
大致流程:
公式模型:
儿子成年身高(cm)=(父亲身高+母亲身高)×1.08÷2;
女儿成年身高(cm)=(父亲身高×0.923+母亲身高)÷2;
PS:当一个或多个表达式组合起来执行时,就形成了算法。
变量和内存
变量就是其中保存的值会发生改变的量。
变量是用于保存数据的存储单元,因保存于其中的数据的值可以改变而得名,变量让Java程序能更加方便的查找和操作数据。
- 变量是作为Java程序寻找内存中存放的数据的一个标签。
- 变量中存放的数据不同,占用内存空间大小也不同。
数据类型
数据类型的分类
数据类型指明了变量所占用内存的大小。
PS:
\u代表Unicode编码,\u0000、\ufff表示十六进制的Unicode码字符。
并且在Java语言中,数据类型所占用的内存空间和取值范围都是固定的,不会因为平台更改而更改,正因如此,Java语言的可移植能力非常强。
基本数据类型的包装类
引用自博客园(作者:红豆·)
为什么会有基本类型包装类?
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
基本数据类型(基本类型) | 包装类(对象类型) |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
使用基本类型定义的变量
会具有默认值,或者赋值给变量的值为null的话,Java就会抛出异常。
这种情况在处理JSP请求数据时经常会遇到。
而使用包装类定义的变量为对象类型的实例变量,如果不赋初值的话,它的值为null,引用时的值也为null,但它也可以接收null这个值,可避免一些异常的发生,还可以使用API提供的一些有用方法。
为何Java还保留基本类型呢?
基本类型定义的变量的值存储在栈里。
对象类型的值存储在堆里。
而栈比堆更加高效。
变量声明、使用
Java是个强类型的语言。
在使用一个变量前,必须先对其进行声明。
声明基本和C语言保持一致。
e.g.1 int outputNumber = 1;
e.g.2 float x,y,z;
特有:
e.g.3 String fatherName = “fool”;//字符串变量
起名规范:
- 下划线、字母、美元符号开头。
e.g. _125 , abc , $main - 后面跟下划线、字母、美元符号及数字。
e.g. a123$ , _123aB - 虽无长度限制,但不能把名字起的太长,单词长可以考虑采用简写的方式。
e.g. Internationalization -> i18n - 大小写严格区分。
e.g. ABC与abc是两个不同变量名。 - 最好使用有具体含义的单词组合。易读、易写、便于程序的维护。
e.g. fatherName、childHeight、gender
实战实例(赋值并输出)
FatherHeight.java 程序实现
public class FatherHeight{
public static void main(String[] args){
//定义double类型的身高并赋值
double fatherHeight = 1.76d; //d指双精度
System.out.println("父亲的身高为:"+fatherHeight+"米");
}
}
目的:初始化父亲的身高fatherHeight变量并赋值,最后输出身高。
常量
格式:final 数据类型 常量名=值;
e.g. final float PI = 3.1415926
整形常量
分为十进制整数、八进制整数和十六进制整数三种类型。无二进制整数!
- 十进制整数:
e.g. 1234 , -1 , 0 - 八进制整数:以0开始
e.g. 83(十进制) -> 0123 , -10(十进制) -> -012
0123(8) -> 1x82+2x81+3x80=64+16+3=83(10)
- 十六进制整数:以0x/0X开头
e.g. 291(十进制) -> 0x123 , -18(十进制) -> -0x12
0x123 -> 1x162+2x161+3x160=256+32+3=291
PS:整型常量默认为int类型,占用32位的内存空间。若在整型常量末尾加一个 l/L ,则为长整型常量(Long类型,e.g. 125L , -125l)。
浮点型常量
- 带小数点型:
e.g. 0.125 , .125 , 125. , 125.0 - 科学计数法型(e/E前后必须有数,并且e/E后面必须为整数):
e.g. 125e3 , 125E3
PS:为了区别单精度浮点型常量和双精度浮点型常量,用 f/F表示单精度浮点常量(float,e.g. 0.125F),用 d/D 表示双精度浮点常量(double,e.g. 0.125D)。如果数值后没有标识精度的字母,则默认为双精度浮点常量。
字符型常量
- 半角单引号把字符括起来
e.g. ‘a’ , ‘2’
字符串常量
- 常用半角双引号括起来的由0个或多个字符组成的字符序列
e.g. “” , “Java World”
实战实例(求数值数据类型最大/小值)
MaxValue.java 程序实现
public class MaxValue{
public static void main(String[] args){
System.out.println("byte型最大值为:"+Byte.MAX_VALUE);
System.out.println("short型最大值为:"+Short.MAX_VALUE);
System.out.println("int型最大值为:"+Integer.MAX_VALUE);
System.out.println("long型最大值为:"+Long.MAX_VALUE);
System.out.println("float型最大值为:"+Float.MAX_VALUE);
System.out.println("double型最大值为:"+Double.MAX_VALUE);
}
}
PS:上述程序可将MAX_VALUE更换为MIN_VALUE,因而求得数值数据类型的最小值。
运算符
算数运算符
关系运算符
常用于比较大小,运算结果为布尔(boolean)型。
成立为true,否则为false。
运算符 | 描述 | 可运算的数据类型 |
---|---|---|
> | 大于 | int , float , char |
< | 小于 | int , float , char |
== | 等于 | 所有数据类型 |
!= | 不等于 | 所有数据类型 |
>= | 大于或等于 | int , float , char |
<= | 小于或等于 | int , float , char |
逻辑运算符
运算符 | 描述 | 功能 |
---|---|---|
&& | 简洁与 | 两边都为true,结果为true 如过左边为false,右边就不再进行判断或运算 |
|| | 简洁或 | 两边都为false,结果为false 如果左边为true,右边就不再进行判断或运算 |
! | 取反(非) | 对感叹号后方进行取反运算 e.g. !1 == false |
& | 非简洁与 | 两边都为true,结果为true 两边都会判断或运算 |
| | 非简洁或 | 两边都为false,结果为false 两边都会判断或运算 |
^ | 异或 | 两侧不同时,结果为true 同为true或false时,结果为false |
位运算符
运算符 | 描述 | 功能(运算时两边均换算成二进制数,进行相同位比较) |
---|---|---|
& | 按位与 | 均1为1 e.g 0111&0001 == 0001 |
| | 按位或 | 有1为0 e.g. 1100|1010 == 1110 |
~ | 按位取反 | 0变1,1变0 e.g. ~1111 == 0000 |
^ | 按位异或 | 不同时为1 e.g. 1111^0000 == 1111 |
二进制的正负转换
正数转负数
例如:byte型常量5的二进制为:
0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
---|---|---|---|---|---|---|---|
负数的二进制码为对应正数原码取反再加1。 |
取反:
1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|
再加1 | |||||||
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
– | – | – | – | – | – | – | – |
PS:上述黄色标记的数字(即第一位)代表数值的正负。 |
负数转正数
可逆向思维想:
- 看二进制原码第一位是不是为1,为1则代表十进数为负数。
- 取原码的反码。
- 二进制+1,即可得到原二进制原码所对应十进制负数的正数。