java基础学习总结.docx
- 文档编号:1164007
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:26.95KB
java基础学习总结.docx
《java基础学习总结.docx》由会员分享,可在线阅读,更多相关《java基础学习总结.docx(16页珍藏版)》请在冰点文库上搜索。
java基础学习总结
java基础学习总结
【篇一:
第一阶段java基础学习总结】
java基础学习总结
第一阶段任务:
搭建环境,学习myeclipse的使用,java基础语法的掌握。
从10月28日到公司,在技术总监为我安排明确每一阶段的学习任务后,我就进入相关知识的补充,现在将第一阶段的学习情况做一个总结汇报。
之前接触java较少,只是简单了解过,这几天主要对java的语法知识进行了相关的学习,在学习中相对来说,由于之前系统的学习过c++面向对象语言,因此学习起来并不觉得有多大困难,学习也是采用二者的不同点来进行参考学习,并且对于java的特殊地方予以特别的注意。
并且对于每一个知识点,都尝试写有实验代码,通过补充理论知识与实际动手,希望能够快速的将其基本掌握。
现在总结一些自己总结的知识点。
java与c++不同点:
(1)、java属于解释型语言,但是它还是需要编译,但它并不是将源代码编译成二进制代码,而是编译为字节码,然后解释执行字节码,因此具有很好的跨平台性。
这与c++的编译型(编译成二进制代码)语言是不同的。
(2)、在java中不区别定义与声明,c++中需要使用extern来声明一个已经定义过的变量。
并且在java中如果变量没有初始化,就直接使用的话,程序在编译时就会报错,而c++中只会在执行时给出一个随机值。
(3)、在java中const成为保留关键字,并不使用它,在定义一个常量的时候,java中使用final。
而c++中可以使用const、#define、enum来定义常量。
final修饰的表示只能够被赋值一次,赋值后便不可更改。
(4)、在java中goto也被作为保留关键字,当需要跳出循环时,可以使用break、continue都可以用来带标签,而跳出当前循环体。
而在c++中break与continue不具备此功能。
(5)、在java中不能在嵌套的两个块中声明名字相同的变量与常量,而在c++中不存在此限制,c++中会依据不同的块,给予变量不同的作用范围与生命周期。
(6)、java中没有运算符重载的功能,但是我们在使用“+”来连接字符串的时候,这确实又体现了运算符的重载,可并不能因此就说它具有运算符重载的功能。
而运算符重载是c++的一大特点与难点。
(7)、java与c++的内联机制不同,c++中使用inline关键字来声明内联函数,而java是否内联,是交由虚拟机来决定的。
(8)、java中,一个构造器可调用另外一个构造器,使用this(...)与super(...)c++中是不能够这样的。
并且java的垃圾回收是由java虚拟机来进行操作,因此它没有析构器。
这与c++需要手动回收资源也是不同的。
(9)、java与c++的继承也是有些不同,最大的区别是java不支持多继承,只能够单继承。
java中继承使用的关键字是extends代替了c++中的“:
”,并且java中的所有继承都是public的,而c++可以设置多种权限的继承。
(10)、java中一个类只能继承一个父类,但是可以实现多个接口,它提供了接口的概念,而c++中没有此概念,c++中使用纯虚基类实现了接口的功能。
但是二者是有很大差别的。
(11)、java中的数组与c++的数组也是不尽相同的。
在java中比如定义一个数组int[]a;首先是在栈区分配了一段空间,名字为a,当再次使用a=newint[10];的时候,
它会在堆区分配10个位置,名字分别是a[0]、a[1]...这与c++中是有很大差别的,c++中一维数组分配的位置都在栈区,并且可以通过a++这种方式来遍历数组,它定义数组也不需要new,可以直接给出数组的大小。
(12)、在参数传递方面,二者也略有不同,java中都是值传递,而c++中有值传递与引用传递(指针传递实质上也是值传递,只不过传的是地址)。
由于java中都是值传递,它具备以下几个特点:
①一个方法不能修改一个基本数据类型的参数(即数值型与布尔型);②一个方法可以改变一个对象参数的状态,③一个方法不能让对象参数引用一个新的对象。
java的特性:
(1)、java具有两大类的数据类型,分别是:
8种基本数据类型,对象引用数据类型。
其中java将布尔类型,原来在c++中false就是0,true就是1。
java中直接定义为false与true。
(2)、java中string的字符串为不可变字符串,stringbuffer为可变字符串,也就是string的值一旦被创建它就不可被修改。
因为这个类前面使用了final来修饰。
(3)、在一个java源文件中,只能有一个公有类(public),但可以有任意数目的非公有类。
如果在其中此时再定义接口,接口的属性也只能是默认,不能是public。
(4)、在类中的静态方法,没有this指针,因为它是属于一个类的,而不是某个对象。
在静态方法中不能直接访问非静态变量(可通过调用方法来访问变量),但是可以直接访问本类中的静态变量。
非静态方法可以直接访问静态变量。
(5)、java中的super与this的区别:
super不是一个对象的引用,不能将super赋给另外一个对象的变量,它只是一个指示编译器调用父类方法的特有关键字。
而this是一个对象的引用,它指向它自身,同一个类不同对象拥有不同的this。
(6)、关于final的几个重点:
final定义的类,不能够被继承。
如果在某个类中(非final类)某个方法使用了final来修饰,那么在子类中不能使用重写这个方法。
final类中所有方法自动地成为final方法,但是其中的变量并不是final的。
(7)、在java中有一个关键字,instanceof来判断一个类b是否属于类a的子类,常常用于在类型转换时,进行检查类的匹配问题。
(8)、不能构造接口对象,但是可以声明接口变量;不能构造抽象类对象,但是可以声明抽象类变量。
(9)、接口的修饰符只能为默认的default或者public,它其中的所有方法都是抽象的,被自动设为public,变量自动设为publicstaticfinal。
(10)、java中抽象类与接口的差别:
①抽象类用class来修饰,接口用interface来修饰,抽象类可以继承,接口也可以继承;②一个类可以实现多个接口,但是只能继承一个抽象类;③抽象类可以有非抽象的方法,继承它的子类可以对这些方法重写;但是接口中的方法全部为抽象方法,实现这个接口的类,必须全部用重写接口中的方法;④在抽象类中定义的方法,他们的修饰符可有这些选择:
publicprotecteddefaultprivate。
而接口中的方法全部是public的;⑤抽象类可以有构造函数,而接口没有构造器。
(11)、java
异常处理用try{}catch{}来扑捉,一般在catch末尾finally来释放掉一些稀有资源,不管释放扑捉到异常,finally中的语句一定会被执行的。
一般来说,对于异常也可不出,某个方法有异常,在调用它的方法中继续用thows继续抛出异常,让上一级处理。
一般规定除runtimeexception以外其他的异常,在程序中出现时,都必须处理。
以上内容,是我这几天学习整理所得,由于初学,有些地方不准确、不严谨,希望刘老师给予指正与指导。
很多更深入的java知识,需要在实践中得到不断的补充,在后面实际工作中,希望得到刘老师刘总监帮助。
何磊
2013年10月31日
【篇二:
java基础部分学习心得】
一.java
数据结构,链表~
一.java简介
java核心机制:
java虚拟机(实现了一处编程,到处运行),因为其运行过程是先编译成.class字节码文件,然后在jvm(javavirtualmachines)运行,不同的操作系统有不同的虚拟机,所以实现了一处编程,到处运行。
垃圾收集机制(:
帮助解决了一些健壮性的问题,不像c/c++那样内存管理那样麻烦),在编程过程中,会创建许多对象,存储在堆空间里,占用内存,但是java的垃圾回收机制,会不定时的自动回收在堆空间里没有任何引用指向的对象,所以在编程时应习惯性及时将不用的引用设置为null。
可以通过system.gc();来快速执行垃圾回收机制。
j2sdk(jdk):
javadevleopmentkit软件开发包,,开发需要jdk(包含jre,编译运行开发工具)。
jre:
javaruntimeenvironment运行环境,,用户只需要jre(包含系统类库和jvm)。
软件格式:
每一个类都对应一个class文件
如果一个源文件文件中包含public类,则该文件名必须以该类命名,每个源文件中最多有一个public类
java的执行入口是main()方法,固定格式:
publicstaticvoidmain(string[]args){…}数组名字可以改变。
区分大写小~
二.java语言基础
变量取名:
标识符选取取名:
一定要注意“见名知意”,,但不能和java语言的关键字重合‘字符常量’“字符串常量”
变量使用:
先声明,再赋值,才可以使用变量
基本类型:
4类8种;
boolean类型:
逻辑运算,用于程序流程控制,只能取true,false
char类型:
字符类型eg:
charechar=’中’,unicode编码(每个字符对应有一个编码)每个字符占两个字节,无论中午,英语,数字,每个字符都是占两个字节。
整数类型:
byte占一个字节-128-127
short2个字节
int4个字节对应包装类integer
long8个字节
浮点类型flaot4个字节
double8个字节对应包装类double
格式很重要
1.大括号对齐
2.遇到{用taborshift+tab
3.程序块之间加空行
4.运算符两侧加空格
有特定的条件
5.并排语句之间加空格
6.{前面有空格
7.成对编程
异或^相异为true
逻辑和逻辑|无论结果如何,后面的表达式一定会计算
短路和短路||第一个表达式已经可以得到结果了,后面的不算了
分支循环语句
if语句
if
elseif
elseif
elseif
else当只有一句语句要执行的时候,可以省略大括号{}~但是目前无论是否可以省略,都写上
循环语句
for循环,for(表达式1;表达式2;表达式3){语句;...;}
while循环while(逻辑表达式){语句;...;}
dowhile循环do(语句;...;)while(逻辑表达式);注意,,dowhile循环while(逻辑表达式);的分号
if语句后面注意不要加分号,不容易被查错~
continue语句,用在循环中,终止当前循环中下面的语句,到下一次循环
switch(){
casexx:
语句;
casexx:
语句;
default:
语句;
}
这里注意case和break的搭配使用,如果没有break,则程序会一直向下执行。
方法public(static)返回值类型方法名称(形式参数;...){方法体;java语句;return返回值}当出现return时,立即返回。
无返回值时,类型为void
static是静态方法,直接使用类名调用,非静态方法,需要使用对象调用。
方法只有当调用的时候,才会执行,方法中涉及的局部变量,在方法被调用时,出现在栈空间,一旦方法结束,所占用内存消失。
...{
method(实参;...)//调用
}
(面试)递归~~
三.面向对象
面向对象编程:
运用人类正常思维方式构造系统,常使用的原则和思想方法:
抽象,继承,分类,聚合,多态
1.使用人类自然语言,描述这个业务的需求
2.根据业务需求寻找涉及的事物类---对象
3.数据模型设计:
利用数据描述对象,以及对象之间的关系,将对象数据化。
4.概要设计
类的设计(概要设计):
定义类的属性
数据如何初始化:
构造器,工厂方法。
详细设计
5.利用分析数据
6.根据数据设计算法实现功能
7.逐一实现算法
8.实现用户响应
9.界面状态管理
用面向对象考虑问题时,不应该考虑第一步,第二部要做什么,1.首先考虑的是,这个问题涉及哪些类和对象,2.考虑这些类和对象,每一种应该具有哪些行为和属性3.每类和类之间具备了什么关系。
类是一类事物的一个抽象
对象这个类具体的一个实例
类和对象多为关系:
关联关系
继承关系:
一般和特殊的关系,eg:
游泳运动员是运动员的一种,足球运动员是球类运动员的一种。
聚合关系:
整体和部分的关系,eg:
队长和队员是球队的一部分,是聚集关系,头和手是身体的一部分,是组合关系。
实现关系:
多态:
成员变量可以不初始化,java默认会初始化
对象的创建和使用:
使用new关键词来创建对象
对象.成员变量来调用对象的成员变量(引用)
对象.方法来调用对象的方法(引用)
同一类的每个对象有不用的存储空间
同一类的每个对象共享该类的方法
构造方法:
构造方法的名字和类名要完全一样,和new一起使用来创建新对象,对对象进行初始化的。
在类中用来初始化对象的一个方法(函数)
eg:
publicclassperson{//创建一个person类
intid;
intage=20;//定义成员变量
person(int_id,int_age){//定义一个构造方法,方法名必须与类名完全一样
id=_id;
age=_age;
}
publicstaticvoidmain(string[]args){
persontom=newperson(1,20);//创建一个对象tom,利用构造方法进行了初始化
}
没有指定构造方法时,编译器自动指定一个空的,一旦自己定义了,编译器就不定义了,构造方法前面没有返回值
类名首字母大写,方法名变量名小写,后面的每一个单词的首字母都要大写方法一旦执行完毕,为这个方法所分配的局部变量的存储空间将消失
方法重载,构造方法的重载:
方法名相同,类型相同,但是参数变量类型不同的,可以构成重载,构成多个方法,调用时会根据不同的参数选择相应的方法
构造方法与普通方法一样,可以进行重载
关键字:
this
在那个对象,this就指向那个对象,指向对象本身自己的引用
static:
在类中用static声明的成员变量是静态成员变量,分布在dataseg内存空间里,在第一次使用时被初始化并且只有一份,整个类的所有对象都可以使用,可以用类名.静态成员变量,来直接调用。
用static声明的方法叫静态方法,动态方法通过某一个对象来调用,静态方法没有对象照样可以使用,eg:
类名.静态方法,来调用,不用写对象名字,所以在static方法里不能访问非static的成员
static里不会隐式传递this关键字,即调用不了对象属性
所以当一个方法只和参数相关,则使用static方法,如果和成员变量相关,则不使用。
静态的方法不针对某个对象调用,非静态成员专属于某个对象,所以静态方法,不能访问,
可以通过对象引用,或者类名来访问静态成员
static块:
在类加载期间就被执行的语句块,软件运行时,会先在jvm上加载类,则static块可以用来加载许多初始化资源。
包:
package和import、
【篇三:
java入门基础知识总结学习教程大全【必看经典】】
第一讲java语言入门
一有一种学习叫无论你身处何地,都可以来看java现场直播
其实别看我说的头头是道的,其实在我刚准备学java的时候,也老迷茫了,当然有时候迷茫是因为才华配不上梦想,身边的朋友总是叨叨那谁谁做java工资多么多么的高,整的我心里痒痒的羡慕妒忌恨,所以就找了很多学习java的机构,后来在我们济南这边选择了一家学习,学了半年,就学了一些不着调的基础知识,勉强的能编点小程序,其实啥实战能力也没有,老师教学的时候他自己讲的都云里雾里的,让我们这小新入行的小白更是摸不着头脑了。
我一看,这样下去,我的java梦也就蔫吧了。
后来我一哥们在网上给我说了一个地方让我去学习,他们那里每天晚上都有公开课,老师现场讲的,于是我就抱着玩的态度,去听了几天他们的公开课,听的我是豁然开朗,老师讲的是通俗易懂,把抽象的java,讲解的形象生动,我就觉得和讲故事似的,这才是我想要的课程,从那时候开始,我就每天晚上去学习,如果各位小伙伴也想去学习的话,你们可以加一下他们这个群就可以去学习了,前面的第一组数字是:
一四三,中间的第二组数字是:
五一零,结束的一组数字是:
一六八。
按照顺序组合就可以了,反正我通过自己的经历发现一个道理,选择不对,努力白费。
1.1java的特点
1.1.1面向对象:
?
与c++相比,java是纯的面向对象的语言
c++为了向下兼容c,保留了很多c里面的特性,而c,众所周知是面向过程的语言,这就使c++成为一个混血儿。
而java语法中取消了c++里为兼容c所保留的特性,如取消了头文件、指针算法、结构、单元等。
1.1.2可移植(平台无关性):
?
生成中间字节码指令
与其他编程语言不同,java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。
任何操作系统,只要装有java虚拟机(jvm),就可以解释并执行这个中间字节码文件。
这正是java实现可移植的机制。
?
原始数据类型存储方法固定,避开移植时的问题
java的原始数据类型的大小是固定的。
比如,在任何机器上,整型都是32位,而c++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像sunsparc这样的32位处理器中,整数用4个字节表示。
在intelpentium处理器上,整数类型由具体的操作系统决定:
对于dos和win32来说,整数是2个字节;对于windows9x、nt和2000,整数是4个字节。
当然,使
整数类型平台无关之后,性能必然有所下降,但就java来说,这个代价是值得的。
java的字符串,则采用标准的unicode格式保存。
可以说,没有这个特性,java的可移植性也不可能实现。
1.1.3简单
?
java在语法上与c++类似
java的语法与c++很接近,有过c或者c++编程经验的程序员很容易就可以学会java语法;
?
取消了c++的一些复杂而低效的特性比如:
用接口技术代替了c++的多重继承。
c++中,一个
类允许有多个超类,这个特性叫做多重继承,多重继承使得编译器非常复杂且效率不高;java的类只允许有一个超类,而用接口(interface)技术实现与c++的多继承相类似的功能其它被取消的特性包括:
虚拟基础类、运算符过载等
?
java的基本解释器和类支持模块大概仅40k
即使加入基本的标准库和支持线程的模块,也才220k左右。
与gui(图形用户界面)相比,明显小很多
1.1.4健壮
?
取消了指针算法
c的最关键的一个特性是它的强大指针算法,比如可以用指针访问字符串、数组甚至文件,很容易产生指针溢出,意外地改写内存和损毁数据。
java里有一个指针模型,对于普通的任务,如访问字符串、数组,根本不用指针,而一旦需要,比如访问对象、文件时,也可以获得指针的强大能力,但java同时有高度的指针安全保障,用户永远不可能访问一个坏掉的指针、不可能造成内存分配错误,也用不着专门提防可能出现的内存漏洞。
1.1.5多线程
?
强大的多线程能力
多线程可以使程序有更好的交互性和实时性,并可以最大限度地利用多处理器系统。
java有着强大的多线程处理能力,因为各主流操作系统平台在线程的实施方面有重大的差异,所以java为不同的操作系统实现了专门的多线程机制。
在这点上来说,java没有做到平台无关。
1.2java简史
?
首次亮相--1995年5月
java技术起先是作为小型的计算机语言,用于消费类设备,比如有线电视交换盒等。
因为这些设备的功能和内存均不足以运行大程序,所以程序要尽可能小;另外,由于不同的厂商可能选用不同的cpu,所以要求这种语言不能受限于任何一种独立的体系结构。
1995年5月23日召开的sunworld95
大会上,一种全新的浏览器(今天的hotjava的前身)亮相,标志着java的诞生。
?
开始流行--1996年1月
那时网景公司决定在netscape2.0加入对java的支持,netscape2.0在1996年1月发布,从这一版本开始,所有netscape浏览器均支持java。
注册了java使用许可证的还有ibm、symantec、inprise和其他许多公司。
就连微软,也加入了这一行列(尽管他们支持的java和标准的java稍有不同)。
?
sun的第一个java版本--1996年初
sun公司于1996年初发布了java1.02,遗憾的是,java1.02还未摆脱其小型语言的影子,只适合用来做诸如网页上一个随机移动的文字之类的工作,并不适合用来做正规的程序开发。
java1.02作为一种正规的编程语言,可以说,准备得很不充分。
?
成熟--1998年
1998年12月,java1.2问世了。
它是一个功能全面的、具有高度扩展能力的新版本。
3天后,java1.2被改进成java2,向一次编写,到处运行的目标前进了一大步。
?
现状
现在最新的java版本是jdk1.4,它是一个测试版,稳定的正式版是jdk1.3。
用户可以到
1.3jdk的安装与编程环境的设定
1.3.1java程序的开发过程
经典的java工具包是jdk。
尽管可以用任何文本编辑器,如记事本,都可以直接编写java程序然后用jdk的命令编译和运行,为了调试方便,也为了初学者容易上手,本教程课件将使用一个叫jpadpro的java编写工具来调用jdk的工具。
用户可以到下载这个工具。
1.3.2jdk的安装
1.3.3安装运行之后,应该首先设置jdk工具包所在的路径。
菜单栏的jdk-〉selectjdkdirectory-〉选择刚才安装的jdk路径-〉ok。
1.3.4新建一个project
菜单栏的file-newprojects-选择路径,输入project的名字。
1.4两个简单的程序示例
1.4.1java应用程序:
hello.java
?
编写
新建一个.java文件。
file-〉new-〉javafile-〉输入一个名字:
hello-〉点creatfile.出现了一个空的java文件。
?
编译
jdk-〉compilehello.java或者点击如演示所示的按钮。
实际上是执行jdk工具包里的javac.exe命令,与javacg:
java2jiaochengexampleeach1hello.java是等价的。
便已完成之后在同一个文件夹就会有一个同名的.class文件。
?
看编译结果,改错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 学习 总结