Java笔记.docx
- 文档编号:29266051
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:15
- 大小:21.95KB
Java笔记.docx
《Java笔记.docx》由会员分享,可在线阅读,更多相关《Java笔记.docx(15页珍藏版)》请在冰豆网上搜索。
Java笔记
1、Public为“类”,表示公有,即整个程序都可以访问。
2、若将一个类声明成public,则其后面的类名称要和文件名同名,可见,一个java文件中,最多只能有一个public类,否则文件无法命名。
但可以有许多non-public类。
如果一个java程序中没有一个类是public类,则其文件名就可以随意命名了。
3、命名时要尽量以字母开头,且不要用关键字符,不要以数字开头。
4、println与print的区别是前者可以换行。
5、在java中,goto和const是没有任何意义的,但也是关键字。
assert(断言)是jdk1.4之后才增加的,enum(枚举)是jdk1.5之后才增加的。
6、JavaDevelopmentTools(JDT)当开发人员说他们使用Eclipse进行Java开发时,他们实际上指的是使用JDT。
7、eclipse最早由IBM开发,其前身是VisualAge.
8、Ctrl+shift+F格式化(将格式变得标准)。
9、toString的使用(.toString方法,当系统对一个类的对象调用System.out.println(对象);的时候,会自动调用该对象的toString方法,生成该对象的字符串表示!
2.toString方法,当想将该类的对象转化成字符串,或者使用或得到该类的字符串表示时,可以手动使用该方法!
)
10、编写java程序时,【Ctrl+Alt+/】可以自动补全java关键字,也可以使用【Alt+/】启动eclipse的代码辅助菜单。
11、声明常量的语法:
(static)final数据类型常量名称[=值];
Suchas:
finalintYEAR=365;一旦出现,就必须赋值。
12、成员变量和局部变量
在类中定义的变量为成员变量(即定义在publicstaticvoidmain(…)之前的),其作用范围是整个类。
而局部变量的作用范围也是有局限的,如循环里声明的变量只作用此循环。
13、用以下的赋值可以获取相应数据的最大值
bytebyte_max=Byte.MAX_VALUE;(如127) (1个字节)
shortshort_max=Short.MAX_VALUE. (2个字节)
intint_max=Integer.MAX_VALUE. (4个字节)
longlong_max=Long.MAX_VALUE; (8个字节)
单精度类型是4个字节,双精度是8个字节。
也可以求其最值。
下面求其最小值表达式:
Float.MAX_VALUE;
14、数据类型转换
A.自动转换(转换前后,数据类型兼容,且转换后的数据类型不能比转换前的数据类型小,即扩大转换。
)
B.强制转换(如:
两个整数相除时,小数部分会被截断,使结果保持整数,如果想得到预先的结果,可以:
(欲转换的数据类型)变量名称;
比如:
inta,b;
floatg;
g=(float)a/b//ora/(float)b(float)a/b)
C.以不流失数据为大前提;字符类型会转换成int类型;
布尔类型不会转换成其他类型。
15、运算符“~”是取补码的运算。
(形式上体现为:
相反数减1)
inta=7,b=-5;~a=-8~b=4;
16、System.out.println(“返回值是:
”+(5>2))结果:
返回值是:
true
17、自增与自减操作(前置与后置的区别)
inta=6,b=13;
System.out.print(“a=”+a+”;a++=”+(a++)+”a=”+a);
输出:
a=6;a++=6;a=7
System.out.print(“b=”+b+”;++b=”+(++b)+”b=”+b)
输出:
b=13;++b=14;b=14
前置:
先运算++,返回增加后的值;
后置:
返回未加的值,即返回原值,然后再自加。
由此可见,前置的效率更高,后置运算时还要保存要返回的原值
拓展:
a*=b++即a=a*bb++
a*=++b即b++a=a*b
a-=b++即a=a-bb++
a-=++b即b++a=a-b
18、几个位逻辑运算符:
&:
位运算符,“与”;
^:
抑或,XOR;
|:
或,or
19、布尔类型(只有true和false两种)
比如:
inta=3,b=5;booleant1=a
System.out.println(“a 运行结果是: a 拓展: 与条件表达式结合使用 booleant=(a+b==8)? true: false; 20、空语句(不执行任何功能,却占用计算机资源,一般用于待以后添加新的功能。 ) 21、switch语句中选择值(即case后面的值)只能是字符或者常量。 每个case后需加一个break以跳出。 22、“\t“是制表符,跳8个空格,如下(简单的循环嵌套): for(inti=1;i! =10;++i) { for(intj=1;j! =10;++j) System.out.print(i+"*"+j+"="+(i*j)+"\t"); System.out.print("\n"); } 输出如下: 1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9 2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18…… 23、一维数组的声明与定义 数据类型数组名[];//声明一维数组 数组名=new数组类型[个数];//分配内存给数组 等效为: 数据类型数组名[]=new数据类型[个数]; intscore[]=newint[11]; 直接赋值: 数据类型数组名[]={值0,值1,…}//[]中不需写数。 24、求数组score的长度(即元素个数),用score.length就可以了。 对于二维数组类似: 如intnum[][]={{42,54},{33},{12,34,56,}}; 数组名.length//取得数组的行数num.length=3 数组名[行的索引].length//取得特定行元素的个数num.[2]=1 另外,需要注意的是,java中数组二维数组的各行元素个数可以不同,输出时用两个for循环即可。 (多维数组亦然) 25、数组的拷贝: System.arraycopy(source,x1,dest,x2,num);//x是int型。 意思是: 复制源数组从下标x1开始的num个元素到目标数组,从目标数组的下标x2所对应的位置开始存取(目标数组相应的位置的元素会被覆盖)示例如下: inta1[]={1,2,3,4,5};inta2={9,8,7,6,5,4,3}; System.arraycopy(a1,0,a2,0,3);则a2={1,2,3,6,5,4,3}; 26、数组的自动排序操作: Array.sort(数组名),如Array.sort(a2); 但是,这个方法必须在java.util这个包里面,使用时先将其导入。 27、类的声明 声明类的格式: 示例: classPerson class类名称{ {Stringname; //类的成员变量voidtalk() //类的方法{ }System.out.println(……);}} 类的定义: class类名称 { 数据类型属性; 返回值的数据类型方法名称(参数1,参数2,……) { 程序语句; return表达式; }} 对象的实例的创建是通过关键字“new”来完成的: (如) classColordefine { Stringcolor=”black”;//属性 voidgetMes()//方法 { System.out.println(“定义类”); } publicstaticvoidmain(Stringargs[]){ { Colordefineb=newColordefine(); System.out.println(b.color);//访问属性 b.getMes;//访问方法 } }} 注(对象的访问): 1)上面划横线的那句就是关于对象的声明: 类名对象名=new类名();如创建一个Person类的对象,可以: Personp=newPerson();//类名首写字母要大写 对象只有在实例化之后才能使用,而实例化对象的关键字就是new 2)访问属性: 对象名称.属性名;如上面b.color 3)访问方法: 对性名称.方法名()如上面b.getMes 28、对象的比较(“==”和“equal”的比较) 我们用一个实例来讲解: publicclassTestEqual { publicstaticvoidmain(String[]args) { Stringstr1=newString(“java”); Stringstr2=newString(“java”); Stringstr3=str2; if(str1==str2) { System.out.println(“str1==str2”); } else { System.out.println(“str1! =str2”); } if(str2==str3) { System.out.println(“str2==str3”); } else { System.out.println(“str2! =str3”); } }} 运行结果: str1! =str2//str1和str2两个对象指向不同的内存空间 str2==str3 //str1和str2两个对象指向不同的内存空间,所以它们的内存地址是不一样的,而“==”比较的就是内存地址值,所以输出str1! =str2。 对于“Stringstr3=str2”,即str3也指向了str2的引用,此时两对象指向的是统一内存地址,所以比较值得结果是: str2==str3; 若把上述的if…else…语句改成equal,如下: if(str1.equals(str2)) { System.out.println(“str1equalsstr2”); } else { System.out.println(“str1notequalsstr2”); } if(str2.equals(str3)) { System.out.println(“str2equalsstr3”); } else { System.out.println(“str2! =str3”); } 则结果输出为: str1equalsstr2 str2equalsstr3 区别: “==”是比较地址值;“equal”比较内容。 29、对象数组的使用 Personp[]=newPerson[3];//创建对象数组元素,并分配内存空间 另外,也可以分别用下面的动态初始化和静态初始化来初始化对象数组: (1)for(inti=0;i p[i]=newPerson(); (2)Personp[]={newPerson(),newPerson(),newPerson()}; 下面用静态的方法来初始化对象数组: classPerson { Stringname; intage; publicPerson() {} publicPerson(Stringname,intage) { this.name=name; this.age=age; } publicStringtalk() { return“我是: ”+this.name+”,今年: ”+this.age+“岁”; } } publicclassTestObjectArray { publicstaticvoidmain(String[]args) { Person[]={newPerson(“张三”,25),newPerson(“李四”,30),newPerson(“王五”,35)}; for(inti=0;i System.out.println(p[i].talk); }}} 30、类的属性的定义需要注意的地方: 静态内部类可以定义静态方法和非静态方法以及非静态属性; 静态内部类可以定义静态内部类和非静态内部类; 非静态内部类不能定义静态属性,可以定义静态常量属性; 非静态内部类不能定义静态方法和静态内部类; 31、普通方法的定义: typename(参数列表){ //方法主体 } type指定了由方法返回的数据类型,若没有返回值,则返回类型必须标明是void。 方法的名称由name指定。 如: publicclassmethoddemo{ inta=12345679,b=81; publicvoidtimes(inti,intj) { System.out.println(i*j); } publicstaticvoidmain(String[]args) { methoddemom=newmethoddemo(); m.times(m.a,m.b); }} 32、构造方法的定义: class类名称 { 访问权限类名称(类型1参数1,类型2参数2,…) { 程序语句; ……//构造方法没有返回值 }} 注意点: (1)它具有与类名相同的名称; (2)它没有返回值。 (3)一般的方法是在需要时才调用,而构造方法则是在创建对象时自动调用。 (4)构造方法无需在程序中直接调用,而是在对象产生时自动执行。 构造方法的重载: 只要构造方法的参数个数不同,或者类型不同,便可定义多个名称相同的构造方法。 示例如下: classPerson { privateStringname; Privateintage; publicPerson(Stringn,inta)//构造方法 { name=n; age=a; System.out.println(“publicPerson(Stringn,inta)”); } publicStringtalk() { return“我是: ”+name+“,今年: ”+age+“岁”; } } publicclassTestConstruct1 { publicstaticvoidmain(String[]args) { Personp=newPerson(“张三”,25); System.out,println(p.talk()); } } 运行结果: publicPerson(Stringn,inta) 我是: 张三,今年: 25岁 注: 构造方法的基本作用就是对类中的属性初始化,在程序产生类的示例对象时,将需要的参数由构造方法传入,之后再由构造方法为其内部的属性进行初始化。 修改程序: 若把上述程序划横线处Personp=newPerson(“张三”,25);括号中的参数去掉,即变成Personp=newPerson()//(这是无参的),则在运行时会出错,理由: 如果程序中没有声明构造方法,程序就会自动声明一个无参的且什么都不做的构造方法,而此程序波浪线处生命了一个含有两个参数的构造方法,在java中只要明确声明了构造方法,那么默认的构造方法就不会被自动生成,要解决这个问题只需在构造方法(即波浪线处)上方加一个无参的且什么都不做的构造方法就可以了: publicPerson() {} 即: 如果最后程序在实例化过程中没有提供实例化参数的时候,则程序中必须含有一个无参的构造方法与之对应(以便被无参的对象实例化)。 33、构造方法的私有使用 classPerson { Stringname; //在本类声明一个Person对象p,注意用了final标记,故不能再次实例化 privatestaticfinalPersonp=newPerson(); privatePerson() { name=”张三”;//p中无参,name初始化的是Stringname中name } publicstaticPersongetP() { returnp; } } publicclassTestSingledemo2 { publicstaticvoidmain(String[]args) { //声明一个Person类的对象。 Personp=null; p=Person.getP();//横线处用了static,故而此处直接调用,//否则要new一下,即p=newPerson().get(); System.out.println(p.name); } } 输出结果是: 张三 33、在类内部调用(调用私有对象)的方法: 在类中的私有对象,可以在类中创建一个调用该私有对象的公有的方法,然后由类外调用该公有方法即可。 拓展——封装: 封装属性: private属性类型属性名; 封装方法: private方法返回类型方法名称(参数); 若果要给类中的私有属性赋值,一般在类中用setXxx(),getXxx()这样的公有方法来实现。 34、类的继承 一个类只能继承一个类而不能继承多个类,继承格式如下: class子类名extends父类 35、super主要的功能是完成自雷调用父类中的内容,也就是调用父类中的属性或者方法: 如“super(“张三”,25);”即调用父类中的姓名和年龄。 36、重载: 只要构造方法的参数个数不同,或者是类型不同,便可定义多个名称相同的构造方法。 覆写: 当一个子类继承一个父类,而子类中的方法与父类中的方法的名称、参数个数、类型等都完全一致时,就称子类中的方法覆写了父类中的方法。 37、向上转型: 父类对象通过子类对象去实例化,不需强制转换,但会丢失精度 向下转型: 父类的对象可以转换为子类对象,但需强制转换。 38、抽象类中的构造方法(如果有的话),必须要在子类中调用。 、 39、由接口实现的类必须在类内部覆写接口中的抽象方法,且可自由的使用接口中的常量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)