一、类与对象


1、创建类

创建一个学生类、并且创造成员变量和方法

public class student{
String name;
int age;
public void study(参数列表){
…………
}
}

2、对象的使用

注:new 出来的东西都在堆当中

类名 对象名 = new 类名();
例:student stu = new student();

3、使用对象访问成员

访问成员方法:   对象.成员方法();
例: stu.study();
访问成员变量: 对象.成员变量;
例: stu.name;

二、封装

1、private关键字

private 数据类型 变量名;

2、如何访问成员变量

提供getXxx、setXxx方法
例:
public class student{
private String name;
private int age; public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void setAge(int a){
age = a;
}
public int getName(){
return age;
}
}

3、封装优化(一)之this关键字

注:this代表所在类的当前对象的引用(地址值);即谁在调用,就代表谁

public class student{
private String name;
private int age; public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int age(){
return age;
}
}

4、封装优化(二)之构造方法

注:当一个对象初始化时,构造方法用来初始化该对象,给对象的成员变量赋初值。

且构造方法的类名与它所在类名相同,且没有返回值类型,且不需要void。

public class student{
private String name;
private int age; public student(){}
public student(String name,int age){
this.name = name;
this.age = age;
}
}

5、构造方法的注意事项以及标准代码

注意事项:

  1. 如果你不提供构造方法,系统会自动给出一个无参构造方法。
  2. 如果你写了构造方法,系统不再提供无参构造方法。
  3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数

标准代码——JavaBean:

它是Java语言编写类的一种标准规范,符合JavaBean的类必须是具体的且公共的,并且具有无参构造方法,提供用来操作成员变量的getXxx和setXxx方法。

public class student{
//成员变量
private String name;
private int age;
//构造方法
public student(){}
public student(String name,int age){
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

三、Scanner类

1、具体实现

//导包
import java.util.Scanner;
public class student{
public static void main(String[] args){
//创建一个键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//System.in 表示通过键盘录入数据 int a = sc.nextInt();
//表示通过对象来调用成员方法
//nextInt 表示将下一条标记为int
String b = sc.next();
//查找并返回扫描仪的下一个完整令牌
}
}

2、匿名对象

new Scanner(System.in).nextInt();

注意事项:

创建匿名对象直接调用方法,并没有变量名

一旦调用了两次方法,就创建了两个对象,导致空间的浪费

匿名对象也可以作为方法的参数和返回值列表


四、Random类

1、具体实现

//导包
import java.util.Random;
public class student{
public static void main(String[] args){
Random r = new Random();
//产生一百以内的随机数
for(int i=0;i<100;i++){
int num = r.nextInt();
//每调用一次nextInt方法,就会出现一个新的随机数
System.out.println("随机数:"+ num );
}
}
}

五、ArrayList类

1、具体实现

//导包
import java.util.ArrayList;
public class student(){
public static void main(String[] args){
//创建一个数组
ArrayList<String> list = new ArrayList<>();\
//从JDK7之后,右侧泛型可以留空,但“<>”必须写上 //创建学生对象
String n1 ="小杜";
String n2 ="小王";
String n3 ="小张"; //把创建的学生元素添加到集合当中,利用ArrayList这个类的方法
list.add(n1);
list.add(n2);
list.add(n3);
System.out.println(list);
//最后打印输出 }
}

2、常用的方法

public boolean add(E e);将指定的元素添加到此集合的尾部

public E remove(int index);移除把此集合中指定位置的元素,返回被删除的元素

public E get (index);返回此集合中指定位置的元素,返回获取的元素

public int size();返回此集合中的元素数,遍历集合时可以控制索引范围,防止越界。


六、String类

1、特点

  • 字符串的值在创建之后不可改变。
  • 因为字符串String对象是不可变的,所以它们可以被共享。
  • "abc" = char[] data{"a","b","c"}

2、常用的方法

判断功能的方法:equals和equalsIgnoreCase

获取功能的方法:length、concat、charAt、indexOf、subString

转换功能的方法:tocharArray、getByte、replace

分割功能的方法:split


七、static关键字

静态方法

静态原理

静态代码块


八、Array类

1、操作数组的方法

public static String toString;返回指定数组内容的字符串表示形式。

public static void sort();对指定的数组进行升序排列;


九、Math类

1、基本运算方法

public static double abs();返回double数值的绝对值

public static double ceil();返回大于等于参数的最小整数


十、继承

1、概述

:其中多个类可称为子类,单独的一个类可以称为父类、超类或者基类

2、表示形式:

class 子类 extends 父类{……}

3、成员方法重写

: @override

4、继承后的特点——构造方法

5、super和this关键字

6、继承的特点:

  • 继承只支持单继承,不支持多继承。
  • 继承可以多层继承(有体系结构)
  • 子类和父类是相对概念

十一、抽象类

1、表示形式

注:修饰符和参数列表要注意

抽象类:public abstract class 类名{}

抽象方法:public abstract void 方法名();

2、注意事项

  • 抽象类不能创建对象,也就是不能实例化,否则编译不通过,但是可以创建子类继承
  • 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
  • 抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类
  • 抽象类的子类必须重写父类的所有方法,否则编译也不通过,除非子类也是抽象类

十二、接口

1、定义与实现方式

public interface 接口名{}

class 类名 implments 接口名{

//重写接口中的抽象方法(必须)

//重写接口中的默认方法(可选)

}

2、基本实现和多实现

注:类与接口的关系是实现关系,即类实现接口,该类可以称为接口的实现类或者子类

抽象方法

默认方法

静态方法

私有方法


十三、多态

1、体现

父类类型 变量名 = new 子类对象;

2、向上转型和向下转型

向上转型:父类类型 变量名 = new 子类对象;

向下转型:父类类型 变量名 = (子类类型) 子类对象;


十四、final关键字


十五、权限修饰符


十六、内部类

1、概念

:如果在A类中新建一个B类,那么就称B类是内部类,A类是外部类

2、访问特点

  • 内部类可以访问外部类成员,包括私有方法
  • 外部类要想访问内部类,必须得新建一个内部类的对象

3、匿名内部类(重点)

  • 是内部类的简化写法——new 父类名或接口名();
  • 匿名内部类必须是实现一个父接口或者继承一个父类
  • 也可以做为函数参数传递

十七、引用类型用法

1、class做为成员变量

2、interface做为成员变量

3、interface做为方法参数与返回值类型


十八、Object类、时期时间类

1、Object类

2、Date类

常用方法:

public long getTime() ;把日期时间转换成对应毫秒值

3、DateFormat类

常用方法:

public String format();把日期格式化字符串

public Date parse();把字符串转换成为Date对象

4、Calendar类

常用方法:

get和set方法

add和getTime方法


十九、System类

1、常用方法:

currentTimeMills方法

获取当前系统时间与1970年01月01日00:00点之间的毫秒差值

arraycopy方法

将数组中指定的数据拷贝到另一个数组中。


二十、StringBuilder类

1、常用方法

append方法:添加任意类型数据的字符串形式,并返回当前对象自身

toString方法:将当前StringBuilder对象转换为String对象


二十一、包装类

基本类型 java.lang中的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

注:从JDK5开始就自动完成装箱和拆箱动作


二十二、Collection接口

1、集合类的继承体系

2、Collection常用功能

  • public boolean add(E e): 把给定的对象添加到当前集合中 。
  • public void clear():清空集合中所有的元素。
  • public boolean remove(E e): 把给定的对象在当前集合中删除。
  • public boolean contains(E e): 判断当前集合中是否包含给定的对象。
  • public boolean isEmpty(): 判断当前集合是否为空。
  • public int size(): 返回集合中元素的个数。
  • public Object[] toArray(): 把集合中的元素,存储到数组中。

List集合

1、常用方法

get、add、remove、set方法

2、List子类

  • ArrayList集合
  • LinkList集合

Set接口

1、两个集合

  • HashSet集合
  • LinkedHashSet集合

Colletions集合工具类


二十三、Map集合

1、常用的集合

  • HashMap集合
  • LinkedHashMap集合

2、Map接口中常用的方法

  • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
  • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
  • public V get(Object key)根据指定的键,在Map集合中获取对应的值。
  • boolean containsKey(Object key)判断集合中是否包含指定的键。
  • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

二十四、泛型

1、定义格式

修饰符 class 类名<代表泛型的变量> {  }


二十五、Iterator迭代器

1、常用方法

public E next();返回迭代的下一个元素。

public boolean hasNext() ;如果任有元素要返回的话,则返回ture


二十六、异常

1、异常体系

:异常的的根类是java.lang.throwable,其下有两个子类java.lang.Exception和java.lang.Erro

2、异常处理

  • 抛出异常throw
使用格式: 在方法内——thorw new 异常类名(参数)
  • Objects非空判断
public static <T> T requireNonNull(T obj):查看指定引用对象不是null
  • 声明异常throws
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }
  • 捕获异常try……catch
try{
     编写可能会出现异常的代码
}catch(异常类型  e){
     处理异常的代码
     //记录日志/打印异常信息/继续抛出异常
}

  • finally代码块

3、异常注意事项

  1. 多个异常分别处理。
  2. 多个异常一次捕获,多次处理。
  3. 多个异常一次捕获一次处理
  • 运行时异常被抛出可以不处理。即不捕获也不声明抛出。
  • 如果finally有return语句,永远返回finally中的结果,避免该情况.
  • 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
  • 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出

4、自定义异常

二十七、线程

1、线程与进程

2、并发与并行

后继

Lambda表达式、反射、注解、IO流

Java学习历程记录(一)的更多相关文章

  1. 登录模块的进化史,带大家回顾java学习历程(二)

    接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...

  2. (。・・)ノ~个人java学习随笔记录

    基本认识 1.编程思维 根据这几天的java学习,编写程序最重要的就是要有一个清晰的思路.语法上的错误可以跟随着不断的联系与学习来弥补,清晰的思维却只有自己来前期模仿,后面慢慢摸索形成一套属于自己的思 ...

  3. java学习历程,一年三年五年计划

    学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要 ...

  4. 登陆模块的进化史,带大家回顾java学习历程(一)

    一直在想着写点特别点的东西,让有兴趣学编程的人确实能学到点干货,今天就来随意写写. 大家在网上查找资料看到最多的demo估计就是登陆功能的演示了,为何大家偏爱拿登陆来做demo呢?因为行业应用类程序的 ...

  5. Java学习笔记记录(二)

    1.复合语句 if条件语句 使用场景:boolean类型判断.一个范围的判断.几个常量值的判断 有左大括号就没有分号,有分号就没有左大括号. 如下: public class demo1 { stat ...

  6. Java学习笔记记录(一)

    1.Java编写的一个基本结构 1 public class demo{ //以下包含权限修饰符.静态修饰符.返回值修饰符以及主方法main() 2 public static void main(S ...

  7. java学习笔记记录

    Java内存模型: Java虚拟机规范中将Java运行时数据分为六种. 1.程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址.Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间 ...

  8. JAVA学习,是一条漫长的道路

    我在Java 1.0正式问世前就开始学习Java,这么多年过去了,到现在我的Java学习历程还没有停过.我阅读原文书,研究原始码,撰写程序,自认为走得扎实,不奢望一步登天.像我这样老式的学习方式,显然 ...

  9. Java学习记录第一章

    学习Java第一章的记录,这一章主要记录的是Java的最基础部分的了解知识,了解Java的特性和开发环境还有Java语言的优缺点. 计算机语言的发展大概过程:机器语言--->汇编语言---> ...

随机推荐

  1. 在kubernetes集群里集成Apollo配置中心(6)之实战使用apollo分环境管理dubbo服务

    生产实践 1.迭代新需求/修复BUG(编码--->提git) 2.测试环境发版,测试(应用通过编译打包发布至test命名空间) 3.测试通过,上线(应用镜像直接发布至prod命名空间) 系统架构 ...

  2. 网络协议 & 协议体系结构模型

    基本知识概述 网络协议是什么? 为进行网络中的数据交换,而建立的规则(约定),就称为网络协议 网络协议的三个组成要素? 语法:数据与控制信息的结构或格式 语义:发出何种控制信息,完成何种动作,作出何种 ...

  3. 4.Direct交换机之使用指定routingkey完成日志记录场景

    标题 : 4.Direct交换机之使用指定routingkey完成日志记录场景 目录 : RabbitMQ 序号 : 4 const string logOthersQueueName = " ...

  4. 【非原创】codeforces 1025D - Recovering BST【区间dp+二叉搜索树】

    题目:戳这里 题意:给一个不下降序列,有n个数.问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件.主要得了解二叉搜索树的性质, ...

  5. FZU 2129 子序列个数(DP)题解

    题意:求子序列种数 思路:dp[i]代表到i的所有种数,把当前i放到末尾,那么转移方程dp[i] = dp[i - 1] + dp[i -1],但是可能存在重复,比如1 2 3 2,在第2位置的时候出 ...

  6. Linux Schedule Cron All In One

    Linux Schedule Cron All In One 定时任务 / 定时器 GitHub Actions Scheduled events Cron syntax has five field ...

  7. TypeScript 1.7 & TypeScript 1.8

    TypeScript 1.7 & TypeScript 1.8 1 1 https://zh.wikipedia.org/wiki/TypeScript TypeScript是一种由微软开发的 ...

  8. iPhone 12 导入通讯录排序 Bug

    iPhone 12 导入通讯录排序 Bug iOS iOS 通讯录排序问题 Huawei OK solution iOS 切换中英文,修复排序通讯录 bug Awesome iOS Contacts ...

  9. WebAssembly All In One

    WebAssembly All In One wasm https://webassembly.org/ https://developer.mozilla.org/en-US/docs/WebAss ...

  10. 2020 front-end interview

    2020 front-end interview https://juejin.im/post/5e083e17f265da33997a4561 xgqfrms 2012-2020 www.cnblo ...