IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java尚硅谷核心知识 -> 正文阅读

[Java知识库]Java尚硅谷核心知识

Java基础部分

Java是一种一次编译,到处运行的语言
Java是一种面向对象的编程语言
Java有一个很大的优势在于有自动回收垃圾的机制

为什么要为JDK设置环境变量

在cmd中可以在任何地方调用JDK指令

JDK、JRE、JVM

JDK是Java开发工具包
JRE是Java运行环境
JVM是Java虚拟机
JDK=JRE+java开发工具(javac.exe(编译)、java.exe(运行))
JRE=JVM+核心类库

Java的关键字和保留字

Java中有很多关键字,保留字是指以后的版本可能会用到(goto和const)
在Java中变量的名字不能关键字或者保留字

Java的数据类型

Java是一种强类型语言

强类型和弱类型

强类型语言:是指强制要求为变量设置类型,在编译前就把数据类型进行确定
弱类型语言:是指是在编译后确定数据类型,没有明显的类型,随着环境的不同,自动变换类型。var a=10;编译前无法确定它的类型。

一共有两种。一种是基本类型,另一种是引用类型

基本类型包括:

byte、short、int、long、float、double、char、boolean
在这里插入图片描述

注意:

  • Java中char的范围和c语言中char的范围有区别Java中char占用两个字节,范围是0–65535。
  • 1byte=8bit;
  • long a=12; float b=12;这两种情况不会报错,是因为自动提升的原因

自动提升以及强制转换

自动提升

基本类型中容量小的和容量大的一起运算时,会发生自动提升现象
注意:float的范围比long的还要大。是因为它们底层的存储结构不同。float/double使用科学计数法来存储,而long使用普通的二进制来存储,也就是说一个存的是多少次方,而一个是只有多少位。

强制准换

是指在大容量向小容量转换时发生的,在强制转换时会有精度损失

注意:类型转换都是基本类型之间的,String不能和基本类型之间进行转换,但是包装类可以和String进行转换

有byte、short、char的混合运算时结果都为int类型

引用数据类型包括

String、Array、Interface

Java文件的执行过程

在这里插入图片描述

Java的核心

  • JVM
  • 垃圾回收机制:自动监测对象是否超过作用域(可达性分析和引用计数),进行回收

Java为什么能够跨平台

Java语言的运行依赖于JVM,不同的操作系统有不同的JVM

JVM的组成

类加载子系统、运行数据区(内存)、执行引擎、本地接口库,本地方法库

运行时数据区包括:堆、JVM栈、程序计数器、方法区、本地方法栈

JVM栈:用来存储局部变量、对象引用
堆:存放对象实例,用来存储新创建的对象以及数组
方法区:用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。有个静态域,用来存储被static修饰的静态方法属性或方法。

在这里插入图片描述

运算符

  • 算术运算:+ - * /
  • 赋值运算:
short s=2;
s=s+2;//编译不通过,类型不一致
s+=2;//编译通过,运算时不会改变类型
  • 比较运算
    instanceof
 System.out.println("hello" instanceof String);//true
  • 逻辑运算
&:逻辑与
&&:短路与
|:逻辑或
||:短路或
^:异或。相同为0不同为1
!:非
  • 位运算
<<左移,相当于*2
>>右移,相当于/2
&与运算,都11
|或运算,有11
^异或运算  110^011=101==>5
~取反运算  ~6=7  (补码)0110<==>(补码)1001==>0111(源码)==>7
  • 三目运算符
    举个栗子:
//如果a<60,将a的值置为0。
int a=a>60?a:0;
  • 运算符优先级
    在这里插入图片描述

流程控制

  • 顺序结构
  • 分支结构 :if……else…… switch( ) case:
  • 循环结构:for、where

数组

数组是一种能存储相同数据类型,但是需要占用连续空间数据结构。需要注意的是:长度一旦确定,就不能再进行修改。

注意:数组的索引是从0开始的而数据库库的索引是1开始的,在连接数据库时需要注意。

在这里插入图片描述

在这里插入图片描述

二维数组

就是两个一维数组组成的数组栈中的引用指向堆,堆中存的也是一个引用
在这里插入图片描述

算法中数组的应用

  1. 数组元素的赋值(杨辉三角、回形数等)
  2. 求数值型数组中元素的最大值、最小值、平均数、总和等
  3. 数组的复制、反转、查找(线性查找、二分法查找)
  4. 数组元素的排序算法(稳定性)A和B相等排序后,A和B的次序不变(应用:商品首先根据销量排序,再根据价格排序,就需要排序的稳定性)

oop–万物皆对象

在Java中将功能结构封装在类中,通过类的实例化来调用具体功能结构

主流编程语言要么是面向过程(强调考虑怎么做),要么是面向对象(强调谁来做)。程序员从面向过程的执行者转化成了面向对象的指挥者

举个栗子:把大象装进并冰箱
在这里插入图片描述

类:是指对一类事物的概括。
对象:是指存在的一个真实个体

对象一般通过new来创建。类名 对象名 = new 类名();
如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰

A a=new A();
A b=a;//a和b指向同一位置,修改b也在修改a

oop三大特性

  • 封装:将属性或方法封装起来,给外界流出访问他的接口,不展现具体细节
  • 继承:一个子类继承一个父类,能够直接调用父类的非私有属性和方法,通过set、get也能访问私有属性。
  • 多态:分为运行时多态(overload)和编译时多态(override),多态的三个必要条件 :1.要有继承(实现implements) 2.要有重写(overWrite&overRide) 3.父类引用指向子类对象

封装

将方法和属性进行私有化,对实现细节进行隐藏,只暴露出供外界使用的接口

封装的体现:将属性进行私有化,然后通过set和get对属性进行设置和获取

继承

Java是单根继承,一个子类只能继承一个类。但是可以实现很多个接口

说明:所有的子类都会直接或间接继承Object类

多态

重载
System.out.println()方法就是典型的重载方法,其内部的声明形式如下:

public void println(byte x)
public void println(short x)
public void println(int x)
public void println(long x)
public void println(float x)
public void println(double x)
public void println(char x)
public void println(double x)
public void println()
//这2个方法不能构成重载,会有编译错误。
public int A(int i);
public double A(int i);
//这2个方法可以形成重载
public int A(int i)public double A(double i);

对象的内存解析

在这里插入图片描述

对象数组的内存解析

在这里插入图片描述

成员变量(属性)和局部变量

形同点:

  • 定义变量的格式相同
  • 都是先声明后使用
  • 都有相应的作用域

不同点:

  • 属性定义在类下,局部变量定义在方法,构造器等内部
  • 属性可以用权限修饰符,局部变量不可以用权限修饰符
  • 属性加载到堆中,局部变量加载到栈中
  • 属性有默认初始值,局部变量没有初始值

在这里插入图片描述

对象数组

引用类型:无论是系统提供的还是用户自定义的,在调用时都需要进行实例化来使用

Students []stu=new Students[20];
int n=sc.nextInt();
for(int i=0;i<n;i++){
    stu[i]=new Student();//存在数组里的对象进行实例化
}

Java中参数传递

Java只有值传递

  • 当传递类型是基本类型时,传递的就是参数真实的值,在方法中对值进行修改,不影响本身的值
  • 当传递类型时引用类型时,传递的就是地址的值,在方法中进行修改数据时,会影响本身的值
    在这里插入图片描述

在这里插入图片描述

不是说只要传递的参数是引用类型的就会修改数据的值,他的大前提是传递前后两个引用指向的是同一块内存。

举个栗子:

String s="hello";
Test test=new Test();
test.change(s);
//    change(String s){
//        s="hi";
//    }

System.out.println(s); 

匿名内部类

就是没有名字的一种嵌套类,一个接口/类的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类/子类去实现/重写。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码冗余。

假设当前有一个接口,接口中只有一个方法

public interface Interface01 {
    void show();
}

为了使用该接口的show方法,我们需要去创建一个实现类,同时书写show方法的具体实现方式

public class Interface01Impl implements Interface01{
    @Override
    public void show() {
        System.out.println("I'm a impl class...");
    }
}

如果实现类Interface01Impl全程只使用一次,那么为了这一次的使用去创建一个类,未免太过麻烦。我们需要一个方式来帮助我们摆脱这个困境。匿名内部类则可以很好的解决这个问题。

我们使用匿名内部类

public static void main(String[] args) {
    Interface01 interface01 = new Interface01() {
        @Override
        public void show() {
            System.out.println("这里使用了匿名内部类");
        }
    };
    //调用接口方法
    interface01.show();
}

构造器constructor

构造器非为默认构造器和默认构造器,系统会提供一个默认构造器。
构造器与非构造器之间是重载关系

想要调用另一个类的方法,就需要将类实例化成对象然后调用类里面的方法和属性

this关键字:指向本地的属性、方法和构造器

  • 在类的构造器中,可以使用this()调用本类的其他构造器,在用this进行调用构造器时必须放在第一行
//boy类的marry方法
marry(Girl girl){
       System.out.println("I Love girlA");
}
//girl类的marry方法
marry(Boy boy){
       System.out.println("I Love boyA");
       boy.marry(this);//谁调用marry,this就是谁。boyA回应 I Love girlA
}
  • 我们可以用this来区分属性和局部变量。
this.name = name;

Java常用的方法解释

compare()方法

  • 当前对象和传入对象相同,返回0
  • 当前对象大于传入对象,返回正数
  • 当前对象小于传入对象,返回负数
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:04:09  更:2022-05-05 11:07:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:05:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码