Java 学习笔记

变量类型

参考下图总结,Java是强类型语言,静态类型。
在这里插入图片描述

静态类型语言:变量定义时有类型声明的语言。

  • 变量的类型在编译的时候确定

  • 变量的类型在运行时不能修改

这样编译器就可以确定运行时需要的内存总量。

动态类型语言:变量定义时无类型声明的语言。

  • 变量的类型在运行的时候确定

  • 变量的类型在运行可以修改

基本类型和封装类型

下图为Java的基本类型和对应的封装类,封装类提供了对各个类型间进行转换和运算操作的方法。
在这里插入图片描述
其中,常用的String也是封装类,且一旦定义之后不支持改变。StringBuffer和StringBuilder是String的操作类,支持在同一个对象中改变其值,其中

  • StringBuffer是线程安全的,效率较低
  • StringBuilder是线程不安全的,但效率高。
String a = "a";//创建了一个对象,变量a指向了对象"a"
a = a+"b";//重新创建了一个对象,变量指向了对象"ab"
String str = "a"+"b"+"c"//只创建了一个对象

StirngBuffer sb = new StringBuffer("a");
sb.append("b");//调用方法进行字符串拼接,此过程未创建第二个对象
值传递与引用传递

基本数据类型传值,对形参的修改不会影响实参

  • 基本数据类型在声明时系统就给它分配空间
int a;
a=10;//正确,因为声明a时就分配了空间

引用类型传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象

  • 引用则不同,它声明时只给变量分配了引用空间,而不分配数据空间
Date date;
//执行实例化,开辟数据空间存放Date对象,然后把空间的首地址传给today变量 
//date=new Date();
//如果注释掉上一步操作
//The local variable date may not have been initialized
//也就是说对象的数据空间没有分配
date.getDate();

值传递:

方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。

引用传递:

也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址

util包工具类

Collection下的子接口有List、Set

  • List:有序可重复的序列,下面的常用子类:ArrayList、LinkedList、Vector

    • ArrayList:本质为Object[]

    • LinkedList:链式结构,首尾相连,插入和删除快速

    • Vector:与ArrayList相同,但是是线程安全的

  • Set:无序不重复,下面的常用子类有:

    • HashSet、TreeSet- TreeSet可通过Comparable接口来指定排序规则(按什么进行排序)
  • Map:key-value(键值对的形式),无序不重复的,因为其key是HashSet;缓存可以使用Map,如Redis就像一个大型的Map,缓存数据可以存在里面。下面的子类:HashMap、HashTable(线程安全)、TreeMap

    • Collections:集合的操作类,其方法可对集合进进排序、反转等
  • 其他的工具类:Date(时间)、DateFormat、SimpleDateFormat(时间格式化类)、Properties(用于配置文件读取)、Calendar(日历)、UUID(生产不重复序列)等

面向对象
  • 封装:将数据以对象属性的形式封装到一个对象中,比如数据库的一个表的所有字段都可以用java的对象进行封装

  • 继承:子类可以父类所有方法和属性,包括private的,但不能继承被final修饰的方法;被private修饰的方法不能被访问而已

  • 多态:父类的引用指向子类的实例,编译时当成父类对象,但实际运行时则为实际具体对象

  • 抽象:任何事物都可以被抽象为一个类,类具有公共的属性和方法

关于子类能继承父类private的属性的解释:父类属性一般都是private的,但是可以通过getter、setter方法进行访问,子类对象也可以通过getter、setter方法访问父类的属性,所以是继承了父类的private的属性

Java不允许多继承,需通过接口实现“多继承”
public interface 接口名 {}
public class 类名 implements 接口名 {}

接口与抽象类的区别:

  • 接口不能实现任何方法,而抽象类可以
  • 类可以实现许多接口,但只有继承一个父类
  • 接口不是类分级结构的一部分,没有联系的类可以实现相同的接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值