Java基础 - 黑马

我是南城余!阿里云开发者平台专家博士证书获得者!

欢迎关注我的博客!一同成长!

一名从事运维开发的worker,记录分享学习。

专注于AI,运维开发,windows Linux 系统领域的分享!

知识库链接:

Java基础入门 · 语雀


1. 编程语言发展历史

机器语言-》汇编语言-》高级语言

Java属于高级语言,高级语言都是通过翻译之后变为计算机底层可以识别的机器语言

机器语言都是由0和1组成的

1.1. jdk组成

jdk是由jvm和核心类库(这两个叫做jre)还有开发工具(Java、Javac等组成)

jvm:Java虚拟机,真正让Java程序运行的地方

jre:Java运行环境

2. 类型转换

  1. 自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量

byte -> short ->int -> long -> float -> double

char-> int(char转换为int对应的是字母所对应的数字)

 byte a = 12;
 int b = a; //发生了自动类型转换
  1. 表达式的自动类型转换

在表达式中,小范围类型的变量,会自动转换为表达式中较大范围的类型,在进行运算

byte 、short、char-> int -> long -> float -> double

表达式的最终结果类型由表达式的最高类型决定

在表达式中, byte 、short、char是直接转换为int进行运算

byte a = 10;
int b = 20;
long c = 30;
long rs = a + b + c; //表达式的最终结果由表达式的最高类型决定,所以前面为long

byte i = 10;
short j = 20;
int res2 = i + j; //在表达式中, byte 、short、char是直接转换为int进行运算
  1. 强制类型转换

大范围数据类型转换为小范围数据类型

强制类型转换

数据类型 变量2 = (数据类型)变量1、数据

int a = 20;
byte b = (byte) a; //alt+enter键

int i = 1500;
byte j = (byte) i;
System.out.println(j); //-36

强制转换数据类型可能会导致数据(丢失)溢出

浮点型数据类型转换为整型,直接丢失小数部分,保留整数部分返回

3. 自增自减

放在变量的前面,先对变量+1或者-1,在拿变量的值进行运算(先加后用)

放在变量的后面,先拿变量的值进行进行运算,在对变量的值进行+1或者-1(先用后加)

a++; //a = a + 1;

2++;//会报错 原因如下
//++ -- 只能操作变量,不能操作自面量

int i = 10;
int res = i++;//10(先用后加) 
i;//11

int j = 10;
int ress = ++j; //11
j; //11 (先加后用)


//单独使用放在前面后面没有区别
//非单独使用:在变量前,先加后用,反之。

4. 扩展运算符

对应视频 p31

a += b; //等价于 a = a + b;
a /= b; //等价于 a = a / b;

int a = 6;
int b = 2;
a *= b; //a = (int)(a * b); =后面的int是a的数据类型

5. 方法

修饰符 返回值类型 方法名(形参列表){
    方法体代码(需要执行的功能代码)
	return 返回值;  
}

方法是一种语法结构,它可以把一段代码封装城一个功能,以便重复调用

  1. 方法声明了具体的返回值类型,内部必须使用return返回对应数据类型
  2. 形参列表可以有多个,甚至没有,如果有多个形参,多个形参必须使用,隔开,且不能给初始化。
5.1. 方法的执行原理

方法运行在栈内存。

栈的特点:先进后出。方法在栈中运行,可以保证一个方法调用完另一个方法后,可以回来


5.2. Java的参数传递机制
  1. 基本类型的参数传递

值传递:传输的是实参存储的值的副本

实参:在方法内部定义的变量

形参:以方法为例,就是方法定义时的变量

  1. 引用类型的参数传递

基本类型的参数传递的是存储的数据值

引用类型的参数传递的是地址值 但是这两种类型都是值传递

5.3. 方法的书写规范

遵循1:是否需要定义返回值,返回值的类型

遵循2:是否需要定义形参

5.4. 方法重载

只关心名称(必须一样)和形参列表(形参个数,类型和顺序不同,不关心形参名称),不关系修饰符,返回值类型

方法重载的应用场景:

开发中我们经常要为处理一类业务,提供多种解决方案,此时用方法重载来设计。

//形参个数,类型和顺序不同,不关心形参名称
void test(int a,int b)
void test(int b,int a) //这是错误的,不是方法的重载!
5.5. 一些常用的跳出xxx的关键字使用方法

6. 面向对象

Java种存在自动垃圾回收机制,会自动清楚掉垃圾对象。

6.1. this关键字

this就是一个变量,可以用在方法中,来拿到当前对象

那个对象调用方法,this就指向那个对象

6.2. 构造器
6.3. 封装
6.4. 实体类
6.5. 成员变量与局部变量的区别
相关推荐
浊酒南街3 分钟前
决策树python实现代码1
python·算法·决策树
FreedomLeo11 小时前
Python机器学习笔记(十三、k均值聚类)
python·机器学习·kmeans·聚类
星光樱梦1 小时前
32. 线程、进程与协程
python
阿正的梦工坊1 小时前
深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)
人工智能·pytorch·python
西猫雷婶2 小时前
python学opencv|读取图像(十九)使用cv2.rectangle()绘制矩形
开发语言·python·opencv
liuxin334455662 小时前
学籍管理系统:实现教育管理现代化
java·开发语言·前端·数据库·安全
海绵波波1072 小时前
flask后端开发(10):问答平台项目结构搭建
后端·python·flask
码农W2 小时前
QT--静态插件、动态插件
开发语言·qt
ke_wu2 小时前
结构型设计模式
开发语言·设计模式·组合模式·简单工厂模式·工厂方法模式·抽象工厂模式·装饰器模式
赵谨言3 小时前
基于python网络爬虫的搜索引擎设计
爬虫·python·搜索引擎