学习Java第二天--语言基础概念

2.语言基础

1.前置知识

  1. 什么是内存?
    内存即是一块瞬时状态的存储空间,由一定的容量。

  2. 内存与硬盘的区别?
    内存的造价比较高,整个的计算机硬件资源是比较稀缺的。(内存得省着点用)
    工业上的瓶颈,多数大容量的内存都是由多个内存条组成的。

  3. 计算机给Java程序多大的内存空间?
    Java虚拟机(Java程序),默认分配的物理内存容量是计算机的1/8.

  4. 计算机存储容量的基本单位/
    bit(位 - 8位等于1个字节) - Byte(1字节) - KB - MB - GB - TB - PB - EB - ZB - YB - BB - NB - DB - CB - XB(都是1024的进制关系)

2.1 变量

2.1.1 变量的概念

计算机内存中的一块存储空间,是存储数据的基本单元。

  • 整个内存就好像是酒店,当中包含了多个房间;
  • 房间的类型有所不同(单人间,双人间…);
  • 每个房间都有一个唯一的门牌号;
  • 每个房间的住客也不相同;

2.1.2 变量的组成

酒店的房间——变量

  • 房间的类型——数据类型
  • 房间门牌号——变量名
  • 房间的住客——值

2.1.3 变量的定义流程

2.1.3.1 声明

数据类型 变量名;
int money;    //开辟整数变量空间

2.1.3.2 赋值

变量名 = 值;
money = 100;  //将整数赋值给变量

注意:Java是强类型语言,变量的类型必须与数据的类型一致。

2.1.4 变量的定义方式

2.1.4.1 声明变量的三种方式:

  • 先声明,再赋值:【常用】
    数据类型 变量名;
    变量名 = 值;

  • 声明并赋值:【常用】
    数据类型 变量名 = 值;

  • 多个同类型变量的声明与赋值:【了解】
    数据类型 变量1,变量2,变量3 = 值3,变量4,变量5 = 值5;

2.2 数据类型

  • Java中的变量具有严格的数据类型区分;(强类型语言)
  • 在Java语言中,任何一个值,都有其对应类型的变量。

2.2.1 基本数据类型(整数)

类型 字节 取值范围(二进制) 取值范围(十进制)
byte 1字节 -27~27-1 -128~127
short 2字节 -215~215-1 -32768~32767
int 4字节 -231~231-1 -2147483648~2147483647
long 8字节 -263~263-1 -9223372036854775808~9223372036854775807

注:

  • int为整数的默认类型,如需为long类型赋值,需要在值的后面追加"L"
  • 若未加"L",则会报错"过大的整数"
  • 若在算术运算中出现超出上下限的情况,则会出现溢出的情况,如:强制byte类型下,127+1,会得到-128。127+2,会得到-127。-128-1,会得到127。

2.2.2 基本数据类型(小数/浮点数)

类型 字节 负数取值范围 正数取值范围
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)
  • 3E5等价于3*10^5(结果:300000.0)

注:double为浮点数的默认类型,如需为float类型赋值,需要在值的后面追加"F"。

2.2.3 基本数据类型(布尔)

类型 字节 取值范围 描述
boolean 1字节 true/false 仅可描述“真”或“假”
  • 可直接赋值true/false
  • 也可以赋值一个结果为true/false的表达式
  • 注意:Java中的boolean不能参与算术运算

2.2.4 基本数据类型(字符)

类型 字节 取值范围 (无符号数) 字符编码
char 2字节 0~65535 Unicode字符集(万国码)

char 每一个字符背后,都有一个二进制数字代表

  • Unicode字符集支持ASCII编码(美国标准信息交换码);
  • Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值;
    字符赋值:char c1 = ‘A’;(通过’'描述为字符赋值)
    整数赋值:char c2 = 65;(通过十进制数65在字符集中对应的字符赋值)
    进制赋值:char c3 = ‘\u0041’;(通过十六进制数41在字符集中对应的字符赋值)

2.2.5 转义字符

  • 如果需要在程序中输出一个单引号字符,该如何完成?
    为了解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号。
    \n -> 换行符
    \t -> 缩进(制表位)
    \\ -> 反斜线
    \’ -> 单引号
    \" -> 双引号

2.2.6 引用数据类型(字符串)

类型 取值范围 字符编码
Sting 任何""之间的字面值 Unicode字符序列
  • String类型的字面取值:
    String str1 = “你好”;
    String str2 = “Hello”;
    String str3 = “分布式架构师”;
    String str4 = “Java Engineer”;

2.3 类型转换

2.3.1 自动类型转换

  • 两种类型相互兼容;
  • 目标类型大于原类型;

2.3 类型转换

2.3.1 自动类型转换

  • 两种类型相互兼容;
  • 目标类型大于原类型;
    在这里插入图片描述

2.3.2 强制类型转换

  • 两种类型相互兼容;
  • 目标类型小于源类型;
    在这里插入图片描述

2.3.3 强制类型转换规则

  • 整数长度足够,数据完整;
    例:int i =100; byte b = (byte)i; //b=100

  • 整数长度不够,数据截断;
    例:int i = 1000; byte b = (byte)i; //b=16(符号位变化,可能变为负数)
    在这里插入图片描述

  • 小数强转整数,数据截断;
    例:double d = 2.5; int i = (int)d; //i=2(小数位舍掉)

  • 字符整数互转,数据完整;
    例:char c = 65; int i = (int)c; //i=65
    boolean的取值为true/false,不可与其它类型转换。

2.3.4 表达式

  • 使用运算符连接的变量或字面值,并可以得到一个最终结果;

  • 例如:
    1+2;
    int a = 3; a-2;
    int b = 10; int c = 20; b*c; c/b;
    short s = 100; int e = 200; d>e; d<=e;

2.3.5 运算符

  • 算术运算符:两个操作数进行计算
操作符 描述
+ 加、求和
- 减、求差
* 乘、求积
/ 除、求商
% 模、求余
  • 算术运算符:一元运算符(只有一个操作数)
操作符 描述
++ 递增,变量值+1
- - 递减,变量值-1
  • 赋值运算符:等号右边赋值给等号左边
操作符 描述
= 直接赋值
+= 求和后赋值
-= 求差后赋值
*= 求积后赋值
/= 求商后赋值
%= 求余后赋值
  • 关系运算符:两个操作数进行比较
操作符 描述
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
  • 逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较;
操作符 语义 描述
&& 与(并且) 两个操作数,同时为真,结果为真
|| 或(或者) 两个操作数,有一个为真,结果为真
非(取反) 意为“不是”,真即是假,假即是真

在这里插入图片描述

  • 三元运算符:将判断后的结果赋值给变量
操作符 语义 描述
?: 布尔表达式?结果1:结果2 当表达式结果为真,获得结果1;当表达式结果为加,获得结果2

在这里插入图片描述

2.3.6 自动类型提升

  • 进行算术运算时:
    两个操作数有一个为double,计算结果提升为double;
    如果操作数中没有double,有一个为float,计算结果提升为float;
    如果操作数中没有float,有一个为long,计算结果提升为long;
    如果操作数中没有long,有一个为int,计算结果提升为int;
    如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
  • 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

2.3.7 控制台输入

  • 程序运行中,可以在控制台(终端)手动录入数据,再让程序继续运行;
  • 导包语法:import 包名.类名; //将外部class文件功能引入到自生文件中;
  • 使用顺序:
    导入 java.util.Scanner;
    声明Scanner类型变量;
    使用Scanner类中对应的函数(区分类型):
    .nextInt(); //获得整数
    .nextDouble(); //获得小数
    .next(); //获得字符串
    .next().charAt(0); //获得单个字符
  • 注:如果输入了不匹配的数据,则会产生 java.util.InputMismatchException

2.4 总结

  • 变量
    计算机内存中的一块存储空间,是存储数据的基本单元;

  • 数据类型
    基本数据类型(8种)、引用数据类型(String、数组、对象);

  • 运算符
    算术运算符、赋值运算符、关系运算符、逻辑运算符;

  • 类型转换
    自动类型转换、强制类型转换;

  • 类型提升
    数字间的常规类型提升,字符串的特殊类型提升;

  • 控制台录入
    引入工具包、声明Scanner、调用对应函数接受控制台录入数据。

发布了34 篇原创文章 · 获赞 7 · 访问量 1317

猜你喜欢

转载自blog.csdn.net/weixin_44257082/article/details/104227811