JavaSE基础入门_002_Java语言基础

语言基础

前置知识

  1. 什么是内存?

    1. 内存是瞬时状态下的储存空间,限制内存的原因:造价高、工业设计上的瓶颈。

  2. JAVA虚拟机(JAVA程序)默认分配到的物理内存是1/8。

  3. bit(位) -> Byte(字节) -> KB -> MB -> GB -> TB -> PB -> EB -> ZB -> YB -> BB -> NB ->DB -> CB -> XB

    1. bit --> Byte 是 8进制,其他都是1024进制

       

变量的概念

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

    • 整个内存就像是一个酒店,当中包含了多个房间

    • 房间的类型有所不同(单人间、两人间……)

    • 每个房间都有唯一的门牌号

    • 每个房间的住客也不相同

 

  • 酒店的房间——变量【组成如下:】

    • 房间的类型——数据类型

    • 房间门牌号——变量名

    • 房间的住客——值

 

  • 变量的定义流程:

    • 声明:

      • 数据类型 变量名;

      • int money; // 开辟整数变量空间

         

    • 赋值:

      • 变量名 = 值;

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

         

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

变量的定义方式

  • 声明变量的3种方式

    • 先声明,再赋值【常用】

      • 数据类型 变量名;

      • 变量名 = 值;

         

  • 声明并赋值:【常用】

    • 数据库类型 变量名 = 值;

 

System.out.println()//输出括号内的内容后换行

 

  • 多个同类型变量的声明与赋值:【了解】

    • 数据类型 变量1,变量2,变量3 = 值3 , 变量4, 变量5 = 值5;

 

注意:变量需要初始化【先赋值,再使用】;否则,会报错:尚未初始化。

 

数据类型

  • Java中的变量具有严格的数据类型区分。(强类型语言)

  • 在Java语言中,任何一个值,都有其对应类型的变量。

Java中的数据类型:

基本数据类型引用数据类型
整数 字符串
小数 数组
布尔 对象
字符  
  1. 二进制表现形式:

    1. byte == 8 bit 0000 0000

      例如:

      十进制二进制
      1 0000 0001
      3 0000 0011
      5 0000 0101
      7 0000 0111
数据类型字节长度
byte 1
short 2
int 4
long 8

int为整数的默认类型,long型数据 需要在数据后面带 L;例如:

long l = 2147483678L;

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

类型字节长度
float 4
double 8

科学计数法:

2E3 = 2 * (10 ^3) = 2000

注意:

  • double为浮点数的默认类型,如需为float类型,需要在值的后面追加“F”

  • float f = 3.43F

近似值:

  • float:4个字节 单精度

    • 32bit 1bit符号位 8bits指数位 23bits尾数位

  • double:8个字节 双精度

    • 64bit 1bit符号位 11bits指数位 52bits尾数位

布尔

类型字节取值范围描述
boolean 1字节 true/false 仅可描述“真”或者“假”
  • 可直接赋值true/false

  • 也可以赋值一个结果为true/false的表达式

  • 注意:Java中的Boolean不能参与算数运算

 

字符型

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

英文对应的ASCII编码;中文或其它国家语言对应Unicode编码。

  • Unicode字符集支持ASCII编码

  • Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值

    • 字符赋值:char c1 = 'A';(通过''述为字符赋值)

    • 整数赋值:char c2 = 65;(通过十进制65在字符集中对应的字符赋值)

    • 进制赋值:char c3 = 'u0041';(通过十六进制【u】41在字符集中对应的字符赋值)

 

转义字符

  • 如果需要在程序中输出一个单引号字符,该如何完成?

    转义字符描述
    换行符
    缩进(制表符)
    反斜线
    ' 单引号
    '' 双引号

 

引用数据类型(字符串)

类型取值范围字符编码
String 任何“ ”之间的字面值 Unicode字符序列

 

  • String类型的字面取值:

    String str = "你好";

类型转换

  • 自动类型转换:

    • 两种类型相互兼容。

    • 目标类型大于源类型。

 

  • 强制类型转换:

    • 两种类型相互兼容

    • 目标类型小于源类型

short s = 123;
byte b = (byte)s;

 

可能会丢失精度的情况:

【长度大的数据类型向长度小的强制转换】

  • 小数强转为整数

double x = 12.34;
int y = (int)x;
//输出 y:12
  • 整数强转为整数(大的往小的里面放)

short m = 258;
byte n = (byte)m;
//输出 n: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(小数位舍掉)

 

  • 字符整数互转,数据完整

    • 例如:

    • char c = 65;    int i = c;  //i = 65
  • boolean的取值为true/false,不可与其他类型转换。

 

表达式

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

  • 例如:

    • 1 + 2;

    • int a = 3; a - 2;

    • int b = 10; int c = 20; b*c; c / b;

    • short d = 100; int e = 200; d > e; d <= e;

 

自动类型提升

  • 进行算术运算时:

    • 两个操作数有一个为double,计算结果提升为double。

    • 如果操作数中没有double,有一个为float,计算结果提升为float。

    • 如果操作数中没有float,有一个为long,计算结果提升为long。

    • 如果操作数中没有long,有一个为int,计算结果提升为int。

    • 如果操作数中没有int,均为short或者byte,计算结果仍旧提升为int。

  • 特殊:任何类型与String相加(+)时,实际为拼接,其结果自动提升为String。

 

运算符

  • 算数运算符:两个操作数进行计算

    • 操作符描述
      + 加、求和
      - 减、秋茶
      * 乘、求积
      / 除、求商
      % 模、求余
  • 算数运算符:一元运算符(一元:只有一个操作数)

    • 操作符描述
      ++ 递增、自增1
      -- 递减、自减1
  • 赋值运算符:等号右边赋值给等号左边

    • 操作符描述
      = 直接赋值
      += 求和后赋值
      -= 求差后赋值
      *= 求积后赋值
      /= 求商后赋值
      %= 求余后赋值
  • 关系运算符:两个操作数进行比较

    • 操作符描述
      > 大于
      < 小于
      >= 大于等于
      <= 小于等于
      == 等于
      != 不等于
  • 逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较

    • 操作符语义描述
      && 与(并且) 两边同时为真。结果为真
      || 或(或者) 一边同时真。结果为真
      非(取反) 取原来的反,即原真现假,原假现真
  • 三元运算符:将判断后的结果赋值给变量

    • 操作符语义描述
      ?: 布尔表达式?结果1:结果2 当表达式结果真,获得结果1;当表达式结果为假,获得结果2
  //三元运算符使用:
 String tag = date == "07"?"Happy":"all right";

控制台输入

  • 程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。

  • 导包语法:import 包名.类名;//将外部class文件功能引入到自身文件中.

  • 使用顺序

    • 导入 java.util.Scanner

    • 声明Scanner类型的变量

    • 使用Scanner类中对应的函数(区分类型):

      • .nextInt(); //获得整数

      • .nextDouble(); //获得小数

      • .next(); //获得字符串

      • .next().charAt(0); //获得首个字符

  • 注意:如果输入了不匹配的数据,则会产生: java.util.InputMismatchException [输入不匹配的错误]

 

总结

  • 变量:

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

  • 数据类型:

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

  • 运算符:

    • 算术运算符, 赋值运算符, 关系运算符, 逻辑运算符,三元运算符

  • 类型转换:

    • 自动类型转换, 强制类型转换

  • 类型提升:

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

  • 控制台录入:

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

原文地址:https://www.cnblogs.com/77-is-here/p/12858986.html