1.前置内容
什么是内存?
内存即是一块瞬时状态的存储空间,有一定的容量。
内存与硬盘的区别?
内存造价较高,在计算机硬件资源中比较稀缺。(内存需要省着点用)
工业上的瓶颈,多数大容量的内存都是由多个内存条组成的。
计算机给Java程序多大的内存空间?
Java虚拟机(Java程序),默认分配的物理内存容量是计算机内存的 1/8。(省着用)
计算机存储容量的基本单位
bit(位) * 8 == 1 Byte(1字节)
Byte - KB - MB - GB - TB - PB - EB - ZB - YB - BB - NB - DB - CB - XB (1024进位)
2.变量
- 概念:计算机内存中的一块存储空间,是存储数据的基本单元。
eg:酒店(内存)中有很多房间(变量),房间类型(变量的数据类型)有单人、双人等,独立不重复的门牌号(变量名/内存地址),每个房间的房客(变量存储的值)也不同。
1)声明:数据类型 变量名;
int money; //开辟整数变量空间
①先声明再赋值
②声明并赋值【常用】
2)赋值:变量名 = 值;
money = 100; //将整数值赋给变量
- 注意:Java是强类型语言,变量的类型与值的类型必须一致。
3.数据类型
整数
* Java中任何一个整数,默认的类型为int,如果整数超过int取值范围,则均报错为过大的整数。
* long类型的赋值整数如果超过了int类型取值范围,则需要在数字后加 “L“ 以标记为long类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class TestType { public static void main(String[] args) { byte b = -128; System.out.println(b); short s = -32768; System.out.println(s); int i = -2147483648; System.out.println(i); System.out.println(Long.MAX_VALUE); long l1 = 9223372036854775807L; long l2 = 2147483648L; System.out.println(l2); System.out.println(l1 + l2); } }
|
输出:
-128
-32768
-2147483648
9223372036854775807
2147483648
-9223372034707292161
小数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class TestFloatAndDouble { public static void main(String[] args) { float f = 1.2F; System.out.println(f); double d = 1.3; System.out.println(d); double d2 = 2000; System.out.println(d2); double d3 = 2000.0; System.out.println(d3); double d4 = 2000D; System.out.println(d4); double d5 = 1.7E308; System.out.println(d5); System.out.println(Double.MIN_VALUE); System.out.println(Double.MAX_VALUE); } }
|
输出:
1.2
1.3
2000.0
2000.0
2000.0
1.7E308
4.9E-324
1.7976931348623157E308
布尔
* 可直接赋值 true/false
* 也可赋值一个结果为 true/false 的表达式
* 注意:Java中的boolean类型变量不能参与算术运算!
字符
* char每一个字符在计算机中都会有一个二进制数字对应
* char类型支持转义字符 \ 可转义的有:' " \ \n \t
* char类型字符是单引号包裹的单个字符
* char类型多种赋值方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public class TestChar { public static void main(String[] args) { char c = 'A'; System.out.println(c); char c2 = 66; System.out.println(c2); char c3 = '\u0043'; System.out.println(c3); char c4 = '你'; System.out.println(c4); System.out.println((int)c4); char c5 = 20320; System.out.println(c5); System.out.println((int)'我'); System.out.println((int)'爱'); System.out.println((int)'你'); System.out.println((char)25105); System.out.println((char)29233); System.out.println((char)20320); short s1 = 20320; char c7 = 20320;
char c9 = 65; short s2 = 65; } }
|
字符串
* 任何””之间的内容都是字符串,包括空格。
4.类型转换
1)两种类型互相兼容
2)目标类型大于源类型
1)两种类型互相兼容
2)目标类型小于源类型
3)强转规则:
* 整数长度足够,数据完整
* 整数长度不够,数据截断
* 小数强转整数,数据截断
* 字符整数互转,数据完整
* boolean类型不能与其他类型进行转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| public class TestConvert { public static void main(String[] args) { short s = 123; int i = s; System.out.println(i); float f = 3.5F; double d = f; System.out.println(d); byte b = 10; double d2 = b; System.out.println(d2); float d3 = 100.0F; System.out.println("------------------------------"); short s1 = 123; byte b1 = (byte)s1; System.out.println(b1); float d4 = 100.9F; long ll = (long)d4; System.out.println(ll); } } public class TestConvert2 { public static void main(String[] args) { short s = 257; byte b = (byte)s; System.out.println(b);
short s2 = 128; byte b2 = (byte)s2; System.out.println(b2); } }
|
5.运算符
- 算术运算符:加+ 减- 乘* 除/ 模%
- 一元运算符:自增++ 自减–
* 前自增/减:先运算,再取值;
* 后自增/减:先取值,再运算;
- 赋值运算符:赋值= 求和赋+= 求差赋-= 求积赋*= 求商赋/= 求余赋%=
- 关系运算符:大于> 小于< 大于等于>= 小于等于<= 等于== 不等于!=
- 逻辑运算符:与&& 或|| 非!
- 三元运算符:布尔表达式 ? 结果1 : 结果2
* 布尔表达式为真,取值结果1;为假,取值结果2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class TestOperation { public static void main(String[] args) { double score = 100.0; System.out.println(score == 100.0 ? "真棒!" : "加油!"); String result = score == 100.0 ? "真棒!!" : "加油!!"; System.out.println(result); int i = score == 100.0 ? 1 : 2; System.out.println(i); } }
|
|| 在线思维导图工具:www.processon.com
|| 免费版可以创建9个
6.自动类型提升
自动类型提升优先级:double >> float >> long >> int << short/byte
- 两个操作数中有一个为优先级中的类型,计算结果提升为优先级中对应类型
- 【特殊】任何类型与String相加(+)时,实为拼接,结果自动提升为String
1 2 3 4 5 6 7 8 9 10 11 12
| public class TestTypeUp { public static void main(String[] args) { int num1 = 123; int num2 = 567; String str = "abc";
String newStr = num1 + num2 + str; System.out.println(newStr); } }
|
输出:
690abc
7.控制台输入
导包语法:import 包名.类名;
功能:将外部class文件功能引入到自身文件中
位置:jdk1.8.0_121\jre\lib\rt.jar 压缩包中
- 声明:Scanner 类型的变量
- 接收:(输入类型)
.nextInt(); // 获得整数
.nextDouble(); // 获得小数
.next(); // 获得字符串
.next().charAt(0); // 获得字符串的第一个字符
【注意】如果输入了不匹配的数据,则会产生 java.util.InputMismatchException 异常。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import java.util.Scanner;
public class TestScanner { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入一个值:"); int i = input.nextInt(); System.out.println("您输入的值为:" + i); } }
|