您现在的位置是:网站首页> 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;
}
}