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》第二章:类型与方法

变量与常量

变量

变量就是可以更改内容的箱子,变量一般也叫左值。

变量的几种分类

  1. 普通成员变量
  2. 静态成员变量
  3. 局部变量

常量

常量就是一个封闭的箱子里面存放的东西无法再更改,常量通常也叫右值。

常量的几种分类

  1. 字面常量
  2. final修饰的常量

类型

Java中的类型是强类型,类型之间不能直接赋值,同时定义一个变量时必须初始化。

Java中当一个值超过了该类型的最大表示范围那么会报错。

字节类型变量

Java中存在一个字节的类型,不过该类型是整型的一种。

byte a = 10;

短整型变量

Java中的短整型为两个字节。

short a = 10;

整型变量

Java中的整型占四个字节

int a = 10;

长整型变量

Java中的长整型占8个字节

long a = 10;

单精度浮点型变量

Java中单精度浮点型占4个字节

float a = 1.4f;//注意字面小数默认是双精度浮点型

双精度浮点型变量

Java中双精度浮点型占8个字节。

double a = 3.5;

字符类型变量

Java中字符型占2个字节。

char ch = '我';//可以存放一个中文

布尔型变量

Java中布尔型变量占几个字节没有规定,但是布尔类型只能表示两个值truefalse

boolean a = true;

注意:Java中只能低字节类型能给高字节类型,如果想让高字节类型给低字节类型需要用强制类型转换,不过强制类型转换存在风险。

方法

什么是方法?

Java当中的方法其实就是C语言中的函数,只是叫法不同本质是一样的。

方法的定义

方法定义:public staic 返回值类型 方法名(参数列表) {方法体};

实列:

public static int add(int a, int b) {
    return a + b;
}

值传递和引用传递

值传递

Java中没有地址的概念所以任何在栈上开辟的对象在传参时都只会作为值传递,值传递是一种拷贝形参的改变不会对实参有任何影响。

引用传递

Java中的引用传递形参是可以影响到实参的因为引用传递本质就是传递实参本身而不是拷贝。

Java中什么情况下才是引用传递呢?当一个对象是从堆上开辟的空间做为参数传递时就是引用传递。

方法重载

有时候有些函数功能一样但是针对不同类型的类型不一样,我们又想用同一个方法名这时我们可以用方法重载。

方法重载规则

  1. 方法名相同
  2. 类型或参数个数不同

实列:

public static int add(int a, int b) {
    return a + b;
}

public static double add(double a, double) {
    return a + b;
}

值传递

Java中的值传递其实是一种“拷贝”,它会把实参传递的数据拷贝一份并压进调用方法的战帧中,而这时的参数不会影响到实参同时这个栈帧被销毁时该参数也会随之消亡。

当实参传递的数据不是堆上开辟的空间生命周期都会受到影响。

引用传递

引用传递传递的是数据地址,虽然Java中没有地址的概念但是引用变量定义是底层是存放数据地址来保证索引到数据同时保存在堆上。

引用传递也不列外在做为实参传递给方法形参时也是一种拷贝,不过拷贝的数据是一段地址所以形参对该地址存放的数据进行修改都会影响到实参,因为该地址存的数据是在堆上开辟的空间。

递归

递归是通过自己调用自己来完成某项任务,再递归调用的途中,任务会从大变小直到小到不能再分配才执行任务,而这时执行的任务量会变的无比小,虽然任务量变小了但是在栈上的空间消耗也变大,因为有很多没用的重复指令一直被递归分解。

这也是为什么递归处理大型计算任务时会变的巨慢无比,迭代能一秒计算出来的数据递归可能要花上一个小时甚至更久……

能用递归完成的任务绝大部分都能迭代完成,所以一般是能用迭代绝对不用递归。

递归的优点

  • 递归代码简单
  • 代码量少

递归的缺点

  • 栈的空间消耗大
  • 冗余数据过多
  • 计算大型任务效率极低

数组

Java中的数组就是一段连续的空间存放相同类型的值,Java中数组开辟的空间是在堆上开辟而不是栈上,所以Java中的数组变量也叫引用变量。

数组的定义

定义语法: 类型[] 变量名;

列子:

int[] arr = { 1, 2, 3 };

数组的初始化方式

Java中数组初始化有两种方式:

  1. new 类型;
  2. { 数据 };

例子:

int[] arr1 = { 1, 2, 3, 4 };
int[] arr2 = new int[1];

多维数组

二维数组定义

Java中的二维数组和C语言大同小异,唯一的区别是{}内没初始化数据时,Java不能省略第一个[]的数据。

例子:

int[3][] arr1 = { {12}, {3}, {4} };
int[][] arr2 = { {1}, {2}, {3} };

不规则数组

Java中数组的如果没指定最后一个[]内的数据时,在赋值时每个int[]类型都可以是不同。

列子:

int[3][] arr = { {1, 2, 3, 4, 5}, {5}, {3, 4, 5}};
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:02:20  更:2022-06-01 15:05:12 
 
开发: 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/23 20:53:22-

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