java学习

编译 javac 类名称
运行 java 类名称
1.pulblic class 类名称{} 文件名称必须与类名称一致,且一个文件里只能有一个public class类

2.class 类名称{} 文件名称与类名称可以不一致,编译生成的文件与类名称一致,且一个文件可以有多个,此时生成多个文件

3.所有程序都是从主方法开始的,主方法:public static void main(String args[]) {},类似于c语言的int main() {},这里的String args[]是执行时调用 java 类名称 后跟的以空格分开的String参数

4.java中不同类型进行运算会强制转换为具有更大范围的类型,byte < char = short < int < long < float < double < String,java中short类型和c语言中int类型范围一样,byte是8位,要使用long在数字后面加l或L,float类似

5.String类型中要使用“”在前面加\

6.java中变量的类型有:

  • 类变量:独立于方法之外的变量,用 static 修饰。类变量也称为静态变量静态变量,除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。

  • 局部变量:类的方法中的变量。局部变量只在声明它的方法、构造方法或者语句块中可见;且没有默认值,所以局部变量在声明时必须初始化,才可以使用。

  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;


public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}

实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。即实例变量使用前要new一个对象,而静态变量则不用new

对于下面的程序,无论创建多少个实例对象,永远都只分配了一个 staticInt 变量,并且每创建一个实例对象,这个 staticInt 就会加 1;但是,每创建一个实例对象,就会分配一个 random,即可能分配多个 random ,并且每个 random 的值都只自加了1次。

public class StaticTest {
private static int staticInt = 2;
private int random = 2;

public StaticTest() {
    staticInt++;
    random++;
    System.out.println("staticInt = "+staticInt+"  random = "+random);
}

public static void main(String[] args) {
    StaticTest test = new StaticTest();
    StaticTest test2 = new StaticTest();
}
};

7.一个类中定义了一个构造方法后,则不再自动生成一个默认构造方法,当生成一个对象时会分配栈空间,而对象中的方法属性等会分配堆空间,如果使用对象的赋值则会指向同一个堆空间,改变其中一个对象的属性的值则会影响另一个对象的属性

8.使用字符串的比较时要使用 字符串名.equals(字符串名)而不能使用==,因为==比较的是指向的堆内存地址是否一样,只有通过=赋值的字符串才指向相同的堆内存地址,否则即使字符串内容相同堆内存地址也未必相同。而且使用equals和字符串比较时一定要把已知字符串写在前面,因为equals会处理null字符串

9.String的实例化方法:
1.直接赋值String example = “STRING”;只开辟一块堆内存空间
2.构造方法String example = new String(“STRING”);开辟两块堆内存空间,而且example并不指向STRING的空间,可以使用intern()方法将两块内存空间变成同一块,指向STRING,字符串内容一旦声明则不可改变,String类对象内容的改变是依靠引用关系的变更实现的,即改变指向的堆内存而不改变堆内存的内容;

10.bool String.contains(String) 可以用于判断String中是否有需要字符串
bool String.startsWith(String,int)可以用于判断String中在int后面是否以所需字符串开头,int可以省略,同样还有endsWith
String String.replaceAll(String origin, String replace)可以将origin替换成replace
String String.replaceFirst(String origin, String replace)可以将第一个origin替换成replace
String substring(int beginindex)从指定索引截取到结尾
String substring(int beginindex,int endindex)截取部分子字符串的数据。
String[] str.split(String)表示按照String进行拆分,最后没有String
String[] str.split(“”)表示按照每一个字符进行拆分
String[] str.split(String, int limit)表示拆分出的字符串数组最多有limit个,其他的不拆放在最后一个
String.trim()去掉前后的空格,中间的空格不会受到影响

11.static关键词修饰的属性可以在不创建实例化对象的情况下访问和修改,使用类名称.set方法修改,而且所有该类的实例化对象共享这个属性,static方法不能调用非static方法和属性,static在编译时就初始化

12.内部类,在一个类中可以定义另一个类,这个类成为内部类,内部类可以直接访问外部类的私有成员,外部类也能直接访问内部类的私有成员,要创建内部类的实例化对象应该用new 外部类.new 内部类(),也可以使用static 修饰内部类,此时创建实例化用new 外部类.内部类() ,且内部类不能访问外部类非static的成员,可以使用private修饰内部类使除外部类以外不能访问内部类
13.
1.在方法中也可以定义内部类
2.方法中定义的内部类可以访问外部类的final成员变量和方法

14.可以用 子类 extends 父类 来实现继承,子类也称为派生类,父类也称为超类,基类。子类具有父类非private的属性和方法,即子类不能直接使用父类private的内容。而且Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类。
另外,子类在调用构造方法时会默认先使用super()调用父类的无参构造方法,可以使用super(父类构造方法的参数)来调用父类的有参构造方法,此时就不会自动调用父类的无参构造。
当子类覆盖了父类的方法时,super.父类的方法名 也可以调用父类的方法

15.final关键字的基本用法:
1.修饰类:当用final修饰一个类时,表明这个类不能被继承。
2.修饰方法:类中的 final 方法可以被子类继承,但是不能被子类修改
3.修饰变量:对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

16.抽象类,在Java语言中使用abstract class 来定义抽象类,抽象类不能产生实例化对象,因此抽象类必须被继承,才能被使用。
abstract关键字可以用来声明抽象方法,抽象方法没有定义,方法名后面直接跟一个分号,含有抽象方法的类必须声明为抽象类。子类必须重写父类的全部抽象方法,或者声明自身为抽象类

17.接口,在java语言中使用interface来定义接口,接口不能产生实例化对象,必须被继承才能使用,使用implements关键字继承接口,而且除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。而且类中的非方法成员必须声明为static final类型,方法均为抽象方法。
implements关键字使一个类可以继承多个接口

18.parseInt(String)就是把String类型转化为int类型,ValueOf(数据类型)方法比如说 Integer.valueOf(String)是把String类型转化为Integer类型,而String.valueOf(基本数据类型)能把基本数据类型转为String类型

19.所有类都继承Object类,而且一般都要重写Object类中的部分方法,String toString()和boolean equals(Object obj)。
String toString在System.out.println(对象名)时自动调用并输出
boolean equals(Object obj)用于对象比较,因为==判断的是对象的地址而不是值本身,因此需要重写equals方法以实现值的比较,而且因为传入的是Object对象,因此在进行值比较时往往需要先使用instanceof关键字判断是不是同一类,再逐个成员进行比较

20.java中一些常见的系统包:
java.lang:包含了String,Object,Integer等类。
java.lang.reflect:反射开发包
java.util:java的工具包,提供了大量的工具类,像链表
java.util.regex:正则工具包
java.text:国际化处理程序包
java.io:进行输入输出处理以及文件操作
java.net:网络编程开发包
java.sql:数据库程序开发包
java.applet:Applet程序开发包,目前已经不再使用。
Applet是java在网页上嵌套的程序,采用绘图的方式完成的显示。而Application 是在主方法上运行,通过命令行执行。随着时间的发展,Applet程序已经不再使用。(使用Canvas绘图–HTML5)
java.awt javax.swing

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31663969/article/details/79944863
文章标签: java
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭