java入门笔记(—)

这篇博客详细介绍了Java的基础知识,包括类的定义、继承、数组和集合的使用,以及字符串对象的操作。同时,讨论了类型重载、方法调用、异常处理和逻辑运算符。还涉及了构造方法、泛型、ArrayList以及字符串的比较方法。文章强调了继承的优缺点,并讲解了包的管理和import导入。此外,还涵盖了类的创建、构造方法、权限修饰符以及访问父类构造方法的重要性。

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

java入门笔记(—)


/*
*   在一个类内部允许定义多个同名的方法,只要他们参数的个数或者参数的类型不同就可以,这叫做类型的重载

*   在调用的时候,虚拟机(jvm)通过参数的个数和类型来调用
    alt+insert 弹出构造方法 根据自己的需要选择
*   E 代表类型
*   | 代表或者
*   字符串是引用类型的 所以输出出来就是null
*   ctrl+v 自动生成返回值的类型
*   new出来的,无论内容相不相同,都是不一样的对象
*   直接赋值的方式,大小写和顺序只要相同,理论上就是一个对象
*   public boolean 变量名 obj1.equals(obj2)
*   == 比较的是字符串的内存地址
*   equals() 比较的是字符串的内容
*   整数与整数相除 不会得到小数,要想得到小数,需要浮点数参与计算
*
*
*   基本数据类型
*   数字  byte    一节      8位
*        short   两节      16位
*        int     四节      32位  数字默认为int
*        long    八节      64位  需要加修饰符 l
*   字符
*        char   二节       16位
*   布尔
*        boolean     1位
*   小数
*       double    八节   64位  默认是这个
*       float    四节    32位  需要加修饰符 f
*   强制类型转换
*       强制类型转换 不建议使用 会有数据的缺失
*       小类型 变量名 =(小类型)大类型常量;
*       注意:拓展的赋值运算符底层隐含了强制类型转换 += -=
*       ++ -- 单独使用 在前在后都一样 参与操作使用 ++在后 先赋值  后自增  ++在前 先自增 后赋值
*   隐式类型转换
*       小类型会被转为大类型 然后相加  这个加号式子的大类型  byte 和 int  都会转为 int
*       char,byte,short > int > long > float > double
*   逻辑运算符
*       & 有false则false  & 不管左边为true或者false 两边都会执行
*       | 有true则true    | 不管左边为true或者false 两边都会执行
*       ^ 两边相同为false  两边不同为true
*       !  取反
*       短路&& 与短路|| 与基本的&和|  作用相同但是有短路的效果
*       && 有false则false     && 如果做左边为真,右边执行
*       || 有true则true       || 如果左边为假  右边执行
*       &&和&
*		    &&如果做左边为false 右边不管为true或者false 都不会执行了 值为false 如果左边为true 那么就看右边的状态来决定最后的状态
*		    ||如果做左边为true 右边不管为true或者false 都不会执行了 值为true 如果做左边为false 那么就看右边为true或者false 来决定状态
*
*
*   普通数组的定义方法
*       动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
*           int[] arr1=new int[5]
*       数组初始化之静态初始化
*           int[] arr = new int[]{1, 2, 3};
*       简化格式  推荐方式
*           int[] arr1 = {1, 2, 3};
*           int[] arr = new int[3];
*         左边:
*               int说明数组中的元素类型是arr类型
*               []说明这是一个数组
*               arr 这是数组的名称
*
*           右边:
*               new 为数组申请内存空间
*               int 说明数组中的元素类型是int类型
*               [] 说明这是一个数组
*               3   数组的长度 其实就是数组中的元素个数
*       ArrayIndexOutOfBoundsException  访问了数组中不存在的索引对应的元素,造成索引越界的问题
*       NoPointerException 访问的数组已经不再指向堆内存的数据,造成空指针异常
*       null 空值,引用数据类型的默认值,表示不指向任何有效对象
*   二维数组:其实就是一个元素为一维数组的数组。
*      三种定义方式:
*           int[][] arr=new int[3][2];
*           定义了一个类型为int的数组,里边每一项都是一个数组,然后开辟内存空间,声明数组有3项,其中每一项都有两个数据
*           int[][] arr1=new int[3][];
*           arr1[1]=new int[2]; 这样等于改变了指针的指向,从空数组,指向了初始化的数组
*           定义了一个类型为int的数组,里边每一项都是一个数组,然后开辟内存空间,声明数组有3项,每一项都是数组
*           int[][] arr2={{12,2,3},{1,2,3},{1,2,3}};
*           定义了一个类型为int的数组,里边每一项都是一个数组,然后初始化并赋值
*   ArrayList<E>
*           ArrayList 是可调整数据大小的实现
*           <E> 是一种特殊的数据类型,泛型,在出现E的地方用引入数据类型替换即可
*       如果后边的尖括号内不写类型,会自动从前边的里边推断出来 JDK7之后的新特性
*           ArrayList<String> arr=new ArrayList<>();
*       add([index],E 数据) 将新数据添加到末尾 返回true或者false 是否成功
*       IndexOutOfBoundsException  集合的索引越界
*       remove(元素|index) 删除指定的元素,返回是否删除成功
*       set(index,元素) 修改指定索引处的元素 返回被修改的元素
*
*
*
*
*   字符串对象
*           构造方式
*	            String() 创建一个空白字符串对象,不含有任何内容
*                   String s1=new String()
*	            String( char[] 内容)根据字符数组的内容,来创建字符串对象
*                   char[] cha={'a','b','c'};
*	            String( byte[] 内容)根据字节数组的内容,来创建字符串对象,unicode值创建的,读取的是unicode值对应
*                    byte[] bye={97,98,99};
*               String str =“内容”直接赋值的方法创建对象  推荐这种方式
*
*           StringBuilder() 创建一个空白的字符串对象,不含有任何内容
*               StringBuilder sre=new StringBuilder();
*               StringBuilder(字符) 根据字符串内容,来创建可变的字符串对象
*               StringBuilder实例.append("a").append("b");添加数据,并返回对象本身  可以实现链式语法
*               reverse() 返回相反的字符序列
*               StringBuilder 转换为String  调用toString()方法就可以
*               String转String 调用StringBuilder的构造方法就可以  StringBuilder sbu1=new StringBuilder(字符串);
*   数组和集合的遍历
*        ArrayList arr2 = new ArrayList();
*        arr2.add(1);
*        arr2.add(2);
*        arr2.add(30);
*        for (Iterator num = arr2.iterator(); num.hasNext(); ) {
*            int str = (int) num.next();
*            System.out.println(str);
*        }
*        int[] arr = {1, 2, 3};
*        for (int b : arr
*        ) {
*            System.out.println(b);
*        }
*
*        for (Stdent stu : arrayList) {
*            System.out.println(stu.getName());
*        }
*
*
*
*
*
*   类的定义步骤
*       1.定义类   2.编写属性  3.编写方法
*   继承中子类的特点
*       子类既可以有自己的方法也可由父类的内容
*       当一个类里边没有无参构造方法,系统会自动给一个无参构造方法
*    标准类的制作
*     ① 成语变量
*           使用private 修饰
*     ② 构造方法
*           提供一个无参构造方法
*           提供一个带多个参数的构造方法
*     ③ 成员方法
*           提供每一个成员变量对用的setXXX()/getXXX()
*           提供一个现实对象信息的show()
*     ④创建对象并为对象成员赋值的两种方式
*           无参构造方法创建对象后使用setxxx()赋值
*           使用带参构造方法直接创建带有属性值的对象
*
*
*
*
*
*   继承的好处
*       提高了复用性(多个类相同的成员可以放到同一个类中)
*       提高了代码的维护性(如果方法的代码需要修改,修改一处就可)
*
*   继承的弊端
*       继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不变化,削弱了子类的独立性
*   什么时候使用继承
*       继承关系的体现 is a
*       假设法:我有两个类A和B,如果他们满足A是B的一种,或者B是A的一种,就说明他们存在继承关系,这个时候就可以考虑使用继承来实现,否则就不能滥用继承
*
*       苹果和水果 猫和动物 √
*       猫和狗 X
*   子类重写父类方法的时候 访问权限要等于父类或者高于父类
*   父类中的私有方法子类不可重写
*   类不可继承多个类
*   java中类只支持单继承,不支持多继承
*   java中类支持多层继承
*   子类所有的构造方法都会默认访问父类中无参的构造方法
*   为什么呢?
*       因为子类会继承父类中的数据,可能还会使用父类中的数据,所以,子类初始化之前,一定要先完成父类数据的初始化
*       每一个子类构造方法的第一条语句默认都是:super()  super() 代表父类的无参构造方法
*
*       如果父类中没有无参构造方法?只有带参构造方法,怎么办?
*           解决方法一:调用带参构造方法 super(参数)
*           解决方法二:在父类中给一个无参构造方法
*
*   包的概述和使用
*       其实就是文件夹
*       作用:对类进行分类管理
*   包的定义格式
*       格式:package 报名 多级包 . 分开
*   带包的java类执行
*       手动建包  然后把编译完成的文件放到包的里层 然后执行的时候带上包名 包1.包2.文件
*       自动建包  javac -d . 文件名 然后执行的时候带上包名 包1.包2.文件
*
*
*   import 导包
*       为了简化使用不同包下的类,使用的时候要写类的全路径,写起来太麻烦
*       为了简化带包的操作,java就提供了导包的功能
*       import 包名
*       import 包名.类名
*   修饰符分类
*       权限修饰符
*           public > 默认 > protected > private
*       状态修饰符
* */
还不是很完美,等着继续更新吧,喜欢就关注一下,点个赞,谢谢啦!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值