【一】Java语言基础

所有知识体系文章,GitHub已收录,欢迎Star!再次感谢,愿你早日进入大厂!

GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual

搜索关注微信公众号“码出Offer”,送你学习福利资源!


目录


一、变量
二、数据类型
三、类型转换
四、运算符
五、表达式
六、自动类型提升
七、控制台输入


思维导图参考:【一】Java语言基础章节思维导图


【知识扩展】按位运算符(&、|、~、^)和移位运算符(>>)介绍和用法


一、变量

  • 概念:计算机内存中的一块存储空间,是存储数据的基本单元
  • 组成部分:数据类型、变量名、值
  • 定义流程:声明、赋值(变量的类型必须与数据的类型一致)
变量的声明和赋值 声明赋值方式
先声明,再赋值 数据类型 变量名; 变量名=值;
声明并赋值 数据类型 变量名=值;
多个同类型变量的声明与赋值 数据类型 变量1,变量2=值

二、数据类型(大家在后面的介绍取值范围内容要注意区分-和~)

【一】Java语言基础_第1张图片

整数(基本数据类型)

类型 字节 取值范围(二进制) 取值范围(十进制)
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或l”。(加L便于区分)

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

类型 字节 负数取值范围 整数取值范围
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

注意:浮点型数值采用科学计数法来表示的,double为浮点型的默认类型,如果需要为float类型赋值,需要在值得后面加“F或f”。(加F便于区分)

布尔(基本数据类型)

类型 字节 取值范围 描述
boolean 1字节 true、false 真、假

注意:boolean不能参与运算

字符(基本数据类型)

类型 字节 取值范围
char 2字节 0 ~ 65535

特殊字符:转义字符(如果用到一个单引号他会出错,转义字符就是为了解决这个问题)

转义字符 描述
\n 换行符
\t 制表位(缩进等于Tab键缩进)
\\ 反斜杠
\’ 单引号
\"" 双引号

注意:其字符用’ '赋值,字符、整数、进制赋值请参考在线工具ASCII编码对照表

https://tool.oschina.net/commons?type=4

字符串(引用数据类型)

类型 取值范围
String 任何" "之间的字面值

数组(引用数据类型)

对象(引用数据类型)

注意:因为语言基础内容不涉及到数组和对象内容,数组和对象内容我会在以后的分享中给大家详细介绍!


三、类型转换

自动类型转换:

两种类型相互兼容,目标类型大于源类型

强制类型转换:

两种类型相互兼容,目标类型小于源类型

注意:通过在源类型前面,加上 (目标类型) ,达到强制转换的目的,但是,有可能失去精度。
例如:小数强转为整数,则失去精度,小数点之后的值,无法保留

强制类型转换规则:

  • 整数长度足够,数据完整。
    • 例:int i = 100; byte b = (byte)i; //b = 100
  • 整数长度不够,数据截断
    • 例:int = 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,不可与其他类型转换
//包装类:8种基本数据类型对应着的一个类,此类即为包装类
//基本数据类型 包装类 及String之间的相互转换
public class TestWrapper {

//        基本数据类型与包装类之间的转化

    public void test1() {
        int i = 10;
        System.out.println(i);
        boolean b = false;
//        基本数据类型-->对应的包装类:调用包装类的构造器
        Integer integer1 = new Integer(i);
        System.out.println(integer1.toString());
//        赋值属性(形参)"12.30"同样也是float类型
        Float f = new Float(12.30F);
        System.out.println(f);
        integer1 = new Integer("12");
        System.out.println(integer1);
//        ""内必须也得符合赋值的基本数据类型规则
//        否则报错java.lang.NumberFormatException
//        integer1 = new Integer("12dd");
//        System.out.println(integer1);
        Boolean b1 = new Boolean(true);
        System.out.println(b1);
//        boolean类型则""中不是true则其他都是false,不会出现报错
        b1 = new Boolean("true1");
        System.out.println(b1);//false

//        class类中的Boolean类型变成了引用数据类型打印出来是null
        Order order = new Order();
        System.out.println("$ " + order.b);

//        包装类-->基本数据类型:调用包装类的Xxx的XxxValue()方法
        int i2 = integer1.intValue();
        System.out.println(i2);
        float f1 = f.floatValue();
        System.out.println(f1);

//        自动装箱和拆箱
        int i4 = 12;
        Integer i3 = i4;//自动装箱
        int i5 = i3;//自动拆箱
    }

//        基本数据类型、包装类与String类之间的转换

    public void test2() {
//        基本数据类型、包装类-->String类:调用String类的静态的valueOf(Xxx x)方法
        int i1 = 10;
        String str1 = i1 + "";//"10"
        System.out.println(str1);
        Integer i2 = i1;
        String str2 = String.valueOf(i1);
        System.out.println(str2);
//        String类-->基本数据类型、包装类:调用包装类的parseXxx(String str)方法
        int i3 = Integer.parseInt(str2);
        System.out.println(i3);
    }
}

class Order {
    Boolean b;
}

四、运算符

操作符 描述
算数运算符 以下为算术运算符
+ 相加、求和
- 相减、求差
* 相乘、求积
/ 除、求商
% 取模、求余
++ 递增、变量值+1、自增1(++与变量的顺序不同作用不同如下:i++、++i)
- - 递减、变量值-1、自减1(- -与变量的顺序不同作用不同如下:i- -、- -i)
i++ i先参与其他运算后再自增1【只是数值增1过,并未参加运算】(口诀:先用后加)
++i i先自增1后【自增1后的值】再参与其他运算(口诀:先加后用)
i- - i先参与其他运算后再自减1【只是数值减1过,并未参加运算】(口诀:先用后减)
- -i i先自减1后【自减1后的值】再参与其他运算(口诀:先减后用)
赋值运算符 以下为赋值运算符
= 直接赋值
+= 求和后赋值
-= 求差后赋值
*= 求积后赋值
/= 求商后赋值
%= 求余后赋值
关系运算符 以下为关系运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
逻辑运算符 以下为逻辑运算符
&& 与(并且):两个操作符,同真为真
II 或(或者):两个操作符,有真为真
非(取反):真亦假,假亦真
三元运算符 以下为三元运算符(三目运算符)
?: 布尔表达式?结果1:结果2(为真获得结果1,为假则相反)

五、表达式

表达式就不用解释了吧!
比如:a + b =10;a > b等,这里就不细讲了!


六、自动类型提升

进行运算时:

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

七、控制台输入

  • 概念: 程序运行中,可以在控制台手动录入数据,再让程序继续运行
  • 操作顺序:
    • 导入包:import java.util.Scanner;(在代码行的最上方)
    • 声明:Scanner 自定义名字 = new Scanner(System.in);
    • 使用Scanner类中对应的函数(区分类型):
      • .nextInt();//获得整数
      • .nextDouble();//获得小数
      • .next();//获得字符串
      • .next().charAt(0);//获得单个字符(数值控制第几个字符,0则是第一个,依次类推)

注意:如果输入了不匹配的数据,则会在终端产生java.util.InputMismatchException的报错信息!


【一】Java语言基础_第2张图片

你可能感兴趣的:(《JavaSE基础》)