其他分享
首页 > 其他分享> > 新手上路 -- 02

新手上路 -- 02

作者:互联网

在java中主要表示类所在的位置,用于区别同名类。

关键字:

类是对象的抽象,对象是类的实现。

每一个class类代表一类对象的特征和行为,具体表现为类中的属性和方法,而每一个类的实现,可以通过构造方法对类的属性赋值和初始化。即一个类基本构成——构造方法、属性、方法,其中构造不写默认有个无参的。

常玩的类

面向对象

封装

面向对象的基础,把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。封装是一种信息隐藏技术。
实现——方法、属性私有化、内部类

继承

Java是单继承多实现,继承主要和向上造型相关,而实现一般是与规范相关。

多态

多态是指允许不同类的对象对同一消息做出不同的响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式。主要是为了解耦

多态主要针对对象的行为即方法,而不是对象的属性。主要包括:

方法

定义格式 :

方法定义格式
如:main方法

修饰符:

权限修饰符:

本类 子类 同包类 其他类
public 可以 可以 可以
protected 可以 可以 可以
默认 可以 同包子类可以 不可以
private 可以 不可以 不可以

其他修饰符:

名字 英文 修饰对象 重点
静态 static 代码、属性、方法、类 与类同级
最终 final 属性、方法、类 不可改变
抽象 abstract 方法、类 等着被重写

重写、重载、递归

方法传参

不懂就画图,栈、堆、方法区

集合框架 – Collection

集合框架:包括集合、数组、映射和操作它们的工具类。
主要API有增删改查、获取迭代器iterator()、判断equals(Object o)、转换如toArray()等。下面的几个都是接口规范了几个大类,具体实现看实现类。

List

元素有序,容量可变,但是内存是否连续看实现类。对于扩容,除了ArrayList基于原容量右移1位,即0.5倍加1,其他都是默认为原容量的一倍。

Queue

队列遵循先进先出的原则。

Set

主要特点元素不重复且无序;可以使元素有序,实现Comparator接口或者其他方法。添加重复元素是保留原有的元素(可以通过“a”和new String(“a”)对比验证)。

Map

基础单元是Entry,存储的是键值对模式。无序且键不重复,重复键录入新值会覆盖后值;一般都是通过增强for循环遍历for(String key : keys){}。

Comparator

一个接口,主要包括compareTo(T o1,T o2)equals(object obj)两个方法
重写compare方法,将比较规则写到compare方法中—根据返回值的正负来确定大小;如果返回值是正数,表示第一个参数排到第二个参数之后;反之表示第一个参数排到第二个参数之前。
如果没有指定排序规则,这个时候要求集合中的元素对应的类必须实现Comparable,比较规则是写在compareTo方法中。

Collections–工具类

是一个操作集合的工具类,提供一系列的操作集合的静态方法。Collections的构造方法都是私有的,只能通过本类对象或者类名+“.”调用。
collections工具类

线程

运行一个程序或一串代码就是开启一个进程,而一个进程最少包含了一个线程。而线程多了会形成资源争抢,即线程安全问题。

创建方式

启动

我们知道要把执行的任务逻辑放到run方法中,调用start方法可以开启线程,现在在main方法中使用start方法来启动线程和直接调用run方法有什么区别?

  • run()相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。
    相应的调用t.run(),只是调用一个实例的方法而已,并未启动线程,因此run()会被立即执行。
  • start()的作用是启动相应的线程。启动一个线程实际是请求Java虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。
    start()调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远也不会运行。

线程状态

https://www.cnblogs.com/reality-soul/p/7871786.html 线程状态变换
new、start、wait/sleep、notify

多线程的并发安全问题

线程执行顺序:线程的执行不存在先后,相互抢占执行的;
抢占并不是在发生在线程执行的开始,而是发生在线程执行的每一步过程中。

线程安全方法

反射

通过类或对象解剖类属性和方法,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
通过反射可以获取的解剖类:Class类的类、Field属性的类、Method方法的类、Constructor构造方法的类、Package 代表包的类、Annotation 代表注解的类。
反射功能

作用

反射主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
反射提供封装程序集、模块和类型对象。
反射其实是解剖类,分析类的字节码。产生类所对应的实例对象。

实现解耦操作,便于模块化开发。

应用

其他01——泛型<>

DK1.5特性之一。泛型使得代码可以适应多种类型。像容器,List< T >,大量使用了泛型,它的主要目的之一就是用来指定容器要持有什么类型的对象。

☆泛型的擦除☆

用具体类型来替换泛型的过程叫泛型的擦除;发生在编译期,即定义是进行了泛型的擦除,后面对元素的操作需要满足具体类型。

总览:https://www.cnblogs.com/justinli/p/generic.html

其他02——迭代器Iterable

如果一个对象允许用增强for循环来遍历,那么这个对象对应的类必须实现Iterable 接口,增强for(foreach)循环本质上就是在进行迭代遍历。增强for循环不允许对原集合进行增删操作。
主要实现就是Iterator:

	    // 获取迭代器对象
		Iterator<String> it = set.iterator();
		// 判断是否有下一个元素
		while (it.hasNext()) {
			// 挪动指针,获取元素
			String s = it.next();
			System.out.println(s);
			// 表示移除在迭代的元素
			// it.remove();}
			// 在迭代过程中不允许对原集合进行增删操作
			// set.remove(s);		//报错

其他03——注解

Annotation(注解)概述

从JDK5.0开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。 Annotation其实就是代码里的特殊标记,它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。

掌握注解技术的要点:

定义

  1. 定义注解的类用@interface修饰;
  2. 属性默认被public stataic final修饰,方式如:int i();
    a) 属性类型只能是基本类型、String、枚举、Class字节码、注解以及他们的一位数组形式;
    例如
  1. @Override — 标记方法重写
  2. @SuppressWarnings — 压制警告

a)“unchecked” — 泛型的强转
b)“rawtypes” — 需要泛型但是没有指定
c)“unused” — 定义了没有使用的变量
d) “deprecation” — 已过时,
e)“static-access” — 表示通过对象调用了

  1. 静态属性或者静态方法
    a)“null” — 表示可能通过值为null的对象调用了属性或者方法
  2. @Deprecated — 已过时 元注解 — 对注解进行限制的注解 @Target — 限定注解的使用范围 
    @Retention — 限定注解的生命周期 
    @Documented — 表示让当前注解生成到文档中 
    @Inherited
    — 表示允许当前注解也限制子类 — 注解一般只限制当前的类而不限制子类

注解的反射

在这里插入图片描述


  1. c ↩︎

标签:02,对象,手上,线程,泛型,注解,方法,属性
来源: https://blog.csdn.net/free_puppet/article/details/96632200