java笔记.docx
- 文档编号:18008407
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:120
- 大小:388.80KB
java笔记.docx
《java笔记.docx》由会员分享,可在线阅读,更多相关《java笔记.docx(120页珍藏版)》请在冰豆网上搜索。
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()去掉字符串前后空格 等号(==
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 笔记