来到黑马十多天,学了Java的基础知识,这些天学了如下一些知识点: 第一天 数据类型: 数据类型又包括数据基础类型和数据引用类型 基础类型: 整形:byte short int long 布尔:boolean 浮点型: double float 字符型:char 引用类型:String字符串,数组,枚举等 第二天 把小范围数据转换给大范围数据 强制数据类型转换:显式的,可能会发生数据精度损失和数据损失 格式:数据类型 变量名 = (数据类型) 被转换数据值 注意事项: 1>byte short char 是可以相互相加的,会把数据类型先转化为int类型,然后再相加,得到的结果是int. 2 数据类型运算 1>两个数据类型不同的两个数据进行运算的时候,会先把数据类型转化为比较大的数据类型进行运算,得到结果的数据类型也是比较大的数据类型. 2>字符串的拼接,中间用+好连接就行. 3 自增和自减运算符 基本含义:让一个变量加1或者减1. 使用格式:写在变量名之后,或者之前,例如:i++,++i.单独使用时,这两种表示方法是一样的.混合的时候++i立刻加1,i++首先使用变量的值,然后变量加1. 4 逻辑关系 && 并且:全都是true 结果才是true || 或者:至少有一个是true,才是true ! 取反:本来是true,结果是false 短路: 如果左边的判定已经可以得到最终的结果,右边的代码将不再执行,节省性能. 单&和单|没有短路效果,对结果无影响. 5 三元运算符 格式:数据类型 变量名称 = 条件判断?表达式A:表达式B; 条件成立为true,将表达式A的值赋值给左侧的变量,不成立将表达式B的值赋值给左侧的变量 注意事项:表达式AB必须都符合左侧数据类型,三元运算符必须返回结果. 6 方法 定义格式 修饰符 返回值类型 方法名(参数列表){ 代码.... return ; } 注意事项: 1>方法定义的先后顺序无所谓 2>方法的内部不能嵌套方法 3>方法写好之后不会执行,一定要进行方法的调用才会执行. 第三天 1.if判断语句 以及拓展的if-else语句等 无特殊重点 2.switch选择语句 有可能用得到case的穿透效果 3.循环语句(重点掌握) 已知循环次数 --For循环; 未知循环次数 –while循环; 一定要执行一次 –do-while循环。 灵活使用break,打断循环; 以及终止当前循环,继续下一次循环continue。 第四天 方法的调用 方法定义的完整格式 修饰符 返回值类型 方法名称(参数类型 参数名称,...){ 方法体 return 返回值; } 返回值类型:方法最终产生的数据类型 参数类型:进入方法的数据是什么类型 参数名称:进入方法的数据类型对应的变量名称 ps:参数如果有多个,可以用","进行分割 return: 一停止当前方法 二将后面的值返回值还给方法的调用处 return后面的返回值,必须和方法名称前面的返回值类型,保持对应 三种调用格 一单独调用:方法名称(参数); 二打印调用:System.out.println(方法名称 (参数)); 三赋值调用:数据类型 变量名称 = 方法名称 (参数); 方法的重载(Overload) 方法的重载:多个方法的名称一样,但是参数列表不一样 好处:只需要记住为一个方法名称,就可以实现类似的多个功能. 第五天 右侧的new:代表数组的工作 右侧数据类型:必须和左边的数据类型保持一致 右侧中括号的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字 静态初始化 格式: 标准格式:数据类型[] 数组名称 = new数据类型[]{元素一,元素二...} 省略格式:数据类型[] 数组名称 = {元素一/,元素二..} 注意事项 1>静态初始化没有直接指定长度,但是仍然会自动推算得到长度 2>静态初始化标准格式可以拆分为两个步骤 3>动态也可以拆分为两个步骤 4.静态初始化一旦使用省略模式,就不能拆分为两个步骤 如果不确定数组中的具体内容,用动态初始化数组. 访问数组的格式:数组名称[索引值 索引只是一个int数字,代表数组当中元素的编号.索引值从0开始. 动态初始化时,其中的元素会自动拥有一个默认值. 整形 0:浮点型 0.0;字符型 '\u0000';布尔型 false;引用类型 null; java的内存划分为5个部分 1>栈(Stack):存放的都是方法中的局部变量.方法的运行一点更要在栈中运行 2>堆(Heap):凡是new出来的东西,都在堆当中 3>方法区(Method Area):存储.class相关信息,包括方法的信息 4>本地方法栈 5>寄存器 第六天 类和对象: 类 :是对一类事物的描述.(抽象) 属性:就是该事物的状态信息 行为:就是该事物能够做什么 对象:是对一类事物的实例.(具体) 类是对象的模板,对象是类的实体 创建对象的格式 类名称 对象名 = new 类名称(); 如何使用 使用成员变量:对象名.成员变量名 使用成员方法:对象名.方法名 成员变量和局部变量的区别 成员变量:在方法的外部,直接卸载类当中,整个类都可以通用如果没有赋值,有默认值 局部变量:在方法的内部,只有在方法中才能使用,没有默认值,如果想要使用,必须手动赋值 方法的参数 是 局部变量 面向对象: 面向对象三大特征:封装,继承,多态 封装性在Java当中的体现: 1>方法就是一种封装 2>关键字private也是一种封装. 封装就是把一些细节隐藏起来,对于外界不可见 构造方法:他是用于创建对象的同时就给成员变量赋值 当new对象的时候,构造方法会被调用. 当构造方法没有时,系统会送一个空参构造方法以供使用,当有构造方法时,系统不再"送"构造方法. 第七天 ArrayList: ArrayList集合的长度是可以变化的 对于Array List来说,有一个<E>待变泛型 泛型: 泛型只能是引用类型,不能是基本类型 对于ArrayList集合来说,,直接打印得到的不是地址值,而是内容. 如果内容为空,得到的是空的中括号 ArrayList内部有特殊处理,都已打印出来的是集合存储的数据内容 第八天 String字符串 =====特点: 字符串的内容永不可变的; 字符串是可以共享的(不可变特性) 字符串效果上相当于char[]字符数组,底层原理为byte[]字节数组 ====创建字符串的方式 public String();创建空白字符串 public String(char[]array)根据字符数组 public String(byte[]array)根据字节数组 String s = "sssss"; =====注意:直接写上双引号,就是字符串对象 有时候必须要用new的方式去创建字符串(需要做数据类型之间的转换) 字符串常量池::::: 程序当中直接写上的双引号字符串,在常量池中 new的不在常量池中 对于引用类型来说"=="是进行地址值的比较 ====有关String的方法 equals 比较字符串 当常量与变量进行比较时,常量放前边(变量为null时,常量写后面会造成空指针异常) equalsIgnoreCase 忽略大小写进行比较//只有英文大小写才可以忽略 public int Length();获取字符串长度 public String concat(String str);将当前字符串和参数字符串拼接成为返回值新的字符串 public char chatAt(int index):获取指定索引位置的单个字符 public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值 public String subString(int index)截取从参数位置一直到字符串末尾,返回新字符串. public String subString(int begin,int end)截取从begin开始,到end结束[begin,end)左闭右开 public char[]toCharArray();将当前字符串拆分为字符数组作为返回值 public byte[]getBytes();获得当前字符串底层的字节数组 public String raplace(Char====)//替换老字符串,产生新的字符串 toCharArray将字符串转化为字符数组 split(String regex)分割字符串".","+","\"等符号比较特殊 不能用 ====static关键字 一旦用了Static关键字,那么这样的内容不再属于自己 ,而是属于类 对于静态方法来说,可以通过对象进行调用,也开始已通过类名称来调用。(推荐些类名字.方法) ====静态不能直接访问非静态,只能访问静态 原因:内存中先有的静态内容,后又的费静态内容。 静态中不能使用this关键字。 =====静态代码块 特点:只执行一次,最先执行(在加载类的时候已经执行了) =====工具类 定义:类中所有的 内容(成员变量,成员方法)都是static,这样的类称之为工具类 Arrays:针对数组的一个工具类 Arrays.sort():对数组进行从小到大排序 Arrays.toString():返回一个字符串,内容是数组中所有书籍的拼接结果 ========Math方法 floor向下取整 ceil向上 abs取整 round四舍五入 这几天主要学习的就是以上这些内容,大致的总结了一下.
|