java笔记

本文介绍了Java的基础知识,包括JDK和JRE的安装配置,环境变量设定,数据类型转换,字符串方法,以及import关键字。讨论了面向对象编程的核心概念如封装、继承和多态,还涉及了数组、静态关键字、对象与类的关系,以及异常处理、抽象类和接口等重要概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一天

java 
   面向对象
   跨平台
JDK
    jdk是一个开发工具包,包含了jre以及常用的类库
jre
   包含了jvm(java 虚拟机)和和运行java程序(.class字节码文件)所需要的核心类。
   
   傻瓜式安装,安装完以后配置环境
   右击计算机,找到高级系统设置
   打开高级系统设置,到系统变量配置
   java_home    jdk的安装路径
   path   java_home/bin
 
   
   java   javac
   
   
  切换盘符:
  
  从小到大
  byte>>>>>short>>>>>int>>>>>long>>>>>float>>>>double
   
  (强制转换的类型)
  
  trim() 去掉首尾空格,并返回String
  charAt();截取下标所对应的字符,返回值是char 
  length();这是字符串获取长度
  contains();字符窜是否包含另外一个字符串
  endsWith();
  判断是否是以XXXXX结束的,返回值是boolean
  indexOf();字母首次出现的位置,返回值是int  equalsIgnoreCase();忽略字母的大小写,返回值是boolean
  startsWith();是以XXXXX开始,返回值是boolean
  substring();截取字符串长度,返回 值是String
  isEmpty();判断是否是空串 返回值是boolean
  valueOf();转换成字符串类型,返回值是String
  split(),重中之重,字符串切割转,返回值是String数组。
  
  
  import 导包关键字
  
  continue  结束当前循环进入下一轮循环
  break 结束循环
  return  结束循环,并可以有返回值
  
  减少代码冗余、
  提高代码重用性
  提高程序的结构化
  方法重载和方法名一样,参数的类型,个数不同,参数顺序(面试经常问到),
    /**
     *     方法的声明方式:
     * 
     *      public static 
         (返回值类型) methodName(params){ 代码块}
     */

    数组的定义:
    
    声明数组的三种方式
     int [] i={1,2,3,4};
     int [] n=new int []{1,2,3,4};
     int [] s=new int [length];
     ins[0]=1;
     .
     .
     .
     静态关键字 static
     静态变量:能被静态方法或者非静态方法中使用
     
     非静态变量:只能在非静态方法中使用
     静态方法:可以直接通过类名调用,不用创建对象
     非静态方法:需要创建对象,通过对象进行调用
     
     
     
     对象:客观存在事物;
     类:是对象的抽象,概念定义。
     
     创建对象的关键字是 new 
     举例:new Student();
     
     构造函数:
     在创建对象的时候就被调用了
     和类名保持一致
     没有返回值
     
     final 修饰的变量常量,值不可以被改变
    
    
    面向对象:
        封装
        继承
        多态
    什么是封装:
    首先通过private属性私有化,不能让外界直接访问,要通过get/set方法来访问属性,这就是封装
    get/set方法命名统一,get/set+属性名称,属性名称首字母大写
    
    set方法设置 get方法获取值
    
     
       通过继承,子类具有访问父类对象的成员的访问权。
    继承的好处:继承是实现代码复用的重要手段。
    继承的步骤:
    子类继承父类,当创建子类对象时,先创建父类对象,再创建子类的对象。
    
    Java中的继承是单继承。
    
    
    private    default    protected public
本类 √          √          √             √
本包           √          √             √
子类                  √             √
全局                             √
   方法的重写 重写的方法名一样,权限修饰符更宽或者是相同,返回值类型相同,
   super 指的是父类对象,可以通过super关键字直接调用父类的方法或者是属性,不能被静态成员访问
   super()
   调用父类构造方法,必须写在子类构造方法
   的第一行。
   
   
   多态:
   多态存在的三个必要条件:继承、重写、父类引用指向子类。
   
   在多态的情况下,只能调用父类已有的对象成员,不能调用子类新增的成员。

    如果父类对象、子类对象定义了同名属性,在多态情况下使用父类对象的。

    如果子类对象重写了父类对象的方法,在多态的状态下,调用的是子类的重0写方法。
     
    向上转型
    当子类对象赋值给一个父类对象引用时,便是向上转型。例子 Animal a=new Cat();
    
    instanceof
    判断一个对象,是否是另外一个对象 

    包装类:对基本数据类型的强化,提供了对应的方法和属性
    基本数据类型和包装类型的区别
    包装类型可以为null 基本数据类型不可以为空;
    .valueOf();
    .toString();
    
    final修饰的类无法被继承。
    final修饰的方法无法被重写。
    final修饰的变量无法被再次赋值,
    变为了常量。
     
     
    堆:放的是对象
    栈:属性和方法
    
    //类就是你们写Java文件
    
    类加载时机:
    1,第一次创建对象的时候
    2,第一次调用静态成员的时候
    
    类加载:
    当jvm 第一次使这个类时,需要找到这个类.class文件,并把这个文件类的信息,读取到jvm 中,并保存起来。
    
    类加载的过程
    1)如果需要,先加载父类    2)按照定义顺序,初始化静态属性和执行静态初始代码块
    
    静态代码块:
    类加载的时候执行一次;
    
    
    StringBuilder 先线程不安全的,StringBuffer 线程安全(贼重点)可以通过append
    来操作字符窜
    执行速度方面的比较:
    StringBuilder > StringBuffer > String
    
    
    成员内部类:
    可以访问外部类的属性和方法
    对象的创建:先创建外部类对象然 后 外部类对象.new 创建    
    静态内部类:
    只能访问外部类的静态成员
    创建对象  new 外部类.静态内部类名()
    局部内部类:
    不仅可以访问外部类属性还可以访问局部变量
    
    匿名内部类:
    一般用于接口的实现
    
    
    异常:
    throwable
    error:程序出现无法控制,无法修改
    Exception:可控的,可以手动处理
    RuntimeException 运行时异常
    非 RuntimeException:一般指的是我们编译
    异常 
    
    RuntimeException 处理的方式:
    try{}catch(){}
    try{}catch(){} finally{}
    throws 在方法的声明处抛出异常
    throw 手动一个异常对象
    
    
    
    所有异常类的父类是Exception
    ArithmeticException :数学异常
    NullPointerException: 空指针异常
    indexOutOfBoundException : 下标越界
    classCastException:类型强转错误
    FileNotFoundException:文件找不到
    
    
    抽象类:
    抽象类的特点
    1、抽象类不能直接用new 对象()去创建。
    2、抽象类必须使用abstract修饰符去修饰。
    3、抽象类可以有普通的方法。
    4、抽象类中的抽象方法使用abstract修饰符修饰,抽象方法没有方法体。
    5、抽象类中的抽象方法交给子类去实现。
    6、抽象类会被间接创建,因为在创建子类对象时先创建的是父类对象,这样抽象类作为父类会被间接的实例化,所以抽象类也有构造器。
    注意:abstract只能修饰对象成员,不能修饰静态成员,抽象方法权限修饰符不能为private,final。
    抽象类和普通类的区别
    1、抽象类不能被直接创建实例对象,普通类可以。
    2、抽象类中可以有抽象方法,也可以没有抽象方法,普通类不能有抽象方法。
    3、如果抽象类继承其他抽象类,可以不用重写其父类的抽象方法,普通类继承抽象类必须重写抽象方法。
    
    
    new Date ()获取当前日期
    SimpleDateFormat 格式化日期类
    format() 日期转化为字符串
    parse()  字符串转换成日期
    获取当前毫秒值
    System.currentTimeMillis(); 
    
    接口的定义:
    接口定义了你要实现功能一种规范,功能的实现要用类来实现,
    关键字是interface 。
    接口可以同时实现多个,实现关键字是implements,用逗号隔开 
    
    接口的成员
    1、接口的方法都是抽象方法,默认使用public abstract修饰,不能修改。
    2、接口的变量都是静态常量,默认使用public static final修饰,不能修改。
    3、接口中的常量必须在声明时赋值,常量名称必须大写。
    
    接口和继承
    先继承,再实现
    
    
   7.1 接口和抽象类的相同点 
   1、抽象类和接口都不能被直接实例化,他们都需要被继承或实现。(类和抽象类中间是继承关系,类和接口是实现关系,接口和接口之间可以有继承关系)
   2、接口和抽象类都可以包含抽象方法,实现或继承他们 的普通类必须重写抽象方法。
   3、抽象类和接口,都可以体现在多态中,作为变量数据类型接收子类实例对象。
    
    
   接口和抽象类的不同点
   1、接口里只能包含抽象方法,抽象类则可以包含普通方法和抽象方法。
   2、接口不能定义静态方法,抽象类可以(jdk1.8之后可以)。
   3、接口中的成员变量是静态常量,使用public static final修饰。抽象类则可以定义静态常量,也可以定义非静态成员变量。
   4、接口不能被创建为对象,不含构造器,抽象类可以被实例化为对象,抽象类具有构造器。抽象类是可以被实例化,子类对象创建的时候,创建抽象类父类对象。抽象类是可以有静态代码块,构造代码块,构造器方法,抽象类就既可以有实例成员、也可以有静态成员。
   
    垃圾回收机制:
    对象的生命周期
    从创建对象开始
    用:对对象应用,
    不可见, 
    不可达
    收集,收集要销毁对象
    对象不用的生命已经结束
    finalize:这个是创建对象的时候
    生命周期结束,会执行finalize
    销毁你创建对象,垃圾回收不能强制销毁
    重新分配空间
   
    创建一个日历对象
    Calendar c=Calendar.getInstance();
    setTime();参数是日期类型的 
    add();计算年月日的
    get();参数是年月日,返回值是int类型的
    
    
  
  
    
    
    
    
    
    
    
    
    
    

 
  
   
  
  
  
  
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TimBL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值