2 基础语法
2.1 二进制(复习总结)
- 冯·诺依曼理论核心思想
- 计算机应该采用二进制。
- 存储程序执行:程序和数据首先存入内存,并按照事先编写好的程序顺序执行。
- 计算机硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。
- 计算机是由电流驱动的,电流只有正极和负极,只有这两种状态,也就是说计算机底层实际上只能表示这两种状态,那他怎么能够表示现实世界中负责的数据呢?计算机就是采用二进制的方式来表示这些复杂数据的。
- 电流只有正极和负极,那么就可以表示基本的两个数字:1和0
- 而1和0这样的数字串组成的数字我们称为二进制。
二进制的特点:满2进1位 (1 10 11 100…)
十进制的特点:满十进1位 (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…)
进制转换(二进制 八进制 十进制 十六进制)
- 从右到左用二进制的每个数去乘以2的相应次方相加。
公式:从二进制的最右边开始,2的0次幂,2的1次幂,2的2次幂,2的3次幂...以此类推,然后让每一位和对应的二进制位相乘,然后将每一个相乘的结果再求和,就是最终的十进制。
- 除2取余,逆序排列。
公式:让十进制的数字除以2(不断的除以2,直到最后商是0为止),然后余数逆序输出,就是对应的二进制。
- 进制转换不是必须掌握的,在实际开发中也用不上,如果遇到了,不会转换,可以使用计算器。
2.2 变量
2.2.1 变量定义
概念:计算机内存中的一块存储空间,是存储数据的基本单元。
变量三要素:变量类型,变量名,变量值
2.2.2 使用变量
- **申明变量(**申请内存地址) main自动填充
- 语法: 数据类型 变量名; ------int a;(数据类型空格变量名)
- 变量初始化(给变量赋值)
- 语法: 变量名 = 值; -------a = 10;
- 使用变量(注意,变量初始化了才能使用)
- 语法:打印输出、方法传参、进行计算; -----System.out.println(a); sout自动填充输出
Java是强类型语言,变量的类型必须与数据的类型一致。
2.2.3 声明变量的3种方式
- 先声明,再赋值:【常用】
数据类型 变量名;
变量名 = 值; - 声明并赋值:【常用】
数据类型 变量名 = 值;
多个同类型变量的声明与赋值:【了解】
数据类型 变量1 , 变量2 , 变量3 = 值3 , 变量4 , 变量5 = 值5;
public class test01 { public static void main(String[] args) { int a; //先声明 a = 10; //再赋值 System.out.println(a); int money = 10000;//声明变量+初始化 System.out.println(money); } } public class test01 { public static void main(String[] args) { int b = 66;int c = 77;int d = 99; //连续定义 System.out.println("c的值为"+c); } }//c的值为77 public class test01 { public static void main(String[] args) { int a,b,c,d = 66; //相当于int a未赋值; 同 bc未赋值; int d = 66; System.out.println("c的值为"+a); } }//报错 不能输出a/b/c,仅仅能输出d
- 注意:在java中变量一定要初始化(赋值)才能使用
2.3 数据类型和数据类型转换
数据类型java是强类型语言,在定义变量的时候必须指定数据类型
- 基本数据类型(在java语言语法中已经定义好了的类型)
- 整数类型 byte short int long
- 浮点类型(小数类型)float double
- 布尔类型boolean
- 字符类型char
- 引用数据类型 (String)
2.3.1 整数类型
4种可表示数值范围不同,常用int和long
定义long类型的变量的时候尽量(long = 1000937766L)加上L l
类型 | 所占字节 | 所占位数 | 取值范围 二进制(十进制) |
byte | 1字节 | 8位 | -2^7 ~ 2^7-1 (-258~127) |
short | 2字节 | 16 | -2^15 ~2^15-1(-32768 ~ 32767) |
int | 4 | 32 | -2^31 ~ 2^31-1(-2147483648 ~2147483647) |
long | 8 | 64 | -2^63 ~ 2^63-1(-9223372036854775808~9223372036854775807) |
拓展
二进制赋值 0b
八进制赋值0
十六进制赋值0x
byte n1= 0b1111;//输出15 byte b=010; //输出8 int c=0xFF; //输出255
2.3.2 浮点类型
- float定义小数的时候要在后面加上F或f;
- double可加可不加,平时开发用double,精确度更高,可表示小数16位
float 精度6-7 、double 精度15-16
浮点型数值采用科学计数法表示:
2E3 等价于 2 * 10 ^ 3(结果:2000.0)
3E5 等价于 3 * 10 ^ 5(结果:300000.0)注意:double为浮点数的默认类型,如需为float类型赋值时,需要在值的后面追加“F”
float pi = 3.1415926F; //3.1415925 精度缺失 double d1 = 3.1415926; // 3.1415926 double d2 = 3.1415926E3; //3141.5926 科学计数法
拓展
double d3 = 1.4; //转二进制无法精确表示1.4,只能近似存储 double d4 = 0.5; //转二进制为 double d5 = 0.9; //近似存储 System.out.println((d3-d4)/d5); //0.9999999999999999
可直接赋值true / false
也可赋值一个结果为true / false的表达式
注意:Java中的boolean不能参与算数运算
double和float主要是做科学计算,科学计算允许一定范围内的误差
但是金融,会计要求不能有误差,采用BigDecimal
2.3.3 布尔类型
类型 | 所占字节 | 所占位数 | 取值范围 | 描述 |
boolean | 1字节 | 8位 | true\false | 仅可描述“真”或者“假” |
可直接赋值true / false
也可赋值一个结果为true / false的表达式
注意:Java中的boolean不能参与算数运算
2.3.4 字符类型-3种
类型 | 所占字节 | 所占位数 | 取值范围 | 字符编码 |
char | 2字节 | 16位 | 0~65535 即2^16-1 | Unicode字符集(万国码) |
char c1 = 97; //a 整数赋值,通过十进制数65在字符集中对应的字符赋值 char c11 = 65; //A char c2 = 'a'; //a 字符赋值,通过''描述为字符赋值 char c3 = '\u4f0D'; //伍 unicode赋值, char c3 = '\u0041; //A unicode赋值,通过十六进制数41在字符集中所对应的字符赋值
前置知识1:
- ASCII(American Standard Code for Information Interchange)美国信息交换标准码。
- 基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
- ASCII是最通用的信息交换标准,为英文字符设定了统一并且唯一的二进制编码。
- 前置知识2:
- Unicode(万国码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
- 它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
- 以满足跨语言、跨平台进行文本转换、处理的要求,(其中包含了ASCII编码)。
2.3.5 转义字符
转义字符 | 描述 |
\n | 换行符 |
\r | 回车 |
\t | 缩进(制表位) |
\ | 反斜线 |
’ | 单引号 |
‘’ | 双引号 |
public class Demo02 { public static void main(String[] args) { char e = '\'';//' char e1 = '\\'; // \ char e2 ='\"'; // " char e4 = '"'; // " System.out.println(e); System.out.println(e1); System.out.println(e2); System.out.println(e4); System.out.println("姓名:张三 \n年龄:22 \n性别:男"); //换行 // \r表示回车[回到行的最前面] System.out.println("12345677\rabc"); //在DOS输出abc45677 (前置并且替换);在idea输出abc // \t制表符[表格],内容对齐 System.out.println("水果\t\t个数\t价格"); System.out.println("桃子\t\t5个\t30元"); System.out.println("西番莲\t2个\t15元"); //超过4个字符(英文8个),自动多占一个制表位 /** * 水果 个数 价格 * 桃子 5个 30元 * 西番莲 2个 15元 */ } }
2.3.6 引用数据类型
类型 | 取值范围 | 字符编码 |
String | 任何” ”之间的字面值 | Unicode字符序列 |
- 什么是字面值?
- 在java程序中的数据就是字面值。
- 在java程序中都有哪些字面值(数据)?
- 整数型字面值
- 1 2 3 4 -100 0 …
- 浮点型字面值
- 3.0 3.14 3.1415926 …
- 布尔型字面值(只有两个值)
- true 真
- false 假
- 字符型字面值(单个字符,并且使用单引号括起来的,就是字符)
- ‘a’
- ‘b’
- ‘中’
- ‘国’
- 字符串型字面值(凡是使用双引号括起来的,都是字符串)
- “a”
- “abc”
- “hello world,你好世界!”
2.3.7 数据类型转换
- 自动类型转换:
两种类型相互兼容。
目标类型大于源类型。
- byte -->short–>int–>long–>float–>double
- char -->int
- byte short char 运算时会自动转成int类型
- 进行算数运算时:
- 两个操作数有一个为double,计算结果提升为double。
- 如果操作数中没有double,有一个为float,计算结果提升为float。
- 如果操作数中没有float,有一个为long,计算结果提升为long。
- 如果操作数中没有long,有一个为int,计算结果提升为int。
- 如果操作数中没有int,均为short或byte或char,计算结果仍旧提升为int。
- 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
2.强制类型转换
两种类型相互兼容。
目标类型小于源类型
强制类型转换规则:
- 整数长度足够,数据完整。
例:int i = 100; byte b = (byte)i; //b = 100
整数长度不够,数据截断。
例:int i = 10000; byte b = (byte)i; //b = 16(符号位变化,可能变为负数)
小数强转整数,数据截断。
例:double d = 2.5; int i = (int)d; //i = 2(小数位舍掉)
boolean的取值为true/false,不可与其他类型转换。
int n = 128; byte b =(byte)n; System.out.println(b); //-128
02 Java基础语法(变量+数据类型+运算符)(下):https://developer.aliyun.com/article/1580152