java基础知识概要Word文件下载.docx
《java基础知识概要Word文件下载.docx》由会员分享,可在线阅读,更多相关《java基础知识概要Word文件下载.docx(44页珍藏版)》请在冰点文库上搜索。
JAVA_HOME:
Tomcat、Eclipse以来的环境变量。
path:
windows系统执行命令时要搜寻的路径。
classpath:
java在编译和运行时需要找的class所在的路径
3.JAVA基础
Java源文件以“java”为扩展名。
源文件的基本组成部分是类(class)
一个源文件中最多只能有一个public类。
其它类得个数不限,如果源文件中包含一个public类,它必须按此类名命名。
Java语言严格区分大小写。
Java方法由一条条语句构成,每个语句以分号结束。
Java语言有三种注释方式:
//单行注释
/*
用于多行注释
*/
/**
*用于多行注释,且可以被doc工具解析。
3.1.HelloWord的简单例子
3.2.Java基本语法
3.2.1.标示符
Java对各种变量、方法和类等要素命名时所使用的字符序列称之为标示符
Java标示符命名规则
以正常人的思维来书写标示符。
约定俗称:
Java标示符选取因注意“见名知意”且不能与java语言的关键字重名。
3.2.2.关键字
Java中一些赋予特定的含义,用作专门用途的字符串称之为关键字(keyword)
不需要记住,写代码的时候会有提示。
3.2.3.变量与常量
3.2.3.1.常量
是不同于变量的另一种类型,它的值是固定的。
Java的常量用字符串表示,区分为不同的数据类型。
◆如整型常量123
◆实型常量3.14
◆字符常量’a’
◆逻辑常量true,false
◆字符串常量”helloword”
如:
System.out.println(123)
注意:
区分字符常量和字符串常量
“常量”这个名词还会用在另外其他环境中表示值不可变的变量。
不可变的变量,给变量指定一个值之后,这个变量的值不可再发生改变。
◆参见final关键字
finalintintValue=100
3.2.3.2.变量
例如:
有这样一个小程序,弹出一个对话框,要求输入用户,用户输入完之后,后台给出提示“欢迎您,xxx”,那么这个xxx就是我们在对话框中输入的名字,考虑这个程序,我们应该知道有这样的一个东西保存了我们输入了用户,这样东西我们可以理解成变量。
Ø
Java变量是程序中最基本的存储单位,其要素包括变量名、变量类型和作用域。
Java中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:
TypevarName[=value][{,varName[=value]}]
例如:
inta=200;
floatf=12.3f;
doublea,b,c=0.235,
Stringstr=“nihao”;
从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这一小块区域,因此,每一个变量使用前必须先申请(声明),然后必须进行赋值(填充内容),然后才能使用。
程序是在内存中运行的,所以每个变量都有自己的名称(地址),变量的内容通过值来表示,内容的大小通过数据类型来决定。
程序的执行过程:
程序在内存中的执行过程分四部分(不同的操作系统可能不一样)。
运行exe或者是运行java应用程序时或Tomcat,代码被load至内存中(存放在codesegment中),main(或Tomcat)方法开始执行,类变量(static)和字符串常量存放在datasegment中,局部变量存放在statckmemory(栈),new出来的东西放在heapmemory中
Java变量的分类
按被声明的位置划分:
✧成员变量:
方法外部、类的内部定义的变量
✧局部变量:
方法或语句内部定义的变量
按所属的数据类型划分:
✧基本数据类型的变量
✧引用数据类型的变量
3.2.4.Java的运算符
按
照
运
算
符
功
能
来
分
基
本
的
有
下
面
几
类
:
算
术
(+,-,*,/,%,++,--)
关
系
(>,<,>=,<=,==,!
=
逻
辑
(!
&
&
||)
赋
值
(=,及
其
扩
展
赋
如
+=)
字符串连接符:
条
件
(
?
)
inta=5,b=13,max;
max=(a>
b)?
a:
b;
表达式是由常量、变量或是其他操作对象与操作符所组成的语句。
a+b-c/(d*3-9);
自加自减运算符
注意:
++(—)
在前时先运算在取值
在后时先取值在运算
详见例子Test.java
3.2.5.数据类型
3.2.5.1.基本数据类型:
long长整数8字节
int整数4字节
short短整数2字节
byte位1字节
char字符1字节
boolean布尔1字节
只允许取值true或false,不可以以0或非0来替代true和false,这点和C语言不一样。
float浮点数4字节
double倍精数8字节
3.2.5.2.数据类型的转换
Boolean类型不可以转换为其他的数据类型
A、自动类型转换
整
型
、
实
字
数
据
可
以
混
合
。
中
不
同
先
转
化
为
一
型,然
后
进
行
换
从
低
级
到
高
如
图
规
则
✧容量小的类型自动转换容量大的数据类型;
数据类型按容量大小排序为:
byte,short,char--->
intlongfloatdouble
✧byte,short,char之间不会转换,他们三者在计算时首先会转换为int类型。
✧容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;
使用时要格外注意。
✧有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再计算。
①
(byte或
short)
op
int→
int
②
short或
int)
long→
long
③
int或
long)
float→
float
④
long或
float)
double→
double
⑤
char
箭
头
左
边
表
示
参
与
op为
(如
加
减
乘
除
等
),右
示转
成
B、强制类性转换
低级数据转换成高级数据
int
i;
float
b=(float)i;
//把
int型
变
量
i强
制
float型
高级数据换成低级数据转
doubleb;
inta=(int)b;
这
种
使
用
会
导
致
溢
出
或
精
度
降
最
好
不
要
用。
String类型和其他类型的转换
详见例子StringConvert.java
3.3.编码格式
格式很重要
格式原则:
✧要让别人看得清楚
✧要让别人看得舒服
大括号对齐
遇到{缩进,Tab/Shift+Tab
程序块之间加空行
并排语句之间加空格
运算符两侧加空格
{前面有空格
成对编程
3.4.编码规范
类名的首字母大写
变量名和方法名的首字母小写
运用驼峰标示
3.5.流程控制
Java中
流
控
语
句
包
括
1.分
支
if-else,
break,
switch,
return.
2.循
环
while,
do-while,
for,
continue.
详见例子ForTest.java
3.例外处理语句
try-catch-finally,
throw
注意switch语句:
4.面向对象
4.1.类和对象
4.2.类(对象)之间的关系
4.2.1.继承关系
4.2.2.实现关系
4.2.3.多态
4.2.4.为什么要使用对象
面向对象的编程一一组对象互相配合通过沟通完成特定功能
✧所有的paradigm都是对现实问题的抽象
汇编是对机器语言的抽象
面向过程的语言是对汇编的抽象
对象更加符合对于现实问题的抽象
对象都有对外服务的接口
通过继承可以复用
对象隐藏内部服务的实现
通过聚合可以复用
面向对象更加容易使我们达到这些年来苦苦追求的境界
Extensibiity.维护和替换更加方便、…
组件一比对象更高的层次上的抽象(二进制级别)
EJB、WebService.CORBA.COM、.
4.3.类的声明及方法的定义
class类名称
{
//声明field
数据类型1field名称1;
数据类型2field名称2;
。
//定义method
返回值的数据类型method名称(参数1,参数2,。
)
{
程序语句;
return表达式;
}
例如:
我们可以定义如下的长方形类:
classCcfx//定义长方形类
{
intwidth;
//声明数据成员width
intheitht;
//声明数据成员heitht
intarea()//定义方法area(),用来计算面积
returnwidth*heitht;
intzhouchang()//定义方法zhouchang(),用来计算周长
return2*(width+heitht);
4.4.创建新的对象
publicclassapp7_1
publicstaticvoidmain(Stringargs[])
Ccfxcfx1;
//声明新的对象
cfx1=newCcfx();
//创建新的对象
cfx1.width=10;
cfx1.height=5;
System.out.println(“area”+cfx1.area());
System.out.println(“zhouchang”+cfx1.zhouchang());
}
输出为
area=50
zhouchang=30
4.4.1.对象的创建和使用
必须便用new关键字创建对象。
成员属性的访问格式:
实例对象.属性名
成员方法的调用格式:
实例对象.方法名(参数1、参数2…….)
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
4.5.方法method
我们在看一个关于圆的一个类
classCcircle
{
doublepi=3.14;
doubleradius;
voidshow_area()
System.out.println(“area=”+pi*radius*radius);
voidshow_all()
System.out.println(“radius”+radius);
Show_area();
//在类的内部调用show_area方法
pubicclassapp7_6
publicstaticvoidmain(Stringargs[])
CcircleCir1=newCcircle();
Cir1.radius=2.0;
Cir1.show_all();
4.6.方法的参数传递
在app7_6类中调用了Ccircle类中的show_all()方法,可以看出没有参数的传递也没有返回值。
doublepi;
doublegetradius()
returnradius;
voidsetCcircle(doubler,doublep)
pi=p;
radius=r;
publicstaticvoidmain(Stringargs[]){
CcircleCir1=newCcircle();
Cir1.setCcircle(2.0,3.1416);
System.out.println(“radius=”+Cir1.getradius());
java中进行函数调用中传递参数时,遵循值传递的原则:
基本类型传递的是该数据值本身。
引用类型传递的是对对象的引用,而不是对象本身。
4.7.公有成员与私有成员
doublepi=3.14;
show_area()
System.out.println(“area=”+pi*radius*radius);
Cir1.radius=-2.0;
//在Ccircle外部可以直接改变radius的值
System.out.println(“bj=”+Cir1.getbj());
可以看出,虽然半径为负数,但面积还是误答误撞的算对了。
为了防止一些错误的发生,我们可以对成员属性做一定的限制如:
//创建私有成员属性,只能在其所在的类中才能修改
privatedoublepi=3.14;
privatedoubleradius;
publicvoidsetRadius(doubler)
if(r>
0)
radius=r;
System.out.println(“radius=”+radius);
else
System.out.println(“inputerror”);
//Cir1.radius=-2.0;
报错
Cir1.setRadius(-2.0);
可以看到我们在Ccircle类中添加了一个公共(public)的成员方法setRadius来对半径赋值并进行校验。
4.8.引用
Java语言中除基本类型之外,变量类型都称之为引用类型。
Java中的对篆是通过引用对其操作的。
如何在内存中区分类和对象
✧类是静态的概念,代码区
✧对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份。
堆内存比较大,对象动态分配的,运行期间分配的,
4.9.方法的重载
classCcircle
privateStringcolor;
privatedoublepi=3.14;
privatedoubleradius;
publicvoidsetCcircle(Stringcolor)
this.color=color;
publicvoidsetCcircle(doubler)
radius=r;
publicvoidsetCcircle(Stringstr,doubler)
color=str;
radius=r;
publicvoidshow()
System.out.println(“color”+color+”,radius=”+radius);
publicclassapp8_1
CcircleCir1=newCcircle();
Cir1.setCcircle(“Red”);
Cir1.setCcircle(2.0);
Cir1.show();
Cir1.setCcircle(“Bule”,4.0);
1、使用重载时,参数的个数或参数类型至少有一种不同
2、我们无法设计出参数个数和类型完全相同,但返回类型不同的重载。
publicvoidsetCircle(doublea);
publicintsetCircle(doubleb);
4.10.构造函数
在实例化类时被激发执行。
publicCcircle(){}
publicCcircle(doubler)
CcircleCir1=newCcircle(2.0);
CcircleCir2=newCcircle();
System.out.println(“area=”+Cir1.show_area()());
System.out.println(“area=”+Cir2.show_area()());
名称,无返回。
构造方法也可以重载
4.11.类变量和类方法
4.11.1.类变量与实例变量
在上例中针对Ccircle产生了两个实例对象Cir1,Cir2也即在内存中分别开了两个大小完全一样的单元分别寄存实例变量pi与radius的值.
类变量与实例变量同样都需要声明,不同的是再声明类变量时需在变量之前加上static,与实例变量不同的是声明的类变量被所有的实例对象所共享,所以在更改某个实例对象的“类变量“时其他的实例对象也随之改变。
我们可以用下面的例子来证实。
privatestaticintnum=0;
privatestaticdoublepi=3.14;
num++;
publicvoidcount()
System.out.println(num+”objectcreated”);
publicstat