前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java笔记

Java笔记

原创
作者头像
用户11062199
发布2024-05-30 20:01:35
630
发布2024-05-30 20:01:35

Java 基础

易错知识点

  1. 等号=用于比较两个变量的引用(即内存地址)是否相同,而equals用于比较两个变量的内容(即内存地址里存放的值)是否相等
  2. 构造类中方法时要进行空参构造和全参构造
  3. private只能在本类的方法中使用而protected可以再本类和子类的方法中使用
  4. Object是所有类的父类,是顶级父类所有类都继承它
  5. 创建对象调用方法时不能为null,否则会报错(空指针异常)
  6. 基本数据类型byte(1字节)short(2字节)int(4字节)long(8字节)
  7. 12315613616L(L表示long类型)
  8. int是基本数据类型,integer是引用数据类型,integer是一个int的对象可以进行toString()操作

java 入门

代码语言:javascript
复制
 public class Test{
     public static void main(String[] args){
         //nextInt() nextDouble() 
         //next()接受字符串,遇到空格制表符回车才停止接受数据 
         
         //nextLine()接受字符串 可以接受空格制表符,回车结束
         //以上两种录入方法是不能混用的
         import java.util.Scanner;
         Scanner sc =new Scanner(System.in)
         System.out.println("你认识小红");//换行输出 line next
  System.out.print()
         System.out.print()//一行输出
        
     }
     //调用类时用 Car[] c=new Car();
     System.out.println("你没认识小红"+gf.getName()+"aksjflka");
     //字符串对比用str1.equals(str2)
     //String类型内容不可改变"abc"-->{'a','b','c'}-->"Qbc"
     byte[] bytes={97,98,99,100};//byte-->(ascii)
     //byte类型一般在网络传输中使用,传输字节信息--->io流
     String s=new String(btyes);
     System.out.println(s);--->abcd
 }
 非静态从属于对象,需要区分对象,静态方法从属于类,不需要区分对象
 因为this它的作用就是指向调用者的地址值啊,static全是共享的,就不必要用this了
     静态方法不能调用非静态成员变量(对象)
     a(父类) instanceof Dog(子类) d(a是不是Dog类型的,如果是强转成Dog类型并命名为d,不是则false)
     
     data.fori ===> for(int i=0;i<data;i++){}

static修饰的方法或变量是在创建新类之前就创建了不能用实例调用static,直接用类名调用,只要是静态的东西,都可以类名点直接获取

创建静态内部对象的格式: 外部类名.内部类名 对象名 =new 外部类名.内部类名()

编译能否成功看左边 编译结果要看右边

调用静态方法的格式: 外部类名.内部类名.方法名()

final相当于cpp的const final修饰方法表明此方法不能重写 修饰类不能被继承 修饰变量则只能赋值一次

面向对象

可变参数

  1. 方法形参中最多只能写一个可变参数
  2. 如果方法中除了可变参数以外还有其他形参,可变参数要写在最后
  3. 可变参数本质上是一个数组 public static int getSum(int...args) { int sum = 0; for (int j : args) { sum += j; } return sum; }

内部类和外部类

Java 内部类(嵌套类)与外部类之间的关系和特性如下: 定义: 外部类:正常的类,可以独立存在,不包含在其他类的定义内。 内部类(嵌套类):定义在另一个类(外部类)内部的类,它可以访问外部类的所有成员,包括私有成员。 类型: 成员内部类:类似于外部类的成员,可以在类的方法之外定义,可以是 public, protected, private 或默认访问修饰符。 局部内部类:定义在方法、构造器或块内的类,作用域仅限于该方法或构造器。 匿名内部类:没有名称的内部类,通常用于简洁地实现接口或抽象类的一个实例。 静态内部类(嵌套类):用 static 关键字声明,不直接与外部类的实例关联,可以像普通类一样创建对象。 访问权限: 内部类可以直接访问外部类的所有成员,包括私有成员和静态成员。 外部类要访问内部类的成员,必须先创建内部类的实例。 生命周期: 内部类的生命周期与外部类相关联,不能在没有外部类实例的情况下创建内部类的实例(静态内部类除外)。 对于非静态内部类,每个内部类对象都隐含地持有一个外部类的引用,可能导致外部类对象无法被垃圾回收。 使用场景: 内部类常用于封装特定于外部类的逻辑,提供更好的封装性和信息隐藏。 静态内部类常用于创建与外部类紧密相关的辅助类,但不需要外部类的实例。 编译结果: 编译后的 .class 文件,内部类会被编译成单独的文件,名称为外部类名加 内部类名,例如 OuterInner.class。 内存模型: 内部类对象存在于外部类对象的堆内存中,而局部内部类对象存在于方法栈帧中。 这些特性使得内部类成为 Java 中一种强大的工具,尤其是在设计模式和复杂逻辑处理中。

JavaBean(右键pte)

代码语言:javascript
复制
 class GirlFriend{
             private String name;
             private int age;
             private String sex;
             public GirlFriend(String name,int age,String sex){
                 this.name = name;
                 this.age = age;
                 this.sex = sex;
             };
             public void setName(String name){
                 this.name = name;
             }
             public String getName(){
                 return name;
             }
             public void setAge(int age){
                 this.age = age;
             }
             public int getAge(){
                 return age;
             }
             public void setSex(String sex){
                 this.sex = sex;
             }
             public String getSex(){
                 return sex;
             }
         }

重载

指在一个类中有多个同名方法(参数列表不同) @override方法重写(只有添加到虚方法表的方法才能被重写,重写时子类权限必须大于父类) this就近原则子类没有找父类

封装

将对象的数据(属性)与数据的操作(方法)绑定在一起

继承

子类继承父类的公有方法和变量 继承:虚方法表(非final static private) super 调用父类

接口(继承的一种)

接口是方法的抽象interface implements(实现)其中方法必须是抽象方法(必须重写)

protected 的方法在子类也可以使用

多态

允许一个接口被多种数据类型实现或一个类可以有多种形态 ,能利用父类的引用或指针来指向子类的对象,从而实现不同对象对同一消息做出不同相应

强转

强制转换能使父类转换为真正的子类,从而使用子类私有功能

泛型(只能是引用数据类型)

代码语言:javascript
复制
  public class Box<T> {//泛型类写法
      private T item;
      public void set(T item) { this.item = item; }
      public T get() { return item; }
  }//其中T为泛型
 public class ListUtil {
     private ListUtil(){};
     public static <E> void addAll(ArrayList<E> list, E[] e)//泛型方法
     {
         Collections.addAll(list, e);
     }
     public static <E> void addAll(ArrayList<E> list, E...e)//可变参数里面可以传入多个参数==>三个点
     {
         Collections.addAll(list, e);
     }
 }
 //泛型不具备继承性,但数据具备继承性

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 基础
    • 易错知识点
      • java 入门
        • 面向对象
          • 可变参数
          • 内部类和外部类
          • JavaBean(右键pte)
          • 重载
          • 封装
          • 继承
          • 接口(继承的一种)
          • 多态
          • 强转
          • 泛型(只能是引用数据类型)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档