黑马程序员技术交流社区
标题: 初学Java基础的经历小结 [打印本页]
作者: 杨猛 时间: 2018-3-24 23:55
标题: 初学Java基础的经历小结
学习总结,每个人都有自己的学习方法,就像遇见一个事物,每个人都有自己不同的见解.所以交流变成了社会进步的阶梯,只有与更多的人交流才能够更有效的提高自己!下面我分享一下关于这半个多月以来自己所学到的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).构造方法:给对象中的属性进行初始化
最后希望大家都能拥有一个自己想要的未来
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |