学习总结,每个人都有自己的学习方法,就像遇见一个事物,每个人都有自己不同的见解.所以交流变成了社会进步的阶梯,只有与更多的人交流才能够更有效的提高自己!下面我分享一下关于这半个多月以来自己所学到的java的一些总结: 总结个人感觉还是写一些我自己认为比较重要的知识吧.首先,对于java要有了解,知道java是什么,能够干什么.并且了解java的发展史.这部分虽然老师说只需要了解,但我觉得还是很重要的.接着便是java语言的特点:简单性、解释性、高性能、开源、跨平台等,最重要的就是面向对象和跨平台.什么是跨平台:Java程序想要在不同系统平台上(windows,linux,mac)运行,需要配置不同系统平台的Java虚拟机(JVM);如何实现跨平台:不同系统平台配备不同的JVM.JVM,JRE,JDK三者的关系 JVM:翻译官 JRE:Java运行时环境(JVM + 类库) JDK:开发工具(包含JRE) 总结:我们利用JDK编写代码,最终交给JRE去运行 然后学会了安装和使用JDK,并且如何让JDK在任何位置都能运行的方法:配置环境变量.配置了path环境变量之后有什么好处? a 这样我们就可以在任意盘符,任意文件去使用javac,java; b这样的应用程序意味着我们可以在任意盘符,任意文件中去编写我们的代码. 随后便开始进入java语言学习内容.编译过程的注释分为: a. 单行注释: //注释内容 b. 多行注释: /*注释内容 注释内容 注释内容*/ c.文档注释: /**.......*/ 这些注释的作用是:只用于我们解释说明程序和调试所用. 然后便是java里的关键字与标识符的命名规则: a包相当于文件夹,一般是公司域名倒着写,例如:com.itheima b类或者接口 如果是一个单词,首字母大写 如果是多个单词,每个单词的首字母都大写 c方法或者变量 如果是一个单词,全部字母小写 如果是多个单词,从第二个单词开始首字母大写 d常量 如果是一个单词,全部字母大写 如果是多个单词,每个单词之间用_分开 变量和常量,其中变量的定义格式以及使用时的注意事项: a:作用域问题 同一个区域不能使用相同的变量名(我们目前的同一个区域指的就是main方法) b:初始化值问题 局部变量在使用之前必须赋值 c:一条语句可以定义几个变量 int a,b,c...; 数据类型和数据类型的转换 数据类型四类八种,其中各自的取值范围要牢记. 数据类型的转换: 隐式转换:小的数据类型与大的数据类型运算的时候,小的数据类型会自动提升为大的数据类型. 强制转换:当大的数据类型转换为小的数据类型时,可能会损失精度,所以不建议使用强制转换.如果一定要使用的话就在数据前面增加强制转换符. 运算符: a 算术运算符:+, -, *, /, %.注意其中的 +和% + :1 加法操作; 2 正号; 3 字符串的连接符:任何数据类型与字符串相连接都会变成一个字符串. % :1 当左边的绝对值小于右边绝对值时,结果是左边; 2 当左边的绝对值等于右边或是右边的倍数时,结果是0 3 当左边的绝对值大于右边绝对值时,结果是余数;4 %运算符结果的符号只和左边相等,与右边无关. b 赋值运算符 = ,+= ,-= ,*= ,/= ,%= .后面5个把运算符左边和右边的数据进行运算,再赋值给左边. c 关系运算符(也叫比较运算符,也叫条件运算符) ==,!=,>,>=,<,<= 注意事项: 1.无论你操作的数据是简单还是复杂,最终得到的结果都是boolean类型 2."==" 不能写成"=" d 逻辑运算符 1.基本的:&,逻辑与,有false则false |,逻辑或,有true则true ^,逻辑异或,相同为false,不同为true !,逻辑非,非false则true,非true则false 2.特殊的:&&,短路与,左边为false,右边不执行,最终结果与&相同 ||,短路或,左边为true,右边不执行,最终结构与|相同 流程控制语句:可以控制程序的执行流程,包括顺序结构,选择结构,循环结构.其中选择结构的语句的两种if和switch以及两种的不同格式写法,执行流程,注意switch语句中的case穿透问题.循环的三种循环方式和格式,可以试一下3种格式的相互转换以增强记忆. 三种循环结构的区别 a.for循环和while循环必须先判断条件是否成立,条件成立才会执行循环体 b.do...while循环至少执行一次循环体 c.for循环与while循环的区别: 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环 否则,用for循环,不知道使用哪个循环就使用for循环,因为变量及早的从内存中释放,提高了内存的使用效率 3).死循环 两种最简单的死循环格式: while(true) { } System.out.println("------------------"); for (; ; ) { } 控制跳转语句 1.break语句 应用场景:switch,循环,跳出循环 2.continue语句 应用场景:循环,终止本次循环,继续下次循环 3.return语句 应用场景:结束方法 方法: 格式 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2) { 方法体语句; return 返回值; 作用:提高代码的复用性 如何定义一个方法:明确返回值类型和参数列表 方法的调用: a.单独调用,但是对于有返回值的方法,单独调用没有意义. b.输出调用,不能用于返回值为void的方法. c.赋值调用(推荐),不能用于返回值为void的方法. 方法的注意事项: 1).方法不调用不执行 2).方法与方法是平级关系,不能嵌套定义 3).方法中定义的参数之间用逗号隔开 4).调用方法的时候不用传递数据类型 5).如果方法有明确的返回值,一定要用return带回一个值 方法重载 在同一个类中,方法名相同,参数列表不同,与返回值类型无关. 数组 a.数组是用来存储同一数据类型的多个值的集合,可以将数组看成是一个容器 b.数组既可以存储基本数据类型,也可以存储引用数据类型 数组的定义格式: 数据类型[] 数组名 = new 数据类型[数组长度]; 如: 存储基本数据类型: int[] studnetAges = new int[100]; 存储引用数据类型: String[] studentNames = new String[100]; 动态初始化 1).什么是初始化? 就是为数组开辟连续的内存空间,并为每个数组元素赋值 2).什么是动态初始化? 只给定数组长度,由系统给出每个元素的初始化值 3).动态初始化格式: 数据类型[] 数组名 = new 数据类型[数组长度]; 4).不同数据类型使用动态初始化会有不同的默认值: 整数类型:byte,short,int,long默认初始化值都是0 浮点类型:float,double默认初始化值都是0.0 布尔类型:boolean默认初始化值false 字符类型:char默认初始化值'\u0000 内存分配 a.栈内存:存储局部变量 b.堆内存:存储new出来的数组/对象 c.方法区:面向对象部分讲解 d.本地方法区:和系统相关 e.寄存器:给CPU使用 静态初始化 1).什么是静态初始化? 在定义数组的时候,直接为每个数组元素赋值 2).静态初始化格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...} 简化格式: 数据类型[] 数组名 = {元素1,元素2,...}; 数组操作的两个常见小问题 a.数组索引越界异常(ArrayIndexOutOfBoundsException) 产生原因:访问了不存在的索引 b.空指针异常(NullPointerException) 产生原因:数组已经不指向堆内存了,你还用数组名去访问元素 数组的操作 a.遍历:拿到数组中的每一个元素 数组的长度:arr.length 数组的最大索引:arr.length - 1 b.获取最值 c.反转 面向对象 面向对象思想特点: 1).将我们从执行者变成了指挥者 2).将复杂的事情简单化 面向对象特征: 1).封装 2).继承 3).多态 类与对象 1).如何描述现实世界事物 属性 该事物的描述信息(名词) 行为 该事物能够做什么(动词) 如:我们如何描述人? 属性:身高,年龄,性别 行为:学习,玩耍 2).如何在代码中描述现实世界事物 成员变量:就是属性,和以前定义变量是一样的,只不过位置发生了变化,在类中方法外 成员方法:就是行为,和以前定义方法是一样的,只不过没有static关键字 成员变量和局部变量的区别 1).定义的位置不同: * 成员变量:在类中方法外 * 局部变量:在方法中 2).在内存中的位置不同: * 成员变量:属于对象,对象在堆内存 * 局部变量:属于方法,方法在栈内存 3).生命周期不同 * 成员变量:成员变量随着对象的创建而创建,随着对象的消失而消失 * 局部变量:局部变量随着方法的调用而存在,随着方法的弹栈而消失 4).初始化值不同 * 成员变量:有默认初始化值 * 局部变量:没有默认初始化值,在使用之前必须赋值 匿名对象 1).什么是匿名对象 没有名字的对象 2).应用场景 a:调用方法,仅仅只调用一次的时候 注意:调用多次的时候,不适合,匿名对象调用完毕就是垃圾,可以被垃圾回收器回收 b:匿名对象可以作为实际参数传递. 封装(重点!!!) 1.什么是封装 隐藏对象的属性和实现细节,仅对外提供公共的访问方式(如插板) 2.封装的好处 1).提高了安全性 2).提高了代码的复用性 关键字介绍 a.private 关键字 * 是一个权限修饰符 * 可以修饰成员变量,成员方法 * 其修饰的成员只能在本类中访问 注意:私有只是封装的一种体现形式,不能说封装就是私有 b.this 关键字 * 代表当前对象的引用 * 应用场景:区分成员变量和局部变量 构造方法(重点!!!) 1.概述 * 给对象的属性进行初始化 * 构造方法特点: 1).方法名与类名相同(大小写一致) 2).没有返回值类型,连void都没有 2.构造方法的重载 回忆:方法重载:方法名相同,参数列表不同,与返回值类型无关 构造方法注意事项: 1).如果我们没有给出构造方法,系统默认会提供一个无参构造方法 2).如果我们已经给出构造方法,系统将不会提供无参构造方法,这个时候如果需要无参构造方法,需要手动给出,建议永远手动给出 3.给成员变量赋值的两种方式的区别 1).setXxx()方法:修改属性值 2).构造方法:给对象中的属性进行初始化 最后希望大家都能拥有一个自己想要的未来
|