java基础

1.java基础

个人学习笔记有错请指正

1.多态

父抽象类被子类继承,并且子类可以重写父类方法。

2.静态变量

静态变量指的是被static修饰的类的变量;静态变量被所有类实例对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化。

3.try catch finally

当try遇到异常会跳转到catch,finally无论如何都会执行,如果try或者catch中都有return语句,会在执行return之前执行finally;无论有没有异常,程序之后的代码都会执行。

4.== 和equals

Java中equals和的区别
java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(
),比较的是他们的值。
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

5.抽象类

在Java中用extends来创建一个子类
设计抽象类的原因是什么?有一部分类不应该被初始化;为什么有些类不应该被初始化?他们是一部分具体的相似的类的抽象没有办法具体化。
抽象类的唯一目标就是被继承,抽象类一定要被继承,方法一定要被覆盖。
抽象类的好处是什么?是多态,因为继承抽象类的子类可以重写或重载抽象类的方法。

6.接口

在Java中用implements声明自己使用一个或多个接口
抽象类和接口一旦被继承或实现,其中所有方法也必须都要被实现。
接口相当于一个抽象方法,不能被继承,只能被实现。
接口的好处是什么?一个接口可以被多个类实现,一个类可以实现多个接口。
多种类可以实现,并重写一个接口的好处是什么?多态!!!!
接口中可以添加default方法,该方法不用被实现。

7.构造函数

构造函数可以要求传入参数,例如初始化一个数组时需要传入数组的值
在构造函数中可以加一限制和检查,这是封装的好处
构造函数可以有很多个(类似重载),一定要声明一个无参的,这样用户如果在声明时没有传入参数,就按照默认的参数初始化。如果父类有构造函数,子类可以显示的调用,如果父类没有,子类可以不用操作,编译器默认调用父类的无参构造函数。

2.Java程序设计的基本结构

1.控制流程:if else、while循环、do while循环、for、foreach、switch语句、中断控制流程语句

switch语句中,case标签可以是:1.char byte short int 的常量表达式;2.枚举常量;3.从Java7开始,case标签还可以是字符串字面量;
中断控制流程语句:1.goto时Java的保留字,但在Java中并未使用它;2.break:跳出本层循环;3.continue:超越了当前循环体的剩余部分,就立刻跳到下循环体的首部,进行下一次循环。

2.大数

java.math中的BigInteger,BigDecimal这两个类可以处理任意长度序列的数值。
使用静态的valueOf方法可以将普通数值转换为大数值,例子BigInteger a = BigInteger.valueOf(100);
不能使用算术运算符去对大数进行运算,而是使用大数值类中的方法add,multiply,subtract,devide进行操作

import java.math.BigInteger;


public class BigIntegers {
  public static void main(String[] args) {
    String num1 = "999999999999999999999999999999";
    String num2 = "999999999999999999999999999998";
    BigInteger big1 = new BigInteger(num1);
    BigInteger big2 = new BigInteger(num2);
    System.out.println("加法操作:" + big1.add(big2));
    System.out.println("减法操作:" + big1.subtract(big2));
    System.out.println("乘法操作:" + big1.multiply(big2));
    BigInteger result[] = big1.divideAndRemainder(big2);
    System.out.println("相除后的商是:" + result[0]);
    System.out.println("相除后的余数是:" + result[1]);
  }
}

大数不是Java的基本数据类型,而是类和对象

3.数组

(1)数组的声明和创建:

声明数组变量:int[] a;
使用new运算符创建数组:new int[0];
一旦创建数组,就不能去改变数组的大小,但是可以改变数组中每个元素的值。

(2)数组的初始化和匿名数组

int[] a = new int[1];
匿名数组:a = new int{1,2,3};

(3)数组拷贝:

数组浅拷贝:将一个数组变量拷贝给另一个数组变量,这是两个变量将引用同一个数组(只是拷贝了引用,修改一个数组就等于对另一个数组做相同操作)。
数组深拷贝:使用Arrays类中的copyOf方法,将一个数组的所有值拷贝到另一个数组中,两个数组没有什么关系。

(4)命令行参数:main方法中的String[] args即为命令行参数,java Message -g cruel world采用这种方式运行java程序时:args[0]:"-g";args[1]:"cruel";args[2]:"world";java的main方法中程序名并没有存储在args数组中。

(5)数组排序:使用Arrays类中sort方法,这个方法使用了优化的快速排序算法;

(6)多为数组:例子:int[][] a = {{1,2},{3,4}}Java中实际上没有多维数组,多为数组被解释为数组的数组。

(7)快速打印数组元素:

打印一维数组:利用Arrays类中toString方法
打印二维数组:利用Arrays类中的deeptoString方法

4.八大基本数据类型

4种整型:byte short int long
2种浮点型:float double
1种字符型:char
1种真值型(布尔型):boolean

5.变量与常量

不要使用未初始化的变量
用final修饰的表示常量,final修饰基本类型和不可变类时,不会改变状态;final修饰可变类型时,只是不能改变对象的引用,但是可以改变对象的状态,
即可以调用对象的方法,改变对象对象的状态。

6.运算符

(1)数值类型之间的转换:

隐式转换:没有信息的丢失
显示转换:如强制类型转换,可能有信息的丢失

(2)自增与自减运算符:前缀形式:++i,先完成加一;后缀形式i++,会使用变量原来的值。

7.关系运算符

(1)关系运算符:>,<,>=,<=,==,!=

(2)逻辑运算符:&&, ||, !

8.位运算符:

java基础

9.字符串

(1)存储原理:

String类型是不可变的;
java中用双引号括起来的字符串如"abds",都是直接存储在方法区的字符串常量池当中的,双引号中内容相同的字符串只会在字符串常量池中保存一份;
为什么要把字符串存储在"字符串常量池"中?因为字符串在实际开发中使用太频繁,为了提高执行效率,所以把字符串放到了方法区的字符串常量池当中。

(2)创建字符串的两种方法

java基础

(3)String,StringBuilder,StringBuffer

java基础

(4)输入输出

java基础

上一篇:阿里小程序云周刊第8期:927小程序繁星计划峰会 · 看完这七大话题 你会更了解阿里小程序


下一篇:Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度