JAVA笔记(黑马程序员)

Java笔记

1.Java中严格区分大小写 采用驼峰命名方式 首字母大写

import java.util.*;--------------->代表导入全部的包

2.Java中的输入需要导包

输入

import java.util.Scanner;

Scanner sc = new Scanner(System.in);

    String input = sc.nextLine();

int input = sc.nextInt();

输出   System.out.println(data);

3.

Scanner sc = new Scanner(System.in);

        String input = sc.nextLine();//输入数据,以字符串存储

        String []arr = input.split(",");//将数据以,进行分割,并挨个存储在arr【】中

        int []a = new int[arr.length];//创建一个与arr大小相等数组a【】

        for (int i = 0; i < arr.length; i++)

 {

            a[i] = Integer.parseInt(arr[i]);

//将数组arr中的数据依次转换为int类型存储在a【】中

        }

4.数据类型

整数:

byte(-128 到  +128)

short

int

long(在定义的是时候需要在后面加上L (long a = 999999999999L))

小数

float(需要加入F作为标识)

double

字符类型

char

boolean类型

true

false

字符串类型

string

5.

StringBuffer和StringBuilder都是Java中可变字符串的类,它们的主要区别在于线程安全性和性能。

StringBuffer是线程安全的,因为它的方法都是同步的,也就是说,在多线程环境下,多个线程可以同时访问一个StringBuffer对象,而不会发生数据竞争的问题。但是,由于同步的开销,StringBuffer的性能比StringBuilder要差一些。

StringBuilder是非线程安全的,因为它的方法都不是同步的。在单线程环境下,使用StringBuilder比使用StringBuffer更快,因为没有同步的开销。但是,在多线程环境下,如果多个线程同时访问一个StringBuilder对象,就可能会发生数据竞争的问题,导致程序出错。

因此,如果你需要在多线程环境下使用可变字符串,应该使用StringBuffer;如果在单线程环境下使用可变字符串,并且对性能要求较高,应该使用StringBuilder。

6.静态变量是优先于对象出现,是随着类的加载而加载

静态方法只能访问静态

非静态方法可以访问所有

静态方法无关键字this

7.静态static变量是所有对象共有的

调用的时候可以使用对象名或者类名进行调用

静态static方法多用于工具类和测试类,在Javabean类中少用

调用的时候一般采用类名进行调用(工具类中使用私有的构造方法 共有的静态方法)

8.Java中三种类

JavaBean类 用来描述一类事物的类,如Student,Teacher,Dog等

测试类 用来检查其他类是否正确,带有Main方法的类,是程序入口

工具类 不是描述一类事物 而是帮助做一些事情的类

9.

public class A{

     int a;

   public A() //构造函数

}

public class B{

A a;

public B()//构造函数

{

   a = new A();(如果B类是以A类为成员 那么需要对A进行实例化)

}

}

public class Main{

public static void main(string []arg){

        //主函数的内容

         A a = new A();

         B b = new B();

}

}

10.StringBuilder(通常用于字符串的拼接与反转)

本质是一个容器

①构造方法

public StringBuilder();

public StringBuilder(String str);

可以使用下面的方式创建

StringBuilder sb = new StringBuilder(“abc”);

②方法

添加元素:sb.append(任意类型)

反转: sb.reverse();

长度: sb.length();

转为字符串string类型:sb.toString();

11.StringJoiner(jdk8后出现 更加方便)

StringJoiner sj = new StringJoiner(间隔符);

StringJoiner sj = new StringJoiner(间隔符,开始符,结束符);

成员方法

sj.add();

sj.length();

sj.toString();

12.集合容器ArrayList

可以自动扩容 而数组是定长的

但是集合容器在存储基本类型的时候必须将基本类型包装成类

ArrayList<数据类型> list = new ArrayList<数据类型>();

增:list.add(值)

删:list.remove(值);

改:list.set(索引,值);

查:list.get(索引);

长度:list.size();

13.java中的随机数生成

Random r = new Random();
int num = r.nextInt(10);

14.数组的两种创建方法

int []a = {1,2,3,4,5};
int []b = new int[5];

15.继承关系


父类:Person

public class Person{

     .......

}

子类:

public class Student extends Person{

     ........

}

public class Teacher extends Person{

     ........

}

Person为父类(基类或者超类)

Student和Teacher类是子类(派生类)

extends为关键字

16.Java中不支持多继承 但支持多层继承

每一个类都直接或者间接的继承于Object类

17.继承中的关键字

this表示当前类

super代表父类

18.方法的重写(发生了重写 则会对父类进行覆盖)

例如:

@override

public void eat{

  ......

}

19.父类的构造方法直接使用super()

20

.

21.

使用父类的指针指向子类的对象

22.如果使用多态的方式新建对象

Fu f = New Zi();

如果在调用成员变量的时候 如果父类与子类有同名的 那么就会优先调用父类的成员变量

如果在调用成员方法的时候 如果父类不存在需要重写的方法 那么就会错误(也就是说 这种方式创建的父类对象可以调用子类中对父类重写的方法 但无法直接调用子类新增的方法或同名方法)

23.

多态的优势

①定义方法的时候 使用父类作为参数 可以接受所有子类的对象、

②使用父类对象调用子类中对父类的重写方法

多态的劣势

①无法直接调用子类新增的方法或同名方法

可以用强制转换来使其恢复正常

Fu f = New Zi();

Zi z = (Zi)f;

24.Object是顶级父类 也就是说他可以指向任意子类

25.包的作用

26.Final关键字

27.权限修饰符的分类

28.代码块

局部代码块

构造代码块

静态代码块

在类的成员变量底下

static{

......//仅会执行一次

}

29.抽象类和抽象方法

30.接口

接口就是一种规则(是对行为的抽象) 与接口有关系的类需要遵守接口的重写方式

接口中的成员变量默认是public static final类型

接口中的方法默认是public abstract

接口与接口之间可以是单继承,多继承关系(需要实现多继承关系的接口 需要重写里面所有抽象方法)

jdk新增的规则

31.

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值