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、构造方法的注意事项以及标准代码
注意事项:
- 如果你不提供构造方法,系统会自动给出一个无参构造方法。
- 如果你写了构造方法,系统不再提供无参构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数
标准代码——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、异常注意事项
- 多个异常分别处理。
- 多个异常一次捕获,多次处理。
- 多个异常一次捕获一次处理
- 运行时异常被抛出可以不处理。即不捕获也不声明抛出。
- 如果finally有return语句,永远返回finally中的结果,避免该情况.
- 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
- 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
4、自定义异常
二十七、线程
1、线程与进程
2、并发与并行
后继
Lambda表达式、反射、注解、IO流
Java学习历程记录(一)的更多相关文章
- 登录模块的进化史,带大家回顾java学习历程(二)
接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...
- (。・・)ノ~个人java学习随笔记录
基本认识 1.编程思维 根据这几天的java学习,编写程序最重要的就是要有一个清晰的思路.语法上的错误可以跟随着不断的联系与学习来弥补,清晰的思维却只有自己来前期模仿,后面慢慢摸索形成一套属于自己的思 ...
- java学习历程,一年三年五年计划
学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要 ...
- 登陆模块的进化史,带大家回顾java学习历程(一)
一直在想着写点特别点的东西,让有兴趣学编程的人确实能学到点干货,今天就来随意写写. 大家在网上查找资料看到最多的demo估计就是登陆功能的演示了,为何大家偏爱拿登陆来做demo呢?因为行业应用类程序的 ...
- Java学习笔记记录(二)
1.复合语句 if条件语句 使用场景:boolean类型判断.一个范围的判断.几个常量值的判断 有左大括号就没有分号,有分号就没有左大括号. 如下: public class demo1 { stat ...
- Java学习笔记记录(一)
1.Java编写的一个基本结构 1 public class demo{ //以下包含权限修饰符.静态修饰符.返回值修饰符以及主方法main() 2 public static void main(S ...
- java学习笔记记录
Java内存模型: Java虚拟机规范中将Java运行时数据分为六种. 1.程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址.Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间 ...
- JAVA学习,是一条漫长的道路
我在Java 1.0正式问世前就开始学习Java,这么多年过去了,到现在我的Java学习历程还没有停过.我阅读原文书,研究原始码,撰写程序,自认为走得扎实,不奢望一步登天.像我这样老式的学习方式,显然 ...
- Java学习记录第一章
学习Java第一章的记录,这一章主要记录的是Java的最基础部分的了解知识,了解Java的特性和开发环境还有Java语言的优缺点. 计算机语言的发展大概过程:机器语言--->汇编语言---> ...
随机推荐
- Eazfuscator.NET(.net混淆工具)
软件功能 调试支持: 在你的程序集被Eazfuscator.NET混淆后,它不会成为不可调试混乱的砖块.你总是可以得到一个行号,出现未处理的异常,查看可读的堆栈跟踪,甚至附加调试器来遍历你的模糊代码. ...
- dp的小理解
这段时间刷dp,总结出了一个不算套路的套路. 1.根据题意确定是否有重叠子问题,也就是前面的状态对后面的有影响,基本满足这个条件的就可以考虑用dp了. 2.确定是dp后,就是最难的部分--如何根据题意 ...
- struct 和 class的区别
struct和class如果按照在C的时代,还是有很大差别的. c中struct的定义如下: struct 结构名 { 成员表 }: 因为struct是一种数据类型,那么就肯定不能定义函数,所以 ...
- play games for learning web skills
play games for learning web skills CSS flexbox https://codepip.com/games/flexbox-froggy/ CSS grid ht ...
- MathJax TeX & LaTeX
MathJax TeX & LaTeX mathcal https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-z ...
- W3Schools Quizzes
W3Schools Quizzes Test your skills https://www.w3schools.com/quiztest/default.asp Quiz HOME Quiz HTM ...
- Flutter framework & Flutter basics
Flutter framework & Flutter basics https://flutter.dev/docs/get-started/learn-more UI widgets ht ...
- React Hooks & React v16.8.6
React Hooks Hooks are a new addition in React 16.8 const [state, setState] = useState(initialState); ...
- APP 跳转到支付包小程序
APP 跳转到支付包小程序 APP选择支付宝支付,会跳转到支付宝小程序再支付 支付包 小程序 我司有自己的APP.生活号,小程序,这种情况下如何和小程序关联,跳转到小程序里去,做到无缝对接? 其实,小 ...
- svg insert shape string bug
svg insert shape string bug not support custom areaProps attributes ??? const svg = document.querySe ...