Java学习笔记

Java学习笔记

Java基础学习



Java基础

一、Java基础知识

1.注释
不参与程序运行,起说明作用

  1. 单行注释 //
  2. 多行注释 /* */
  3. 文档注释 /** */

2.数据类型
在这里插入图片描述
类型转换:
1.自动类型转换,小转大。
在这里插入图片描述
2.强制转换:类型 变量名 = (类型)值或者变量

3.运算符

①.算术运算符 :+、 - 、*、 / 、%(取余)
其中字符串“+”操作:自动拼接

②.赋值运算符 :+=、 -=、 =
其中+=存在强制转换

③.自增自减运算符:-- 、++

④.关系运算符:== 、!= 、 > 、< 、>=、 <=

⑤.逻辑运算符:&、|、^、!
短路逻辑运算符:&&(有Flase不执行后面)、||(有True不执行后面)、!

⑥.三元运算符:关系表达式?表达式1:表达式2;
True运行1,Flase运行2

4.流程控制
①.if语句
②.switch语句
③.for循环
④.while循环
⑤.do…while循环
⑥.跳转控制语句(基于条件控制):continue(当前循环结束)、break(结束整个循环)

5.Random
产生一个随机数。

Random T = new Random();
int num = r.nextInt(10);   范围P[0,10)

二、数组

1.概念:用于存储多个相同类型的数据。
2.格式:数据类型[] 变量名 或者 数据类型 变量名 []
3.初始化方法:

动态:数据类型 [] 数组名称 = new 数据类型[长度]; 例如:int [] a = new int [10];
静态:数据类型 [] 数组名称 = new 数据类型[] {123};

对于静态的初始化可以直接使用 数据类型 [] 数组名称 = {1,2,3};

4.数组元素访问

int [] a = new int[]{1,2,3};
int b = a[0];
a[0]就是a数组的第一个元素的值

5.数组可能出现的异常:索引越界ArrayIndexOutOfBoundsException,空指针异常NullPointerException

6.数组常见操作:

遍历数组:
int arr[] = {12,45,98,73,60};
for(int i :arr) {  //这里使用了增强for(foreach循环)
System.out.println(i);
}

数组元素数量:数组名.length
int size = arr.length;

获取数组的最值:
import java.util.ArrayList;
import java.util.List;

public class ss {

	public static void main(String[] args) {
		int arr[] = {12,45,98,73,60};
		//调用getMax方法获取最大值
		System.out.println(getMax(arr));
	}
	
	public static int getMax(int arr[]) {
		int max = arr[0];
		for (int i = 0; i < arr.length; i++) {
			if (max<arr[i]) {  //获取最小值则:min>arr[i]  min = arr[i]
				max = arr[i];
			}
		}
		return max;
	}
}

三、方法

1.概念:独立功能代码组织成一个整体
2.格式:public static void 方法名(){ 语句;} 调用方式:方法名();
3.方法分类:无参数和有参数。方法定义中的参数称为形参,方法调用中的参数称为实参。
4.如有返回值需要使用return关键字将值返回。格式:public static 数据类型 方法名(参数){ 语句; return 对应的数据类型的变量或者常量;}
5.方法重载与方法重写的区别:

方法重载:多个方法在同一个类中,具有相同的方法名,参数列表不同(类型、数量、参数),与方法的返回值和访问修饰符无关。
方法重写:发生在父类子类中,若子类方法想要和父类方法构成重写关系,则它的方法名、参数列表必须与父类方法相同。此外,子类的返回值和抛出的异常要小于等于父类方法,访问修饰符则要大于等于父类方法。如果父类的方法被private修饰,则子类不能重写该方法。

6.方法参数传递:参数类型为基本数据类型,形参改变,不影响实参。引用类型,形参改变,实参也改变,例如:数组。


面向对象基础

一、类和对象

1.类特点:类是对象的数据类型,类是具有相同属性和行为的一组对象集合,Java基本组成单位。
2.对象属性:成员变量;对象的行为:成员方法。
3.格式:public class 类名{ }
4.对象的使用:创建对象:类名 对象名 = new 类名();使用对象:对象名.变量名/方法名();

变量

1.成员变量与局部变量区别:

成员变量:①在类的范围里定义的变量;②有默认初始值;③未被static修饰的成员变量也叫实例变量,它存储于对象所在的堆内存中,随对象存在而存在、消失而消失;④被static修饰的成员变量也叫类变量,它存储于方法区中,生命周期与当前类相同。
局部变量:①在方法里定义的变量;②没有默认初始值;③局部变量存储于栈内存中,作用的范围结束,变量空间会自动的释放。
Java中没有真正的全局变量,面试官如说出全局变量则指的是成员变量

2.成员变量的默认值:

基本数据类型默认值
byte0
short0
int0
long0L
float0.0F
double0.0
char‘\u0000’
booleanfalse

引用数据类型的默认值都为:null

构造方法

1.功能:对象数据的初始化。
2.格式:

public class 类名{
	修饰符 类名(参数){} //可以分为有参构造方法和无参构成方法
}

如果一个方法没有写构造方法,系统默认给一个无参构造方法。如果有写一个有参构造方法则不再提供,这时需要自己写一个无参构造方法。

抽象类

1.概念:对类抽象,包括属性和方法,使用abstract关键字修饰类和方法。
2.特点:

抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
抽象类不能被实例化
抽象类子类:重写所有抽象类的抽象方法或定义成抽象类

3.成员特点:

成员变量:可以是常量也可以是变量
构造方法:有构造但是不能被实例化;用于子类访问父类数据初始化
成员方法:可以有抽象方法:限定子类必须完成某些动作;非抽象方法:提高代码复用性

内部类

Inner类为内部类

public class Outer{
	public class Inner{
	}
}

1.特点:内部类可直接访问外部类的成员(包括私有);外部类访问内部类需要创建内部类的对象。
2.成员内部类:①成员内部类;②局部内部类
3.构造:Outer.Inner oi = new Outer().Inner();
4.局部内部类:其中匿名内部类是其其中一种,继承该类或实现该接口的子类匿名对象。

new 类名或接口名(){
	重写方法;
}

二、面向对象的三大特征

封装

1.概念:指将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能。

使用private修饰成员变量,只能在本类中才能访问。为了获取该类的成员变量,使用public修饰的Set、Get方法。

2.封装目的

1.隐藏类的实现细节;
2.让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问;
3.可进行数据检查,从而有利于保证对象信息的完整性;
4.便于修改,提高代码的可维护性。

3.this关键字:用于指代成员变量。

继承

1.格式:public class 子名 extends 父名{}
2.访问顺序:子类局部范围 -> 子类成员 -> 父类成员
3.通过super关键字访问父类的成员变量,通过this.变量名访问本来的成员变量。
4.继承中构造方法访问特点:子类构造方法默认会访问父类的无参构造方法。
5.方法重写:
子类重写父类的同名方法。上面提到的方法重写在编写代码时可以使用@Override进行注释

Tips:父类私有方法,子类无法重写;子类访问权限不能低于父类(public>默认>私有)

一个类不能同时继承多个类,但Java中支持多层继承,即一个类的父类继承另外一个类。

多态

1.概念:同一对象,不同时刻表现不同。
2.多态前提:①存在继承/实现关系;②方法重写;③父类引用指向子类对象
3.对于前提的第三点,我有一个父类Animal类,存在子类Cat和Dog两个类,将Cat或者Dog对象直接赋给父类Animal类,代码如下:

Animal c = new Cat();
Animal d = new Dog();

对于这种情况下出现了多态中成员访问的问题:

对于成员变量:编译时看左边的类,如果存在才可编译,执行的结果也是看左边类中的成员变量
对于成员方法:编译时看左边的类,如果存在才可编译,执行的结果看的时右边类中的成员方法

4.多态中的转型:向下转型:父类引用子类对象(系统自动完成);向下转型:父类转为子类对象(强转)


三、修饰符

权限修饰符

在这里插入图片描述

状态修饰符

1.final关键字

修饰方法:最终方法,无法被重写
修饰变量:变量变成常量,不能被再次赋值(基本类型:数值不变;引用类型:地址值不变,内容可改变)
修饰类:最终类,不能被继承

2.static关键字

被类的所有对象共享
可通过类名调用
访问特点:非静态成员方法可以访问静态/非静态成员变量和成员方法;静态成员方法只能访问静态成员方法或变量。


四、字符串

String

1.特点:①不可变,创建后不能被修改;②可以被共享;③字符串效果相当于char[ ]数组,底层是byte[ ]数组
2.String对象特点:①new每次会申请一个内存空间,内容相同,地址不同。②字符相同,JVM只会建立一个String对象,并在字符串池中维护。

3.String构造方法

//String构造方法
String s = new String();
             
char[] c = {'a','b','c'};	
String ss = new String(c);
             
byte[] b = {65,66,67};
String sb = new String(b);
             
String str = "abc";

4.String的比较

使用==比较:基本类型(数组是否相同);引用类型(地址是否相同)
用equals()方法比较

5.字符串方法:

String s = new String();
s.length(); //字符串长度
s.charAt(n); //获取字符串指定index的字符

StringBuilder

1.特点:可变的字符串类(容器),改变之后不会新创建一个对象
2.构造方法

String str = "abc";
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder(str);

3.StringBuilder添加和反转

sb2.append(任意类型); //返回对象本身
sb2.reverse;  //反转字符串

链式编程:sb2.append(‘H’).append(‘b’).append(‘c’);

4.与String互相转换

//StringBuilder -> String
String s = sb2.toString();
//String -> StringBuilder
StringBuilder sb = new StringBuilder(s);

五、Java常用API

Math

System

Arrays

Integer类

Date类

SimpleDateFormat类

日期类


六、异常


总结

还在更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值