您现在的位置是:网站首页> Android

Java学习笔记

  • Android
  • 2023-01-11
  • 960人已阅读
摘要

Java语法回顾

数据类型转换

类和接口

抽象类与抽象方法

包也就是目录(import com.hello.A 相当于目录com\\hello\\A)

接口



数据类型转换

long i=122;

short c=(short)i;

一、数字转字符串

1、通过ToString() 方法, Double 就是一个包装类,String s1 = Double.toString(num);


Integer同理


2、通过valueof() 方法, 本质上还是调用 toString() 方法,String s2 = String.valueOf(num);


3、技巧性,第三种没有借助包装类 String s3 =""+num;


二、字符串转数字

string 和int之间的转换


string转换成int  :Integer.valueOf("12") 或者Integer.PaseInt(“12”)


三、 char和int之间的转换

首先将char转换成string


String str=String.valueOf('2')


Integer.valueof(str) 或者Integer.parseInt(str)


Integer.valueof返回的是Integer对象,Integer.parseInt


返回的是int



类和接口


【修饰】 class 类名 【extends 父类】【implements 接口名】

{

 类成员变量声明

 类方法声明

}


修饰 protected 它只能被与该类处于同一个包的类或该类的子类直接存取和使用

定义了 abstract抽象方法的类必须被声明为abstract的抽象类

调用父类函数如:

public void MyFunc()

{

super.MyFunc();

...

}

调用父类的构造函数

super(a,b,c);


调用另一个构造函数

this(a,b,c);


在java这门编程语言中,final是一个关键字,它可以被用来修饰类,变量以及成员方法

被final修饰的变量,又叫被称为 自定义常量

1. final修饰类

当final关键字修饰一个类,则该类会成为最终类,即该类不能被继承(俗称“断子绝孙类”),但是该类可以有父类

//类名为Fu的类被final关键字修饰,代表其不能被继承

final class Fu {

    

//现在类名为Zi的类想继承Fu这个类,编译器会报错

class Zi extends Fu {

    

}

2. final修饰变量(成员变量和局部变量)

变量分为成员变量和局部变量,他们被final修饰时有不同的注意事项。


(1) final修饰成员变量:该成员变量必须在其所在类对象创建之前被初始化(且只能被初始化一次)。


这句话的意思是: 被final修饰的成员变量,一定要被赋值且只能被赋值一次,且必须是在这个成员变量所在的类对象创建之前被赋值。

试验代码:


第一种,给其直接初始化(赋值):

private final int a=5


第二种,在构造代码块中将其初始化(赋值):

private final int a;


//构造函数

{

a=5;

}

第三种,在成员变量所在类的构造方法中将其初始化(赋值):


private final int a;

public Demo(int b)

{

this.a=b;

}

总结:

final修饰成员变量,该变量必须在 其所在类对象 创建之前完成初始化且只能被初始化一次(我的理解:对象被创建,说明要使用这个对象,所以身为这个对象属性之一的成员变量就必须要被赋值)

final修饰局部变量,该变量在定义时可以不被初始化,但是使用之前,必须完成初始化且只能初始化一次!


总而言之一句话:

final修饰的成员变量在定义时必须初始化(三种方法),final修饰的局部变量定义时可以不被初始化,但是使用之前必须完成初始化!


当final修饰引用数据类型(类、接口、数组)的变量,则引用变量所指向的对象(即该变量所存放的地址值)不能更改,但是该对象的内容(即地址值上存储的内容)可以更改!!

不能改变被final修饰的引用变量所指向的对象,但是可以改变其指向对象的内容:


final修饰成员方法

当final关键字修饰了成员方法,则意味着这个方法不能被重写,但是可以被继承(注意,这里final修饰的是方法而不是类


class C{


public final void Test(){

}

}

class D extends C{


//错误会报错

public void test(){


}


}


抽象类与抽象方法

首先创建一个表示图形的抽象类 Shape,代码如下所示

public abstract class Shape {

    public int width; // 几何图形的长

    public int height; // 几何图形的宽

    public Shape(int width, int height) {

        this.width = width;

        this.height = height;

    }

    public abstract double area(); // 定义抽象方法,计算面积

}

定义一个正方形类,该类继承自形状类 Shape,并重写了 area( ) 抽象方法。正方形类的代码如下:

public class Square extends Shape {

    public Square(int width, int height) {

        super(width, height);

    }

    // 重写父类中的抽象方法,实现计算正方形面积的功能

    @Override

    public double area() {

        return width * height;

    }

}

定义一个三角形类,该类与正方形类一样,需要继承形状类 Shape,并重写父类中的抽象方法 area()。三角形类的代码实现如下:

public class Triangle extends Shape {

    public Triangle(int width, int height) {

        super(width, height);

    }

    // 重写父类中的抽象方法,实现计算三角形面积的功能

    @Override

    public double area() {

        return 0.5 * width * height;

    }

}

最后创建一个测试类,分别创建正方形类和三角形类的对象,并调用各类中的 area() 方法,打印出不同形状的几何图形的面积。测试类的代码如下:

public class ShapeTest {

    public static void main(String[] args) {

        Square square = new Square(5, 4); // 创建正方形类对象

        System.out.println("正方形的面积为:" + square.area());

        Triangle triangle = new Triangle(2, 5); // 创建三角形类对象

        System.out.println("三角形的面积为:" + triangle.area());

    }

}

在该程序中,创建了 4 个类,分别为图形类 Shape、正方形类 Square、三角形类 Triangle 和测试类 ShapeTest。其中图形类 Shape 是一个抽象类,创建了两个属性,分别为图形的长度和宽度,并通过构造方法 Shape( ) 给这两个属性赋值。


在 Shape 类的最后定义了一个抽象方法 area( ),用来计算图形的面积。在这里,Shape 类只是定义了计算图形面积的方法,而对于如何计算并没有任何限制。也可以这样理解,抽象类 Shape 仅定义了子类的一般形式。


正方形类 Square 继承抽象类 Shape,并实现了抽象方法 area( )。三角形类 Triangle 的实现和正方形类相同,这里不再介绍。

 


在测试类 ShapeTest 的 main( ) 方法中,首先创建了正方形类和三角形类的实例化对象 square 和 triangle,然后分别调用 area( ) 方法实现了面积的计算功能。


抽象类使用注意事项

一个类如果定义为抽象类,那里面可以没有抽象方法

一个类中如果有抽象方法,那所在类必为抽象类

抽象类不能被实例化,可以实例化这个抽象类的非抽象子类,

抽象类中的所有非抽象子类必须重写抽象类中的抽象方法

抽象类中,可以有构造方法,是供给子类创建对象时,初始化父类成员使用的

抽象类中的抽象方法只是声明,不包含方法体,也就是不给出具体的实现细节


接口

public interface Shape{

 public abstract double area();

 public abstract double valume();

 public abstract String getName();

}


public class MyClass implements Shape{

 public double area()

 {

  return 0.0;

 }

}

Top