Java后端开发温习笔记--1.1

本文概述了Java语言的基础,包括八大基本数据类型、引用数据类型(数组、类和接口)、重写与重载,以及Java的三大特性(封装、继承和多态)。还介绍了ArrayList与数组的区别,以及泛型的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    .返回主目录

一、Java语法基础

1、八大基本数据类型

首先介绍位的概念: bit(位/比特位) 度量信息的最小单位,存在0和1两种状态。N个比特的信息量可表现为 2N 种。

  1. byte(字节):一个字节存储8位,一个字节的值域为-128~127,封装类为Byte,一般表示为两个16进制如:
byte a = (byte)0x7f; // a = 127
byte b = (byte)0x80; // b = -128

0x或0X为常用十六进制表示前缀

  1. short(短整型): 16位,值域为 -215 ~ 215-1,封装类为 Short
  2. int(整型):      32位,值域为 -231 ~ 231-1,封装类为 Integer
  3. long(长整型):  64位,值域为 -263 ~ 263-1,封装类为 Long
  4. float(单精度浮点型):  32位,值域为 1.4E-45 ~ 3.4028235E38,封装类型为 Float
  5. double(双精度浮点型):64位,值域为 4.9E-324 ~ 1.7976931348623157E308,封装类型为 Double

由于小数常量的默认类型是double型,所以float类型的后面一定要加f(F)。同样带小数的变量默认为double类型。

  1. boolean(布尔型):默认值为 false,封装类为 Boolean
  2. char(字符型):默认值为 \u0000;,封装类为Character
2、三大引用数据类型

  引用数据类型一般通过 类 或 接口 进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

  原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储。简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。

  简单来说,所有的非基本数据类型都是引用数据类型。下面将引用数据类型归为三大类:

1.数组
数组详细解析至文章2.1(未完成)←链接快速访问

2.类
比如我们常用的 字符串类String

3.接口
接口详细解析至本文第五节

3、基本数据类型 和 引用数据类型 的区别

主要区别:基本数据类型是分配在上的,引用类型是分配在上的

栈、堆、队列概念详细解析至文章2.1(未完成)

4、重写和重载

重写:Override 在子类中把父类本身方法修改/重写一遍
重载:Overload 在一个类中,同名的方法有不同的参数列表

class SuperClass{
	public void fun(){System.out.println("super");}
}
class SubClass extends SuperClass{
	public void fun(){System.out.println("sub");} //方法重写
	public void fun(int i){System.out.println("sub" + i);} //方法重载
}

二、Java语言三大特性

1、封装

是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

优点:

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

封装的实现:

public class Student{
	// 1.修改属性的可见性来限制对属性的访问
	private String sno;
	private String sname;
	// 2.对每个值属性提供对外的公共方法访问
	public void setSno(String sno){this.sno = sno;}
	public String getSno(){return sno;}
}
2、继承

从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

Java不支持多继承,一个类只能有一个父类,但一个父类可以有多个子类。
一个类可以实现多个接口,从而克服单继承的缺点。

优点:

  1. 简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
  2. 减小代码和数据的冗余度,大大增加程序的重用性。
  3. 通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

继承的实现:

public class SuperClass{
}
public class SubClass extends SuperClass{
}

继承的特性:子类继承所有非private的成员

class Animal{
	private String name="animal";
	protected String braying="undefined";
	public Animal() { System.out.println("super");}
	public void getName(){ System.out.println("Name: " + name);}
	public void bray() { System.out.println(braying + braying);}
}

class Cat extends Animal{
	public Cat(){
		super();
		this.name = "猫";  
		//此处报错:The field Animal.name is not visible
		this.braying = "喵";
	}
}

public class Test {
	public static void main(String[] args) {
		new Cat().bray(); //输出:喵喵
		new Cat().getName(); //输出:animal
	}
}
3、多态

使同一个行为具有多个不同表现形式或形态的能力

多态的优点:

  1. 扩展性强
  2. 父类的变量可以赋值不同的子类对象,而调用不同的子类重写的方法

多态形成的三个条件:

  1. 继承
  2. 重写(见上
  3. 父类引用指向子类对象(向上转型),如:
SuperClass sc = new SubClass(); //向上转型

三、接口

接口 是抽象方法的集合,定义与类的定义相似,关键词是interface

接口特点:

  1. 接口是抽象类,不能实例化
  2. 接口不能拥有成员变量,只能有public、static、final修饰的常量,且必须要赋初值
  3. 一个类可以实现多个接口,一个接口可以继承多个接口
  4. 接口中的方法只能是public、abstract的,且不能有具体实现内容,接口中不能存在静态方法
  5. 类实现接口时,若该类不是抽象类,则必须实现接口中所有抽象方法

JDK1.8 以后允许接口拥有静态方法和方法体,允许接口拥有具体实现方法
JDK1.9 以后允许拥有private方法

接口的定义:

public interface Animal{
	public abstract void bray();
	public abstract void eat();
}

接口的实现:

public class Cat implements Animal{
	public void bray(){
		System.out.println("喵喵喵");
	}
	public void eat(){
		System.out.println("吃鱼");
	}
}

四、容器

将若干性质相同或相近的类对象组合在一起而形成的一个整体 叫做容器

Java容器主要两大顶层集合接口: Collection和Map

Collection
Set
List
Queue
HashSet
TreeSet
LinkedSet
ArrayList
LinkedList
Vector
Stack
Map
HashMap
HashTable
WeakHashMap
Array(数组) 和 ArrayList 的区别
  1. 数组可以保存基本数据类型和对象,ArrayList只能保存对象
	int[] i = new int[20];
	Student[] s = new Student[20];

	List<Integer> l = new ArrayList<Integer>();
			↑
	只能使用包裹类或对象
  1. 数组大小固定,而ArrayList大小可变
  2. 数组保存的必须是同种类型,而ArrayList可以保存Object

数组 和 链表 详解至文章2.1(未完成)

五、异常(未完成)

六、泛型

Java泛型(generics)是JDK 5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型类

如1.4节中的 ArrayList 就是泛型类:

	ArrayList<T> arrayList = new ArrayList<T>();

如何定义一个泛型类:

	 在类名后加上类型参数,甚至可以是多个参数<T,K,V...>class Printer<T> {
	private T t;
	public Printer(T t){
		this.t = t;
	}
	public void print(){
		System.out.println(""+t);
	}
}
泛型方法

定义如下

	public <T> void print(T t){}

七、反射

反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。
简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。

返回顶部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值