Java基础知识回顾

2023-12-20 08:59:24

Java基础

一、Java概述

1、Java技术体系平台

类型简介
JavaSE 标准版支持面向桌面级的应用
JavaEE 企业版支持为企业开发的应用
JavaME 小型版运行在移动终端的平台

2、Java重要的特点

  • 面向对象的语言(OOP)

  • 健壮的语言,具有强类型转换、异常处理、垃圾自动回收

  • 跨平台的语言,一个编译好的(.class)文件可以在多种系统上运行(运行在不同平台对应的JVM虚拟机上)

    • Win版本JVM
    • Linux版本的JVM
    • Mac版本的JVM
  • 解释型的语言,编译后的代码,需要在解释器上面进行运行(对应的编译型语言,编译后的代码,可以直接在机器上运行)

3、JDK,JRE、JVM

  • JDK:(Java Development Kit) Java开发工具包
    • JDK = JRE + java的开发工具【Java,javac,javadoc,javap等】
  • JRE:( Java Runtime Environment ) java的运行环境
    • JRE = JVM + JavaSE的标准类库
    • 运行开发好的.class文件只需要JRE
  • JVM:( Java Virtual Machine) Java的虚拟环境

java运行流程:
请添加图片描述

java类的组织形式:

请添加图片描述

4、Java开发细节

  1. Java的源文件以.java为扩展名。源文件的基本组成是class

  2. 一个源文件最多只能一个public类,其他类的个数不限。文件名必须按该public类名进行命名。

  3. Java严格区分大小写

  4. Java程序的入口是main方法,(可以写在非public类中)有固定书写格式:

    • public static void main(String[] args){...}
      

二、变量

变量 = 变量名 + 值 + 数据类型

1、Java的数据类型

  • 基本数据类型(8种)
    • 整数类型
      • int 占四个字节
      • short 占两个字节
      • long 占八个字节
      • byte 占一个字节
    • 浮点类型
      • float 占四个字节
      • double 占八个字节
    • 字符型
      • char 两个字节
    • 布尔型
      • boolean 一个字节
  • 引用数据类型
    • 接口
    • 数组

2、数据类型转换

java的类型转换有两种:一种是自动类型的转换,一种是强制类型的转换。

(1)自动类型转换

规则: 数据类型按精度大小进行自动转换
请添加图片描述

注意细节:

  1. 多种数据类型运算,会自动转换为容量最大的进行计算
  2. 在自动类型转换过程中,不能将精度大的数据类型转换为精度小的数据类型。
  3. byteshort)和char 不会自动转换
(2)强制类型转换

属于自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,同时需要加上强制转换符(),可能会造成精度降低或者溢出的情况。

注意细节:

  1. 强制转换符只针对最近的操作数有效。

    int x = (int)10*3.5 + 6*1.5;		//报错
    int y = (int)(10*3.2 + 6*3.5);		//正常运行
    
  2. char 类型可以保存int类型的常量值,但是不会保存int的变量值

    char c1 = 10000;    //正常运行
    int m = 100;
    char c2 = m;        //报错
    char c3 = (char)m;  //正常运行
    
  3. byteshortchar类型在进行运算时,当做int进行处理

基本数据类型和String类型的转换

  • 基本类型转String

    int n1 = 100;
    float n2 = 1.1f;
    double n3 = 1.2;
    boolean b1 = true;
    String s1 = n1 + "";			//直接加双引号便可以实现类型的转换
    String s2 = n2 + "";
    String s3 = n3 + "";
    String s4 = b1 + "";
    System.out.println("str1:"+s1+"  str2:"+s2+"  str3:"+s3+"  str4:"+s4);
    
  • String类型转基本类型(调用基本类型的包装类,调用parseXXX方法

    Integer.parseInt("123");		//调用parseXXX方法
    Double.parseDouble("123.4");
    Float.parseFloat("123.45");
    Short.parseShort("12");
    Long.parseLong("123");
    Boolean.parseBoolean("true");
    Byte.parseByte("12");
    

三、运算符

1、算术运算符

平时最常用的运算符

运算符运算
+正号、加号
-负号、减号
*乘号
/除号
%取模(取余)
++自增,根据前后顺序分为,先运算后取值,和先取值后运算
自减,根据前后顺序分为,先运算后取值,和先取值后运算

2、赋值运算符

将某个运算后的值,赋给指定的变量。

运算符运算a 与b进行运算
=等于号a = b, 为b赋值给a
+=加于等于a += b,为 a = a + b
-=减于等于a -= b,为 a = a - b
*=乘以等于a *= b,为 a = a * b
/=除以等于a /= b,为 a = a / b
%=取余等于a %= b,为 a = a % b

3、关系运算符

关系运算符的结果都是boolean型的,经常用在if或者循环结构中

运算符运算
==相等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于

4、逻辑运算符

连接多个条件(多个关系表达式),最终的结果是boolean类型

  • 短路与 &&, 短路或 ||, 取反
  • 逻辑与 &, 逻辑或 |,逻辑异或 ^
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

5、位运算符

位运算符用于直接操作二进制位的运算,可以用来进行高效的位操作。在很多情况下,采用位运算的方法来进行计算可以提高运算效率

运算符描述示例
&按位与,对应位都为1时结果为1,否则为05 & 3 = 1
|按位或,对应位有一个为1时结果为1,两个都为0时结果为0`5
^按位异或,对应位不同时结果为1,相同时结果为05 ^ 3 = 6
~取反,对二进制数的每一位取反~5 = -6
<<左移,将一个数的二进制位向左移动指定的位数5 << 1 = 10
>>右移,将一个数的二进制位向右移动指定的位数5 >> 1 = 2
>>>无符号右移,运算规则:低位溢出,高位补零5 >>> 2 = 1

6、三元运算符

基本语法为: 条件表达式 ? 表达式1 : 表达式2;

运算规则:

  1. 如果条件表达式为true,运算后的结果是表达式1
  2. 如果条件表达式为false,运算后的结果为表达式2
int a = 1, b = 2;
//三元运算符
int ans = a > b ? a++ : b++;
//等价表达
if(a > b) ans = a++;        
else  ans = b++;

7、运算符优先级

优先级如下,最上面的优先级最高

运算符描述
(),{}括号
单目运算符(++、--、~、!单目运算符
算术运算符(*,/, %, +, -乘、除、取模、加、减等
移位运算符 (<<, >>)左移、右移等
比较运算符 (>, <, >=, <=)相等、不等、大于、小于、大于等于、小于等于
&按位与
^按位异或
``
&&逻辑与
`
? :条件运算符
赋值运算符 (=, *=, /=, +=, -=)赋值、加等于、减等于、乘等于等

8、标识符(变量)

标识符(变量)命名规则:

  1. 由26个英文字母大小写,0-9_或$组成
  2. 数字不可以开头
  3. 不可以使用保留字和关键字,可以包含保留字和关键字
  4. 严格区分大小写,长度无限制
  5. 不能包含空格

示例:

int 12ab = 10; //报错,开头不能是数字
int a b = 10;  //报错,中间不能加入空格
int a# = 10;  //报错,特殊字符只能是_或者$
int goto = 10; //报错,不能是保留字或者是关键字

标识符命名规范:

  1. 包名:多单词组成时,都是小写:aaa.bbb.ccc
  2. **类名、接口名:**多单词组成时,所有单词的首字母都是大写:(大驼峰命名法)
    • 举例:TankShotGame
  3. 变量名、方法名:第一个单词首字母小写,第二个单词开始每个首字母大写(小驼峰命名法)
    • 举例:tankShotGame
  4. 常量名:所有单词都是大写
    • 举例:比如所得税 TAX_RATE

9、关键字

50个关键字如下表:

基本类型关键字流程控制关键字类、方法和变量相关关键字访问控制关键字异常处理关键字其他关键字
booleanifclasspublictrystatic
byteelseinterfaceprivatecatchfinal
charswitchextendsprotectedfinallysynchronized
doublecaseimplementsthrowtransient
floatwhilenewthrowsvolatile
intdoreturnthis
longforvoidsuper
shortbreakpackage
continueimport
default

四、数组

1、数组的赋值机制

  1. 基本数据类型赋值,采用值传递的方式。
  2. 数组数据类型赋值,是采用引用传递的方式,赋的值是地址。

? 举例:

//基础数据类型赋值,是值传递
int a = 10;
int b = a;      //a的值10,直接复制一份给b
b = 80;
System.out.println("a:"+a+ "  b:" + b);
//数组的赋值,是引用传递,传递的是地址
int arr1[] = {1,2,3};       //假设arr1指向的地址为0x0011
int arr2[] = arr1;          //那么arr2指向的地址也是0x0011,这个地址指向的内容是一样的
arr2[0] = 10;               //arr2[0]修改的是0x0011地址指向的内容,所以arr1[0] = arr2[0] = 10;
System.out.println("arr1[0]:"+arr1[0]+ "  arr2[0]:" + arr2[0]);

2、二维数组

主要是申请,二维数组可以通过静态申请和动态申请两种方式进行。

//静态申请,直接申请一个静态的二维固定长度数组
int arr1[][] = new int[2][3];
int arr2[][] = {{1,2,3},{4,5,6},{7,8,9}};

//动态申请,第一维长度先固定,后面根据需要设定第二维度的长度
int arr3[][] = new int[3][];
for(int i = 0; i < arr3.length; i++){
    arr3[i] = new int[arr3.length];
}

文章来源:https://blog.csdn.net/m0_46335449/article/details/135097149
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。