基本知识:
1.内存:瞬时(临时)状态下的存储空间,造价高,工业上的设计瓶颈。
2.变量:计算机内存中的一块存储空间,是存储数据的基本单元。

  • 整个内存就像酒店,当中包含多个房间。
  • 房间的类型有所不同。(数据类型)
  • 每个房间都有一个唯一的门牌号。(变量名)
  • 房间的住客不同。(值)

定义流程:
先声明:数据类型 变量名;
再赋值:变量名 = 值;
或声明并赋值: 数据类型 变量名 = 值;

public class Test{
	public static void main(String[] args){
		int money;//开辟整数变量空间
		money = 100;//将整数值赋给变量
		System.out.println(money);//输出后换行  print仅打印输出,不换行
		int age = 20; 
		System.out.println(age);
	}
}

多个同类型变量的声明和赋值(不常用,可读性差): 数据类型 变量名 = 值,变量名 = 值;
注意:变量需要先赋值,再使用,否则报错:尚未初始化。
3.java虚拟机默认分配的物理内存是内存的八分之一。
bit(位)->Byte(字节)->KB->MB->GB->TB->PB->EB->ZB->YB->NB->DB->CB->XB

**

数据类型

**
java中的变量有严格的数据类型区分。在Java中。任何一个值都有其对应类型的变量。

  1. 基本数据类型
  • 整数
  • 小数
  • 布尔
  • 字符
  1. 引用数据类型
  • 字符串
  • 数组
  • 对象

二进制表现形式:
byte == 8bit 如:十进制 1 = 二进制 0000 0001。(第一个为符号位,0代表正数,1代表负数) -1 = 1111 1111 ;-128 = 1000 0000

整数

类型

字节

取值范围(二进制)

取值范围(十进制)

byte

1字节

-2^7-- 2 ^7-1

-128~127

short

2字节

-2^15–2 ^15-1

-32768~32767

int

4字节

-2^31 --2 ^31-1

-2147483648~-2147483647

long

8字节

-2^63–2 ^63-1

-9223372036854775808~9223372036854775807

输入一个整数(先存数(此时默认该数是int类型),再将数放在变量里)
long类型赋值,需要在值的后面加L(超过int 2147483647的才需要)。

long i = 2147483648;/虽然值在long的范围内,但因这个整数超出了int,而java默认为int,因此会报错。
long i = 2147483648L;/后面加一个L后,即认为这个整数是long类型,运行不会报错。

程序运行过程中,瞬时空间(局部变量表 -Slot 槽,一个槽可以存储 byte short int char boolean … reference,不包含long double,最大空间2^32位。long double用两个槽)
赋值时不必精准匹配什么类型。一般用int就行。byte因代表1字节因此在字节流部分有特别用途。
小数/浮点数

类型

字节

负数取值范围

正数取值范围

float

4字节,单精度

-3.4E+38~~-1.4E-45

1.4E-45~3.4E+38

double

8字节 ,双精度

-1.7E+308~-4.9E-324

4.9E-324~1.7E+308

浮点型数值采用科学计数法表示:
2E3 = 2*10^3 结果 2000.0。
为float类型赋值后面+ F(因为浮点型默认类型是double)。
当然,0.0是可以的。
java使用的IEE7E54二进制浮点数算术标准。
double,float不是精确运算,都是近似结果。
float:32bit。 1bit 符号位 8bits指数位 23 bits尾数位。
double: 64bit。 1bit 符号位 11bits 指数位 52bits尾数位。存的都是近似值
也就是为什么int和float都是4字节,而为什么float存储的取值范围更大。

布尔

类型

字节

取值范围

描述

boolean

1字节

true/false

仅可描述真或假

可直接复制true/false,或一个结果为true或false的表达式

Boolean result = 3 > 2;

java中boolean不能参与算术运算。

字符

类型

字节

取值范围(无符号数)

字符编码

char

2字节

0~65535

Unicode字符集(万国码)

char c1 = 'A';
char c2 = 65;
char c3 = '中';
system.out.println(c3);
system.out.println((int)c3);

Unicode字符集支持ASCII编码
Unicode中每个字符对应一个十进制整数,从而可以多种方式赋值

  • 字符赋值:char c1 = ‘A’ ;通过’'描述为字符赋值。
  • 整数赋值:char c2 =’ 65’;通过十进制赋值。
  • 进制赋值:char c3 = ‘\u0041’;通过16进制数41在字符集中对应的字符赋值。

转义字符

转义字符

描述

\n

换行符

\t

制表符

\

反斜线


单引号

"

双引号

引用数据类型(字符串)

类型

取值范围

字符编码

String

任何""之间的内容

Unicode字符序列

字符串内部是字符数组
可以为空
类型转换

  • 自动类型转换
  • 两种类型互相兼容
  • 目标类型大于源类型
    如:short → int → double
short s = 127;
int i = s;
double d = i;

强制类型转换
失去精度:

  • 小数强转为整数,如double → int
  • 整数强转为整数,大的往小的里面放,如short→byte
double d =12.34;
int i = (int)d;
System.out.println(i);
 
short m = 130;
byte n = (byte)m;
System.out.println(n);

强制转换规则:

  • 整数长度足够,数据完整
  • 整数长度不够,数据截断
  • 小数强制转整数,小数位丢失
  • 字符整数互转,数据完整。
  • boolean的取值为true/false 不可与其他类型转换

类型提升
进行算术运算时:

  • 两个操作数有一个小数,类型就自动转为double
  • 两个操作数没有double,有一个为float,计算结果提升为float
  • 如果操作数中没有float,有一个long,计算结果提升为long
  • 如果操作数中没有long,有一个为int,计算结果提升为int
  • 如果操作数中没有int,均为short或byte,计算结果提升为int
    特殊:任何类型与String相加(+)拼接时,其结果自动提升为String

运算符

算术运算符

描述

+

相加

-

相减

*

相乘

/

相除取整

%

相除取余

++,–,递增、减1
a++和++a区别:前++的优先级最高,后++的优先级最低,因此前++是先自加再使用而后++是先使用再自加
赋值运算符:等号右边赋值给等号左边

赋值运算符

描述

=

直接赋值

+=

求和后赋值

-=

求差后赋值

*=

求积后赋值

/=

求商后赋值

%=

求余后赋值

关系运算符:两个操作符比较,运行之后等到一个Boolean类型

关系运算符

描述

>

大于

<

小于

>=

大于等于

<=

小于等于

==

等于

!=

不等于

逻辑运算符:两个Boolean类型的操作数或者表达式进行逻辑比较

操作符

语义

藐视

&&

与(并且)

同时为真,结果为真

||

或(或者)

一个为真,结果为真

!

非(取反)

真即为假,假即为真

三元运算符:将判断的结果赋值给变量

操作符

语义

描述

?:

布尔表达式?结果1:结果2

当表达式为真,获得结果1,为假获得结果2

控制台输入
程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
1.导包 import 包名.类名;//将外部class文件功能引入到自身文件中
import java.util.Scanner;
2.声明Scanner类型的变量;

Scanner input = new Scanner(System.in);
System.out.println("请输入一个值:");



int num = input.nextInt();//将控制台获取的一个整数值,赋值给num变量
System.out.println("您输入的值为:" + num );

nextInt()、nextDouble()
next()接收字符串。
next().charAt(0);接收首个字符

String s = input.next();
char c = input.next().charAt(0);

如果输入不匹配的数据,则会产生java.util.InputMismatchException