Java学习历程记录(一)

一、类与对象

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流

原文地址:https://www.cnblogs.com/yuyueq

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 连接 连接池产生原因 连接池实现原理 小结 TEMPERANCE:Eat not to dullness;drink not to elevation.节制
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 一个优秀的工程师和一个普通的工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。-- 毕玄 1. 命名风格 【书摘】类名用 UpperCamelC
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个人在用”。哪怕只是throw了一个新的Exception。哈哈,这是我犯的错误。一、接口和抽象类类,即一个对象。先抽象类,就是抽象出类的基础部分,即抽象基类(抽象类)。官方定义让人费解,但是记忆方法是也不错的 —包含抽象方法的类叫做抽象类。接口
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket一、引子文件,作为常见的数据源。关于操作文件的字节流就是 —FileInputStream&amp;FileOutputStream。
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节。交流QQ群:【编程之美 365234583】http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_Aonqz
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程与多线程 线程是什么? 线程(Thread)是一个对象(Object)。用来干什么?Java 线程(也称 JVM 线程)是 Java 进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。 Ja
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket在面向对象编程中,编程人员应该在意“资源”。比如?1String hello = &quot;hello&quot;; 在代码中,我们
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 《程序兵法:Java String 源码的排序算法(一)》 文章工程:* JDK 1.8* 工程名:algorithm-core-le
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 目录 一、父子类变量名相同会咋样? 有个小故事,今天群里面有个人问下面如图输出什么? 我回答:60。但这是错的,答案结果是 40 。我知错能改,然后说了下父子类变
作者:泥瓦匠 出处:https://www.bysocket.com/2021-10-26/mac-create-files-from-the-root-directory.html Mac 操作系统挺适合开发者进行写代码,最近碰到了一个问题,问题是如何在 macOS 根目录创建文件夹。不同的 ma
作者:李强强上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。一、引子在Java世界里,99%的工作都是处理这高层。那么二进制,字节码这些会在哪里用到呢?自问自答:在跨平台的时候,就凸显神功了。比如说文件读写,数据通信,还
1 线程中断 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 方法,使得该线程中断标志位属性改变。 深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want需求 项目在设计表的时候,要处理并发多的一些数据,类似订单号不能重复,要保持唯一。原本以为来个时间戳,精确到毫秒应该不错了。后来觉得是错了,测试环境下很多一
纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 纯技术交流群 每日推荐 - 技术干货推送 跟着泥瓦匠,一起问答交流 扫一扫,我邀请你入群 加微信:bysocket01
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocketReprint it anywhere u want.文章Points:1、介绍RESTful架构风格2、Spring配置CXF3、三层初设计,实现WebService接口层4、撰写HTTPClient 客户
Writer :BYSocket(泥沙砖瓦浆木匠)什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过(逃哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。一、什么是回调回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百
Writer :BYSocket(泥沙砖瓦浆木匠)一、什么大小端?大小端在计算机业界,Endian表示数据在存储器中的存放顺序。百度百科如下叙述之:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加
What is a programming language? Before introducing compilation and decompilation, let&#39;s briefly introduce the Programming Language. Programming la
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:BYSocketFaceBook:BYSocketTwitter :BYSocket泥瓦匠喜欢Java,文章总是扯扯Java。 I/O 基础,就是二进制,也就是Bit。一、Bit与二进制什么是Bit(位)呢?位是CPU
Writer:BYSocket(泥沙砖瓦浆木匠)微博:BYSocket豆瓣:BYSocket一、前言 泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标:专注很重要。专注Java 基础 + H5(学习) 其他操作系统,算法,数据结构当成课外书博览。有时候,就是那样你越是专注方面越