java笔记.docx

上传人:b****2 文档编号:2571086 上传时间:2023-05-04 格式:DOCX 页数:120 大小:388.80KB
下载 相关 举报
java笔记.docx_第1页
第1页 / 共120页
java笔记.docx_第2页
第2页 / 共120页
java笔记.docx_第3页
第3页 / 共120页
java笔记.docx_第4页
第4页 / 共120页
java笔记.docx_第5页
第5页 / 共120页
java笔记.docx_第6页
第6页 / 共120页
java笔记.docx_第7页
第7页 / 共120页
java笔记.docx_第8页
第8页 / 共120页
java笔记.docx_第9页
第9页 / 共120页
java笔记.docx_第10页
第10页 / 共120页
java笔记.docx_第11页
第11页 / 共120页
java笔记.docx_第12页
第12页 / 共120页
java笔记.docx_第13页
第13页 / 共120页
java笔记.docx_第14页
第14页 / 共120页
java笔记.docx_第15页
第15页 / 共120页
java笔记.docx_第16页
第16页 / 共120页
java笔记.docx_第17页
第17页 / 共120页
java笔记.docx_第18页
第18页 / 共120页
java笔记.docx_第19页
第19页 / 共120页
java笔记.docx_第20页
第20页 / 共120页
亲,该文档总共120页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java笔记.docx

《java笔记.docx》由会员分享,可在线阅读,更多相关《java笔记.docx(120页珍藏版)》请在冰点文库上搜索。

java笔记.docx

java笔记

笔记

第一章程序设计概述

Java简述

1.java特点:

一次编译,到处运行。

很强的跨平台性。

java源程序(.java)-->java字节码文件(.class)-->在jvm上执行

2.环境搭建

安装jdk,环境变量设置很重要,不然会出现找不到main函数的。

3..javac.exe编译器后面必须跟文件名(一个java程序只能有一个public说明的类或者没有,文件名必须和这个public类名相同)

4.java.exe解释器后面必须跟主类名(含有main的类)

环境变量

我的电脑点右键,选择“属性”—>“高级”,进入环境变量设置,分别设置如下三个环境变量:

(1)path变量:

使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等,这就要找到我们安装JDK的目录,如我们的JDK安装在C:

\jdk1.6.0目录下,那么在C:

\jdk1.6.0\bin目录下就是我们常用的java应用程序,我们就需要把C:

\jdk1.6.0\bin这个目录加到path环境变量里面。

在系统变量里找到path变量,选择—>编辑;(里面已经有很多的变量值,是在变量值的最前面加上C:

\jdk1.6.0\bin;)

变量名:

path

变量值:

C:

\jdk1.6.0\bin;

(2)classpath环境变量:

让java解释器知道到哪里去找别人写好的类。

在系统环境变量那一栏中点->新建classpath

变量名:

classpath

变量值:

D:

\CLASSES(字节码存储的位置)

在命令窗口如何运行打包后的程序:

javac-dD:

\classes*.java

Java包名.主类名

(3)设置JAVA_HOME:

一是为了方便引用,比如,JDK安装在C:

\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串;

二则是归一原则,当JDK路径改变的时候,仅需更改JAVA_HOME的变量值即可,否则,就要更改任何用绝对路径引用JDK目录的文档,要是万一没有改全,某个程序找不到JDK,系统会导致崩溃!

三则是第三方软件会引用约定好的JAVA_HOME变量,不然,你不能正常使用该软件.

在系统环境变量那一栏中点->新建JAVA_HOME(JAVA_HOME指向的是JDK的安装路径)

变量名:

JAVA_HOME

变量值:

C:

\jdk1.6.0

Java程序中:

(1)一个程序有多个类组成,只有一个公共类。

(2)当main方法直接调用某些方法时,那么这些方法一定是static的

(3)如果通过类的名称直接调用这个方法时,那么该方法一定是静态的

(4)一个类有多个类组成,通过编译后出现多个相应的字节码文件

(5)del*.class删除当前所有的.class文件

第二章Java基本的程序设计结构

基本语法

1.java属于解释型语言

2.注释:

单行//;多行/**/;专用//**/;套用/*//*/

3.JAVA标识符

K8w.[&sD_[_@0标识符由数字、字母、下划线“_”或“$”符号组成。

5M_nT3^_j_|,bc_X_o0标识符必须以字母、下划线“_”或“$”符号开头。

不能使用JAVA关键字。

字母区分大小写

4.基本数据类型

整型十进制(12)十六进制(0x12)八进制(012)

长整型13L

单精度浮点数5.1f4f2e3f0f

双精度浮点数3.1

布尔常量truefalse

字符常量'a'

字符串常量"hello""123"

null常量

5.数据类型的分类

基本数据类型:

◆数值型:

Ø整数类型(byte,short,int,long)

Ø浮点类型(float,double)

◆字符型(char)

◆布尔型(boolean)

引用数据类型:

◆类(class)

◆接口(interface)

◆数组

byte1字节-

short2字节

long8字节

float4字节

double8字节

char2字节

boolean1字节

注意各类型变量的默认值,boolean型默认为true,值只有true和false.

特殊字符

\b退格\”双引号

\r回车(本行的行头)\’单引号

\n换行(表示到下一行)\\反斜杠

\t制表符(tab)

6.变量和常量

1、变量

✧Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

✧变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元声明格式为:

typevarName[=value][{,varName[=value]}];

✧注意:

1.每个变量都有类型,类型可以是基本类型,也可以是引用类型。

2.变量名必须是合法的标识符。

3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束

✧可以在一行中声明多个变量:

inti,j;

不提倡这种风格,逐一声明每一个变量可以提高程序可读性。

✧可以将变量的声明和初始化放在同一行中

例如:

intage=18;floate=2.718281828f;

✧变量按被声明的位置可划分为:

1.局部变量:

方法或语句块内部定义的变量

2.实例变量:

方法外部、类的内部定义的变量

2、常量

1.在java中,使用关键字final来表示常量

2.关键字final表示可以对变量赋一次值,且它的值一旦设定,便不可改变。

3.习惯上常量名都用大写字母。

7.命名规范

1.一般约定

●Java标识符的选取因注意“见名知意”

●表示常量的标识符全部大写,比如:

finaldoublePI=3.14;

●表示类名的标识符是以大写字母开头的名词,如果名字由多个单词组成,每个单词的第一个字母都应该大写。

比如:

HelloWorld

●表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始

比如:

getName()

2.这种在一个单词间使用大写字母的方式称作“camelcase”

8.java中的运算符

1.算术运算符"+"还有连接的作用"%"负数被取余等于它的绝对植取余加负号;

 

1 赋值运算符的左边一定是变量,不允许是常量。

2 &左右两边都是真结果为真反之都为假

3 Instanceof表示某个对象是否属于某个类。

4 a++表达式的值与原变量的值相同,之后原变量加1

5 相同异或为假,不同异或为真!

6 a&&b左边为假的时候,右边不运算。

7 a||b短路或当左边为真时,右边不运算!

8 &&和||如果第一个操作数已经能够确定值,则不计算第二个操作数。

2.递加/递减运算符

✧对数值变量进行加1,减1是最常见的操作,所以在Java中提供了自增自减运算符++,--。

n++将变量n的值当前值加1;n--将n的值减1.

✧这些运算符改变了变量的值,所以它的操作数不能是数值.

例如:

5++//error

✧这两个运算符有两种形式

⏹前缀形式:

++(--)在前时先运算再取值。

⏹后缀形式:

++(--)在后时先取值再运算。

publicclassOperatorTest{

publicstaticvoidmain(Stringarg[]){

intm=10;intn=20;

inti=(n++);

System.out.print("i="+i);

System.out.println("n="+n);

i=(++n);

System.out.print("i="+i);

System.out.println("n="+n);

i=(m--);

System.out.print("i="+i);

System.out.println("m="+m);

i=(--m);

System.out.print("i="+i);

System.out.println("m="+m);

}

}

 

3.关系运算符

●比较运算,计算结果“true”或“false”

1)大于>“op1>op2”

2)大于等于>=“op1>=op2”

3)小于<“op1

4)小于等于<=“op1<=op2”

5)等于==“op1==op2”

6)不等于!

=“op1!

=op2”

●优先级

1)(>、>=、<、<=)>(==、!

=)

2)关系运算符低于算术运算符

publicclassRelationalTest{

publicstaticvoidmain(Stringargs[]){

intw=9;

intx=6;

booleany=w

booleanz=w>=w*2-x*3;

booleanc=‘b’>‘a’;

System.out.println("w

System.out.println("z="+z);

System.out.println("c="+c);

}

}

4.逻辑运算符

publicclassLogicalTest{

publicstaticvoidmain(Stringargs[]){

booleana=true;

booleanb=false;

booleanc;

c=a&b;System.out.println(c);

c=a|b;System.out.println(c);

c=a^b;System.out.println(c);

c=a^c;System.out.println(c);

c=!

a;System.out.println(c);

c=a&&b;System.out.println(c);

c=a||b;System.out.println(c);

}

}

5.条件运算符

1 条件运算符是java语言中唯一的三元运算符

2 语法格式:

条件?

op1:

op2

3 若条件为真,则计算op1的值,否则计算op2的值

例:

z=a>0?

a:

-a;(求绝对值)

z=a>b?

a:

b;(求最大值)

6.位运算符

v位运算符包括:

~(取反)&(按位与)

|(按位或)^(按位异或)

v位运算符功能说明:

7.移位运算符

◆<<:

左移运算符,将左操作数向左移动,移位个数由右操作数决定。

移动之后,移出的空位补0;

◆>>:

右移运算符(有符号的右移运算),将左操作数向右移动,移位个数由右操作数决定。

它使用“符号扩展”方式进行补空,即:

用符号位填充左侧的位(若值为正,则补0;若值为负,则补1)。

◆>>>:

无符号移位运算符,它使用“零扩展”方式进行补空,即:

用0填充前面的空位。

注意:

对移位运算符右侧的参数需要进行模32的操作例如:

1<<35等价与1<<3

publicclassBitTest{

publicstaticvoidmain(String[]args){

inti=10;

intj=i<<2;

System.out.println("j="+j);

j=j>>1;

System.out.println("j="+j);

intk=(i&8)/8;

System.out.println("k="+k);

k=(i&(1<<3))>>3;

System.out.println("k="+k);

}

}

//负数右移运算测试示例:

packagepk.aa;

publicclassTestMoveBit{

publicstaticvoidmain(String[]args){

intx=-5;

/**“>>”为有符号的右移,它是以原码方式参加向右移位。

*负号位的1不参与移位;在移位中当移出去的是数字1时,

*则最后结果应加1;当移出去的是数字0,则最后结果不加1

*/

inty=x>>1;

/**“>>>”为无符号的右移,它是以补码方式参加向右移位。

*左边移出的空位被0;不论右边移出去的是0还是1,则最后结果

*均不加1。

*/

intz=(x>>>1);

System.out.println("x="+x+"y="+y+"z="+z);

ints=0;

for(inti=2;i<=30;i++){

s+=(int)(Math.pow(2,i));

}

s=s+1;

System.out.println("s="+s);

booleanb1=s==z;

System.out.println("s==z"+(b1?

"相等":

"不相等"));

}

}

分析结果:

/**

*intx=-5;

*inty=x>>1;

*

*原码:

10000000000000000000000000000101

*右移1位后:

1X000000000000000000000000000010

*+1

*-------------------------------------------------------------------------------------

*1X000000000000000000000000000011

*结果为:

-3

*

*intx=-5;

*inty=x>>>1;

*

*原码:

10000000000000000000000000000101

*反码:

11111111111111111111111111111010

*补码:

11111111111111111111111111111011//说明:

补码即为无符号数,即是正数

*右移1位后:

X1111111111111111111111111111101

*空位补0后:

01111111111111111111111111111101

*-------------------------------------------------------------------------------------

*空位补0后:

01111111111111111111111111111101

*结果为:

*

*/

8.赋值运算符

1 赋值运算符“=”是最常用的一种运算符。

它将等号右边的表达式的值赋给左边的变量。

2 可以在赋值语句中采用简化的格式书写二元运算符,x+=4;等价与x=x+4;

3 Java中“扩展”的赋值运算符:

+=,-=,*=,/=,%=,^=,&=,|=,>>=,<<=,>>>=

4 当“=”两侧的数据不一致时,需要用到类型转换,有两种方式。

Ø自动类型转换:

系统自动完成

Ø强制类型转换:

手工完成

9.自动类型转换

1 自动类型转换:

容量小的数据类型可以自动转换为容量大的数据类型。

在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。

2 特例:

可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

●shortb=12;//合法

●shortb=1234567;//非法

3 多种类型的数据混合运算时,不同的数据类型之间是无法运算,当一个表达式中出现不同的数据类型时,在运算前,编译器会将操作数转换为相同的类型

Ø只要两个操纵数中有一个是double类型,会将另一个转换成double类型

Ø否则,只要两个操纵数中有一个是float类型的,另一个会转化float类型

Ø否则,只要两个操纵数中有一个是long类型的,另一个将转化成long类型

Ø否则,两个操作数都将转换成int类型

publicclassImplicitCastTest{

publicstaticvoidmain(String[]args){

byteb=1;//如果b=128;?

shorts=b;//byteimplicittoshort

inti=b;//byteimplicittoint

floatf=b;//byteimplicittofloat

longl=b;//byteimplicittolong

doubled=b;//byteimplicittodouble

charc=‘a’;

i=c;//charimplicittoint

System.out.println(i);//会输出什么呢?

f=i;//intimplicittofloat

l=i;//intimplicittolong

d=i;//intimplicittodouble

f=l;//longimplicittofloat

d=l;//longimplicittodouble

d=f;//floatimplicittodouble

}

}

10.强制类型转换

1 强制类型转换(Cast):

强制类型转换,又被称为造型,用于显式的转换一个数值的类型.在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

2 强制类型转换的语法格式:

“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型。

例如:

doublex=3.14;

intnx=(int)x;//值为3

3 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。

例如:

intx=300;

bytebx=(byte)x;//值为44

4 不能在布尔类型和任何数值类型之间做强制类型转换。

如果需要把布尔类型转换成一个数字应该按如下方法:

booleanb=true;

b?

1:

0;

classCastingTest{

publicstaticvoidmain(Stringargs[]){

inta=257;

byteb=(byte)a;

System.out.println("a="+a);

System.out.println("b="+b);

}

}

/*结果:

*25700000000000000000000000100000001

*100000001

*/

11.表达式

1 表达式是符合一定语法规则的运算符和操作数组成的序列,其目的是用来说明一个计算过程。

2 表达式的类型和值

●对表达式中操作数进行运算得到的结果称为表达式的值。

●表达式的值的数据类型即为表达式的类型。

3 表达式的运算顺序

同其它程序设计语言一样,使用圆括号来指示运算的执行顺序,在不使用圆括号的情况下:

●应按照运算符的优先级从高到低的顺序进行。

●优先级相同的运算符按照事先约定的结合方向进行。

12.语句

1 表达式语句:

表达式+分号“;”如:

x=25;C=a+b;

2 空语句:

只有分号如:

i=5;;;

3 符合语法规则

4 以分号作为语句的结束,一个语句可以跨多行

13.字符串

1 Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

2 Stringstr=“中国”;表示str引用了对象”中国”str称为对象变量,“中国”称为对象!

3 一个实例就是一个对象!

4 每个用双引号括起来的字符串都是一个String类的一个实例。

5 当“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行运算。

6 字符串中的第一个字符的位置为0.

String类中的方法:

s.substring(a,b)总是有b-a个字符,不包括b。

●CharcharAt(intindex)返回字符串中的index个字符

●booleanequals(Stringother)如果字符串与other相等,则返回true

●booleanequalsIgnoreCase(Stringother)如果字符串与other相等(忽略大小写)则返回true

●intindexOf(Stringstr)查找字符串

●intindexOf(Stringstr,ints)返回与str匹配的第一个字串的开始位置,该位置从0或s开始记

●Intlength()返回字符串的长度

●Stringreplace(charoldChar,charnewChar)用一个新的字符代替一个旧的字符

●BooleanstarsWith(Strings)如果字符串以s开始,则返回true

●BooleanendsWith(Strings)如果字符串以s结尾,则返回true

●StringtoLowerCase()把原始字符串中的所有大写字母改成小写字母

●StringtoUPPerCase()把原始字符串中的所有小写字母改成大写字母

●Stringtrim()去掉字符串前后空格

 

等号(==

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2