Java - 1. 基础

Java 三大技术平台

  • Java SE:标准版,Java 核心和基础
  • Java EE:企业版,企业级开发的解决方案
  • Java ME:应用版,移动设备应用的解决方案

注:只需学习Java SE (基础)和 Java EE(进阶)

JDK 的组成

  • JVM:Java 虚拟机,真正运行Java程序的地方
  • 核心类库:Java内部自带的程序,供程序员在程序中调用
  • JRE = JVM + 核心类库。JRE:Java 的运行环境

Java 的跨平台

  • 编写好的Java程序,可以在安装了 JVM 的不同系统上运行

 IDEA 管理Java程序的结构

idea开发Java程序的步骤:

 

第一步   创建工程 new Project(空工程)

第二步   创建模块 new Module

第三步   创建包 new Package

 第四步   创建类 

 

Java 的基础概念

字面量

关键字

关键字是java内部的,不能用作 类名、变量名,否则会报错!

标识符

  • 我们写程序时起的名字,如类名、变量名都是标识符。
  • 标识符的要求:由数字、字母、下划线(_)和美元符($) 组成
  • 不能以数字开头、不能用关键字、且区分大小写 

基本数据类型

  •  自动类型转换:类型范围小的变量,可以直接赋值给类型范围大的变量。

byte a = 12;
int b = a;
System.out.println(b); // 12
  •  强制类型转换:强行将类型范围大的变量、数据赋值给类型范围小的变量。
int a = 20;
byte b =  (byte)a;
System.out.println(b);     // 20


int i = 1500;
byte j =  (byte)i;
System.out.println(j);     // -36
注意事项:
强制类型转换可能造成数据(丢失)溢出;
浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

引用数据类型

引用数据类型:指存储对象地址的数据类型。与基本数据类型不同,引用数据类型指向内存中的对象,而不是直接存储值。

类        Class
接口     Interface
   - 接口内定义了一组方法,但没有实现它们。一个类可以实现多个接口,从而有多种行为。
   - 例如:`MyClass implements MyInterface` 其中`MyClass`实现了`MyInterface`接口。
数组        Array
   - 数组是一种容器对象,用于存储同种类型的数据。
枚举        Enum
   - 枚举是特殊的数据类型,它允许变量成为一组预定义的常量。
   - 枚举有助于减少代码中的错误,因为只能从一组固定的值中选择。
字符串        String
   - String 属于java.lang包的一部分。
   - String对象不可变,一旦创建就不能更改内容。        例如:String Aj = "Hello, World!";
注解        Annotation
   - 注解是元数据,提供有关程序代码的信息,但它们本身不包含任何业务逻辑。
   - 注解用于声明(如类、方法、变量等)或包。例如,@Override用于标记一个方法是否重写父类的方法。
泛型        Generics
   - 泛型允许你定义类、接口和方法时使用类型参数,这样就可以在调用这些类、接口和方法时指定具体的类型。
   - 虽然泛型本身不是一种数据类型,但它极大地影响了引用类型的使用方式。例如,`List<String>`表示一个存储字符串对象的列表。
内部类        Inner Class
   - 内部类是定义在另一个类里面的类。它提供了更好的封装,并可以直接访问外部类的所有成员(包括私有成员)。
   - 内部类分为成员内部类、局部内部类、匿名内部类、静态嵌套类
抽象类        Abstract Class
   - 抽象类不能被实例化,用于被其他类继承。它可以包含抽象方法(没有具体实现的方法)和具体方法(有具体实现的方法)
   - 例如,你可以定义一个抽象类Animal,其中包含抽象方法make(),然后让具体的子类如Dog或Cat去实现这个方法。
记录        Record(自Java 14作为预览特性,Java 16正式支持):
    - 记录是一种特殊的类,旨在简化创建不可变数据载体对象的任务。记录自动提供全参构造器、访问器方法、`equals`、`hashCode`以及`toString`方法的实现。
    - 例如:`record Person(String name, int age) {}`

引用类型的共同点:都存储在堆内存中,并且可以通过引用来访问。

运算符

// 三元运算符:条件表达式?值1:值2;
// 执行流程:计算表达式的值,如果值为true,返回值1;如果为false,返回值2。
public class YunSuanFu {
    public static void main(String[] args) {
        sanYuan();
        sanYuan2(50);   // 输出不及格
        sanYuan2(60);   // 输出及格
        sanYuan2(70);   // 输出及格
    }
    // 三元运算符
    // 语法: 条件表达式 ? 表达式1 : 表达式2;
    // 如果条件表达式为true, 则执行表达式1, 否则执行表达式2
    public static void sanYuan() {
        int a = 1;
        int b = 2;
        int c = a > b ? a : b;
        System.out.println("最大值是:" + c);        // 最大值是:2
    }

    public static void sanYuan2(int score) {
        String str= score >= 60 ? "及格" : "挂科";
        System.out.println("考试结果是:" + str);
    }
}

        

流程控制

分支结构 if

循环结构 for

循环结构 while

什么时候用for,什么时候用while?

  • 功能完全一样,for能解决的while也能解决,反之也是。
  • 使用规范:知道循环几次,使用for。不知道循环几次,建议用while

循环结构 do-while

 do-while循环的特点: 先执行后判断(至少会执行一次)

break   :  跳出并结束当前所在循环的执行。

continue:  用于跳出当前循环的当次执行,直接进入循环的下一次执行。

数组Array

  • 数组是一个容器,用来存储同种类型的数据
  • 数组属于引用数据类型,数组变量名中存储的是数组在内存中的地址信息

静态初始化数组:定义数组时为数组元素赋值。

// 定义数组的完整格式
int[] arr1 = new int[]{20, 10, 80, 60, 90};
// 定义数组的简化格式
int[] arr1 = {20, 10, 80, 60, 90};

// “数据类型[] 数组名”也可写成 “数据类型 数组名[] ”。
int arr1[] = new int[]{20, 10, 80, 60, 90};    // 完整定义格式
int arr1[] = {20, 10, 80, 60, 90};             // 简化定义格式


范例:
// 定义一个字符串数组arr2
String[] arr2 = {"牛二", "西门", "全蛋"};

// 定义一个double浮点型数组arr3
double[] arr1 = {20, 10.2, 80.0, 0.1, 0};

动态初始化数组:只确定数组的类型和存储数据的容量。不事先存入数据

// 语法:数据类型[]数组名 = new 数据类型[长度]
// 动态初始化定义数组arr1,并设置数组长度为9(最多存储9个double型数据)
// 但并不是说数组内是空的,而是指arr1数组内存储的是9个double型数据0.0
// 即arr1 = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
double[] arr1 = new double[9];    

 动态初始化数组的默认值规则:

二维数组

集合

集合:长度可变,可以存储不同数据类型的数组

集合位于 java.util 包,使用集合的时候,必须导入  java.util 包

Collection 接口:

注意:在开发中,很少直接用 Collection 接口,而是使用其子接口,Collection 接口的子接口主要是:List、Set、Queue、SortedSet。

Collection 的子接口 - List

List 的子接口 - ArrayList

API(应用程序编程接口):Java写好的程序,程序员可以直接拿来调用。

List 的子接口 - LinkedList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值