基本数据类型 数值型 整数(byte 1,short 2,int 4,long 8) 浮点数(float 4,double 8) 字符(char 2) 非数值型 布尔(boolean 1) 引用数据类型 类、接口、数组,它的值是指向内存空间的引用,就是地址。 基本类型与引用类型的区别 1.整型byte、short、int、long的默认值都为0,浮点型float、double的默认值为0.0,boolean默认值为false,char默认值为空。对应的包装类型默认值都为null。 2.基本数据类型的变量是存储在栈内存中,而引用类型变量存储在栈内存中,保存的是实际对象在堆内存中的地址,实际对象中保存着内容。 3.java从jdk1.5开始引入自动装箱和拆箱,使得基本数据类型与引用类型之间相互转换变得简单。 P17类型转换 自动类型转换:把一个表示范围小的数值或变量赋值给另一个表示范围大的变量 如:double d=10; byte->short ->int->long->float->double char 强制类型转换:把一个表示范围大的数值或变量赋值给另一个表示数据范围小的变量。 格式:目标数据类型 变量名=(目标数据类型)值或变量 如:int k=(int)88.88; //88,有数据精度的损失 参数传递 基本数据类型做参数传递:对于基本数据类型的参数,形式参数的改变,不影响实际参数的值。 引用数据类型做参数传递:对于引用类型的参数,形式参数的改变,形式参数的改变,会影响到实际参数的值。 方法重载 参数类型、或参数个数不同称为方法重载, 返回值不行,因为返回值不同不能决定调用多个方法中的哪一个。 类的重要性:是java程序的基本组成单位 类的组成:属性和行为 属性:类的成员变量 行为:类的成员方法 public class 类名{ // 成员变量 // 成员方法 } 封装 通过对象名直接访问成员变量的这种方式存在数据安全隐患(越界等问题,提供专门的访问方法,可以避免隐患).使用private关键字 private:保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。 private修饰的变量,如果需要被其他类使用,提供相应的 get变量名() 方法,public修饰 set变量名() 方法,public修饰 -------- 封装、继承、多态是面向对象三大特征 封装的原则 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法 封装的好处 通过方法来控制成员变量的操作,提高代码的安全性 把代码用方法进行封装,提高代码的复用性。 构造方法 public class 类名{ 修饰符 类名(参数){ } } -------- 标准类的制作 1.成员变量 使用private修饰 2.构造方法 提供一个无参构造方法 提供一个带多个参数的构造方法 3.成员方法 提供每一个成员变量对应的setXxx()/getXxx() 提供一个现实对象信息的show() 4.创建对象并为其成员赋值的两种方式 无参构造方法创建对象后使用setXxx()赋值 使用带参构造方法直接创建带有属性值的对象 -------- ctrl+alt+l 代码格式化 如果方法有明确的返回值,需要用变量接收时,可以手动完成也可以快捷键完成(ctrl+alt+v) 字符串 java程序中所有的双引号字符串,都是String类的对象 字符串特点: 1.字符串不可变,他们的值在创建后不能被更改 2.虽然String的值不可改变,但是它们可以被共享 3.字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[]) jdk8及之前是字符数组,jdk9开始是字节数组 String构造方法 public String() 创建一个空白字符串对象 public String(char[] chs) 根据字符数组的内容,创建字符串对象 public String(byte[] bys) 根据字节数组的内容,创建字符串对象 String s="abc"; 直接赋值的方式创建字符串对象 String对象的特点: 1.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同 2.以""方式给出的字符串,只要字符串序列相同(顺序和大小写),无论出现几次,JVM都只会建立一个String对象,并在字符串池中维护 -------- 字符串的比较 使用==做比较: 基本类型:比较的是数据值是否相同 引用类型:比较的是地址值是否相同 字符串是对象,比较内容是否相同,是通过一个方法实现的,这个方法叫做:equals() public boolean equals(Object anObject) 将此字符串与指定对象进行比较 StringBuilder概述 String s="hello"; s += "world"; sout(s); 以上操作完成后,s会指向一个在堆内存的常量池内新生成的"helloworld"字符串对象,不再指向原先的字符串"hello" -------- 问题:对字符串进行拼接操作,每次都会构建一个新的String对象,既耗时又浪费空间,而这种操作是不可避免的,如何解决这种问题? Java提供了StringBuilder类来解决这个问题。 StringBuilder是一个内容可变的字符串类,可以被看做是一个容器。 -------- String、StringBuilder的区别 1.String内容是不可变的 2.StringBuilder内容是可变的 -------- StringBuilder构造方法 public StringBuilder() 创建一个空白可变的字符串对象 public StringBuilder(String str) 根据字符串内容,创建一个可变的字符串对象 -------- StringBuilder的添加和反转方法 public StringBuilder append(任意类型) 添加数据,并返回对象本身 public StringBuilder reverse() 返回相反的字符串序列 -------- StringBuilder和String相互转换 StringBuilder转换为String:通过toString()方法可以实现StringBuilder转换为String String转换为StringBuilder:通过构造方法StringBuilder(String s)可以实现把String转换为StringBuilder 集合基础 集合类的特点:存储空间可变的存储模型,存储的数据容量可以发生改变 集合类有很多,先接触一个ArrayList ArrayList<E> 基于动态数组实现的,类似于vector 可调整大小的数组实现 <E>是一种特殊的数据类型,泛型 举例:ArrayList<String>、ArrayList<Student> -------- ArrayList构造方法和添加方法 public ArrayList() 创建一个空的集合对象 public boolean add(E e) 将指定元素添加到集合的末尾 public void add(int index,E e) 在集合中指定位置插入指定元素 Arraylist<string> array=new ArrayList<>(); -------- ArrayList集合常用方法 public boolean remove(Object o) 删除指定元素 public E remove(int index) 删除指定位置的元素,返回被删除的元素 public E set(int index,E element) 修改指定位置的元素,返回被修改的元素 public E get(int index) 获取指定位置的元素 public int size() 返回集合大小 -------- ArrayList集合中元素可以重复? 是的,可以包含重复元素 -------- 遍历集合的通用格式 for(int i=0;i<集合对象.size();i++){ 集合对象.get(i) 就是指定索引处的元素 } --------