Java基础基础学习!

持续更新(等我有空😁)

目录

一、基础语法

1. 变量

  • 变量通常是可以被修改的,即可以用来表示可变的状态;需先声明才能使用。
    三种类型变量:局部变量、类变量、成员变量

2. 常量

程序运行过程中不能改变的值

3. 数据类型

数据类型

4. String类

  • 用于定义一个字符串,字符串是常量,值在创建之后不能更改 。
  • String的方法:
    1). 计算字符串长度:length()
    2). 连接字符串:1.使用“+”连接 2.concat()
    3).字符串比较:1.equal():比较两个对象的内容是否相同 2."==":两个对象在内存中存储的地址是否一样
    4)charAt() 方法:按照索引值(第一个字符的索引值是 0),获得字符串中的指定字符。
    5)提取字符串

5. 运算符

1).算术运算符
算术运算符
2)位运算符:位运算符
3)逻辑运算符
逻辑运算符
4).关系运算符关系运算符

6. 修饰符

分为两类:访问修饰符和非访问修饰符
1).访问修饰符:
default (即默认,什么也不写): 在整个包内均可被访问,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
2).非访问修饰符:
static:用来修饰类方法和类变量。
final :用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract :用来创建抽象类和抽象方法。
synchronized 和 volatile :主要用于线程的编程。

7. 方法

定义方法的语法:
修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

8. 流程控制

(三类)循环结构、条件语句、跳转语句
1).循环结构:

  • while 循环:
while( 布尔表达式 ) {
  //循环内容
}
说明:只要布尔表达式为true,循环一直被执行下去
  • do…while 循环:
do {
       //代码语句
}while(布尔表达式);
说明:与while循环相似,但是do...while循环,先执行一次,再循环判断(至少被执行一次)。
  • for 循环 :
for(初始化①; 布尔表达式②; 循环变量值操作③) {
    //代码语句④
}
执行顺序:
1.执行循环变量初始化部分(1),设置循环的初始状态(可为空),此部分在整个循环中只执行一次。
2.进行循环条件的判断(2),如果条件为 true,则执行循环体内代码(4);如果为 false ,则直接退出循环。
3.执行循环变量值操作部分(3),对循环变量的值进行修改更新,然后进行下一次循环条件判断(4)。

2). 条件语句:

  • if语句:
if(条件)
{
   //条件成立时执行的代码
}
如果条件为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码
  • if…else语句:
if(条件){
    代码块1
}
else{
    代码块2
}
当条件成立时,则执行 if 部分的代码块; 条件不成立时,则进入 else 部分

3).switch case 语句:

switch(表达式){
    case 值1:
        代码块1
        break;
    case 值2:
        代码块2
        break;
    ...
}
表达式的值与case的值相同时,执行case内的语句,遇到break时跳出switch语句。

4).跳转语句:

  • break :用在条件和循环语句中,用来跳出循环语句。
  • continue:跳过循环体中剩余的语句执行下一次循环。

9. 数组

有序的元素序列
1).数组:相同数据类型的元素按一定顺序排列的集合

定义数组:
数据类型 数组名[ ]  = new  数据类型 [ 数组长度 ];
例:int stu[] = new int[10];
注:数组下标从0开始
遍历数组:for 语句在数组内可以使用特殊简化版本,在遍历数组、集合时,foreach 更简单便捷。
语法:
for(元素类型 元素变量:遍历对象){
    执行的代码//System.out.println(元素变量);
}

2).二维数组:

语法:
数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];
或者:
数据类型 [][] 数组名 = {
{第一行值1,第一行值2,...}
{第二行值1,第二行值2,...}
...
}

二、面向对象

Java一切皆对象!

1. 面向对象基本概念

对象:类的一个实例,有属性和行为。
类:描述一类对象的行为和属性。类是具有相同属性和行为的对象的集合
面向对象:从对象的整体去看它,它由什么组成,可以做什么事情

2. 类

类 = 属性(成员变量)+方法
一个类可以包含以下类型变量:

  • 1).局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 2).成员变量:(也叫实例变量)成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量在对象创建的时候创建,在对象被销毁的时候销毁。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 3).类变量:(也叫静态变量)类变量也声明在类中,方法体之外,但必须声明为static类型。(大多数被声明为常量)
定义类:
public class 类名 {
    //定义属性部分(成员变量) 有什么
    属性1类型 属性1;
    属性2类型 属性2;
    ...
    //定义方法部分 干什么
    方法1
    方法2
    ...
}

3. static修饰词

用来修饰类方法和类变量(静态变量)

  • 静态变量:被static修饰的变量;被类的所有对象所共享。静态变量可以使用类名直接访问,也可以使用对象名进行访问。
如:
public class Student{
    public static String stu="zhangsan";
    public static void main(String[] args){
        //静态变量不需要实例化,就直接可以访问
        System.out.println(Student.stu);
        
        //如果不加static关键字 需要像这样访问
        Student student=new Student();
        System.out.println(student.stu);
        
        //如果加上static关键字,上面的两种方法都可以使用
    }
}
  • 静态方法:被static修饰的方法;不依赖对象;不用将类实例化就可调用,所以不能有 this,也不能访问非静态成员变量和非静态方法。但是非静态成员变量和非静态方法可以访问静态方法。

4.final修饰词

可以修饰类、方法、属性和变量
1). 修饰类,则该类不允许被继承,为最终类
2).修饰方法,则该方法不允许被覆盖(重写)
3).修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值
4). 修饰变量,则该变量的值只能赋一次值,即常量

5.封装

封装:隐藏对象的属性和实现细节(私有化),同时提供一些可以被外界访问的接口。(get,set)

封装的好处:

  • 1)只能通过规定的方法访问数据。
  • 2)隐藏类的实例细节,方便修改和实现。
  • 3)良好的封装能够减少耦合

如何实现类的封装?

  1. 修改属性的可见性,在属性的前面添加修饰符 (private)
  2. 对每个值属性提供对外的公共方法访问,如创建 一对getter/setter(取赋值)方法,用于对私有属性的访问

6. 继承

继承:类与类之间的衍生关系

语法格式: class 子类 extends 父类

继承的好处:避免冗余,实现代码复用。
继承的特性:

  • 1)子类拥有父类除private以外的所有属性和方法
  • 2)子类可以拥有自己的属性和方法。(子类可以对父类进行扩展)
  • 3)子类可以用自己的方式去实现父类的方法。
  • 4)Java 中的继承是单继承,一个类只有一个父类。(
    (Java实现多继承的一个办法是implement实现接口)
  • 5)提高了类之间的耦合性(缺点,不利于代码独立)

关键字:

  1. extends关键字实现单继承,一个子类只有一个父类
  2. implement关键字实现多继承,类继承接口,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
  3. this关键字代表当前对象,当成员变量和局部变量之间发生冲突时,在属性名前面添加了 this 关键字,指向自己的引用。
  4. super关键字super 关键字在子类内部使用,代表父类对象
    使用:1)访问父类的属性:super.属性名
    2) 访问父类的方法:super.方法名()
    3) 子类构造方法调用父类有参的构造方法时,需在子类的构造方法体里最前面的位置:super()。

7. 多态

多态:允许不同类的对象对同一消息做出响应(只通过父类就能引用不同的子类)。只有在程序运行的时才知道引用变量所指向的具体实例对象。

  • 多态的优点:消除类型之间的耦合,可扩充
  • 实现多态的三个必要条件:继承、重写和向上转型(即父类引用指向子类对象)
  • 多态的实现方式:继承父类进行方法重写,抽象类和抽象方法,接口实现。

9. 重写与重载

是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成一个类的多态性表现

  • 1)重写(Override):子类对父类的允许访问的方法的实现过程进行重新编写, 发生在子类中,返回值、形参和都不能改变
  • 2)重载(Overload):在一个类中定义多个同名的方法。方法名相同,参数不同,个数不同,调用时根据参数选择方法

10. 抽象类

抽象类:定义类时,前面加上 abstract 关键字修饰的类
抽象方法:用abstract关键字声明,仅有声明没有方法体(不给出方法的具体实现)

抽象类规定:

  1. 抽象类不能被实例化。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用
  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
  3. 抽象类中的抽象方法只是声明,不包含方法体
  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
    5.抽象类的对象不能直接创建,通常是定义引用变量指向子类对象
  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类
  1. 接口
    用于描述类所具有的功能,而不提供功能的实现,功能的实现需要写在实现接口的类中,并且该类必须实现接口中所有的未实现方法。
语法格式:
修饰符 interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}

三、常用类

1. Array类

Arrays 类包含用于操作数组的各种方法(例如排序和搜索),它所提供的方法都是静态的
功能:
• 给数组赋值:通过 fill 方法(所有元素都赋上相同的值)
• 对数组进行排序:通过 sort 方法,按升序。
• 比较数组:通过 equals 方法比较两个数组中元素值是否相等。
• 查找数组元素:通过 binarySearch 方法对排序后的数组使用二分法查找数据。

2. StringBuffer 和 StringBuilder 类

  • 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
  • StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
  • StringBuilder 类和 StringBuffer类 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

StringBuilder 类的常用方法:

  • insert(int offset,Object obj):在 offset 的位置插入字符串 obj
  • append(Object obj):在字符串末尾追加字符串
  • length():确定 StringBuilder 对象的长度
  • replace(int start, int end, String str): 使用一组字符替换另一组字符
  • delete(int start, int end):删除字符串
  • reverse():反转字符串

3.Math类

Math类:用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
常见方法:

  • max(int a, int b):返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
  • min(int a, int b):返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数
  • abs(int num):计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
  • sqrt(double num):计算给定值的正平方根
  • sin(double num):计算角 num 的正弦值
  • cos(double num):计算角 num 的余弦值
  • tan(double num):计算角num的正切值
  • pow(double a, double b):计算 a 的 b 次方

4. Date 类

Date 类表示日期和时间,经常用来获取系统当前时间
两个构造方法:
1) Date():使用当前日期和时间来初始化对象
2) Date(long date):接收一个参数,该参数是从1970年1月1日起的毫秒数

  • 获取当前日期时间:使用 Date 对象的 toString() 方法来打印当前日期和时间
  • 格式化时间:使用 SimpleDateFormat 格式化日期,
Date dat = new Date( ); 
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + sdf.format(dat));

四、集合框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值