Java语言基础、学习笔记

第一、二章:

创新互联公司是一家集网站建设,凌河企业网站建设,凌河品牌网站建设,网站定制,凌河网站建设报价,网络营销,网络优化,凌河网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

一、Java开发入门

1. ① 下载压缩包, ② 将解压文件粘贴到新建项目的根, ③ 右键构建路径,添加到新的路径。

2. 加载游戏背景图,参数是图片文件的全名(包含后缀名)。图片放到src的Images包

3. 音乐必须放在src的Sounds文件夹下,只支持mp3格式文件

5. false表示只播放一次,true表示一直重复播放

6. ① 注意各处的大小写, ② 注意数据类型(字符串用双引号[英])

二、变量和数据类型

Ⅰ、变量

1. 程序由指令和数据组成。

2. 变量定义不能“重名”,也就是不能重复“定义”。

3. 在一定范围内,“变量”可以重复使用,但不可以重复定义。

4. 变量指向新的数据只会影响之后指令的执行效果。

5. 保留字:goto、const。(无意义)

Ⅱ、标识符

1. 标识符是用来给类、方法、变量等命名用的。

命名规则:1)由字母、中文(不推荐)、数字、下划线 _、$组成;2)不能以数字开头;3)不能是关键字。

2. 注意:大小写如:demo和Demo

3. 驼峰命名法:每个单词第一个字母大写,例:ageOfBaby

4. 潜规则”:类名:大写开头;变量名、方法名:小写开头。

Ⅲ、变量类型、初始化

1. 定义一个变量的格式:变量类型 变量名=初始值;

2. 局部变量使用前必须赋给初值。声明时赋值或者使用前赋值都可以

3. 整数常量默认是int类型,小数常量默认是double类型。

选用数据类型的时候在考虑到数据的可能范围之后,选择最小范围的类型,这样节省资源。

Ⅳ、类型转换

1. byte b=3;int i=b;//隐式类型转换

其实并没有把这个东西从这种类型"转换"成另一种类型,它只是根据

原来的内容创建一个新东西。

另:byte b = (byte)i;//显式类型转换

2. 不能从 double 转换为 float。小数默认是double

3. int i2 = (int)d1;//显式类型转换,会丢失小数部分

4. 大范围”=“小范围”:隐式转换

“小范围”=“大范围”:显式转换,编译器担保不出事

都是整数参与乘除运算,结果还是整数。整数常量参与乘除计算一般加f声明为小数类型,避免精度损失。

5. int转换为String:Integer.toString(i);String转换为int:Integer.parseInt("33")。显式类型转换仅限整数、小数类

型之内。

总结:① 大范围 =》 小范围 隐式转换 小范围 =》 大范围 显式转换

② 注释:要显示一个 ,前面加一个 即可;

要显示两个 (即 \\) ,前面加两个 \\,而两个分开的 (即 ) ,须在各个前加 \\ ;

要显示三个以上 (即 ……),在各个前面加一个 即可。

Ⅴ、赋值运算符

1. 基本数据类型是复制传递

2. 通过中间变量来交换两个int变量的值。

第三章、游戏引擎

1、网页、Swing、Android、游戏引擎等几乎所有图形环境中,都是以屏幕左上角为原点坐标,x向右为正向,y向下为正向。

像素:图形内容都是由一个个的像素点组成的。

2、imgName为初始显示图片的文件名(必须放在src的Images包下)。也可以调用void createImage(int num)创建一个什么都不显示的图片。

3、比较运算:① 借助中间变量temp; ② 运算法

4、repeat表示是播放一次,还是重复播放。playSpriteAnimate是启动动画之后就结束,不会等动画播完。

5、Dimension getSpriteSize(int spriteNum) 获得精灵的尺寸

6、生成精灵、网址: http://www.spriters-resource.com

剪切工具:SpriteSheets(需要.Net Framework)。

生成的图片必须是png格式的。

7、程序打包:① 把bin和两个jar拷贝到单独的文件夹下;

② 创建一个.bat文件,内容是 start jrebinjavaw.exe -cp .bin -Djava.ext.dirs=. Main1。Main1代表入口类,如果有报名则要写全名。

③ 压缩一下,发给对方,解压双击“bat”文件即可

第四章、逻辑运算符和if语句

1、苦记优先级表,不如直接用括号区别优先级,提高代码可读性。

2、短路运算:对于&&,一旦遇到左边的为false,那么结果一定是false了

对于||,一旦遇到左边的为true,那么结果一定是true了

因此就不计算右边的表达式了。

另:非运算(!),单目运算,没有短路运算

第五章、if和switch语句

1、if语句若只有一行代码,去掉大括号虽然可行,但不符合代码规范,所以不建议去掉大括号

2、switch只能进行离散值的判断,不能进行范围的判断;switch只能进行常量的比较,不能进行变量的比较

3、else可以不用最后的else,建议加上,更加严谨

4、如果匹配了上面的一个条件,那么即使复合下面的else if条件,else if也不会执行“先来后到”

5、三元运算符能够实现的,基本if都能实现;if能实现的,三元运算符不见得能够实现。所以基本是“简单的判断然后根据判断的boolean结果进行简单的赋值”才使用三元运算符

6、表达式可以是byte、short、int、char类型。(*)JDK5以后还可以是枚举类型,JDK7以后还可以是String类型。

7、break意味着switch的结束。default相当于if的else,当所有case都不匹配的时候,执行default

8、多个switch条件合并的问题:当多个case条件的代码一样的情况下,可以合并,最后加一个break;

9、① case语句不能是判断条件表达式,也不能是变量,必须得是常量

② 不能有重复的case常量,但if可以有

③ 每条case语句后必须有一个break,但default后的可以省略

第六章、for循环

1、for(初始化;是否继续循环判断;一次循环后执行的) 这三部分都可以省略,第一部分省略就没有初始化,第二部分省略则默认为true,第三部分则执行后不执行什么。

2、循环嵌套层数可以更多,但是建议不要超过两层。

3、break和continue可以用到for、while、do while这些循环语句中。区别是break是终止整个循环,continue是终止当次循环

4、空格弹跳:这种“一次性触发”的动作最好用后面的“事件驱动”,否则实现起来很麻烦,getPressedKeyCode()只适合于“连续动作”

5、注意变量的范围(全局还是局部),不同范围起的作用不同,甚至易引起错误。

第七章、while、数组

1、对于int、double、float等数组,没有赋值的元素被初始化为0;对于String、Integer等引用类型初始化为null。

2、不能动态增加数组的大小,要用LinkedList、ArrayList等来增加

第八、九、十

Ⅰ、二维数组:

① 可以为不定长数组

② 交换数组元素:第i个和第length-i-1个交换

Ⅱ、方法:

1、方法就是一堆可以复用的代码段。方法执行过程中无法确定的数据以参数形式传递过来;方法的执行结果以返回值进行返回。

2、方法的声明时参数的名字和调用时候变量名字没有关系,调用的时候甚至可以不传变量

3、方法中的局部变量不能被调用的方法访问,如果真要访问只能通过参数传值,并且只是相当于变量赋值,方法内部对参数的赋值不会影响调用者。

Ⅲ、重载(OverLoad):① 在同一个类中,允许存在一个以上的同名方法,只要其参数个数或者参数类型不同即可。返回值是否一样无关和参数名是否一样无关。

② 方法重载可以实现“方法参数默认值的效果”

③ 可变参数前面还可以有其他参数,只要保证可变参数是最后一个就可以(只能有一个可变长度参数)

第十一章、面向对象基础

1、面向对象不是替代面向过程的,宏观是面向对象,微观仍然是面向过程

2、一个java文件中只能定义一个public的class,且文件名一般和public类一样。

3、new出的每个对象都是一个单独的实例,两个对象之间的成员变量是独立的两份。

4、局部变量必须初始化,成员变量声明时默认初始化,基本数值类型默认初始值为0、false,String等非基本类型初始化为null。

5、当成员变量和局部变量(函数参数也可以看做局部变量)重名的时候,被看做局部变量,因此为了避免混乱,建议访问类成员变量的时候加上“this.”, 在类内部this代表当前对象。this.也可以调用当前类的成员方法。

6、栈内存(成员变量):自动释放

堆内存(局部变量):不会自动释放(System.gc回收)

7、new Person().sayHello();创建一个匿名对象,然后调用。

8、public成员可以被类内部或者外部访问,private成员只能被类内部访问(通过set、get方法访问)。这样可以保护不希望外接调用的内部成员(Member,包含字段Field/变量、方法)不被外界访问。封装数据、暴露行为。

9、构造函数是创建类对象,并且在创建完成前对类进行初始化的特殊函数。如果定义类时没有声明构造函数,默认会给出一个无参构造函数,如果定义了任意一个构造函数,将不会提供默认的无参构造函数。

10、① 方法名必须和类名一致 ② 没有返回值类型

11、JavaBean的规则:

1)必须有无参构造函数;

2)字段不能是public;

3)类的字段必须通过get和set方法来访问。 set***、get***。只有get没有set则是“只读”

4) boolean类型属性名避免使用 “is” 开头的名称

12、包(package):① 通过package定义在页面最顶部; 避免类名重复的问题。

② 在磁盘上的保存路径和package一致,可以单级、可以多级。

③ 包名小写

④ “公司域名反着写.产品名.模块名”:com.rupeng.crm.user、com.sun.media.sound

13、静态static:

① static变量不需要new就可以直接通过类名调用。static变量是共享一块儿内存空间,非static变量则是各对象隔离的。

② static 方法中无法使用this关键字,因为static独立于对象存在,不是任何人的唯一。

③ static成员中只能访问static成员,不能直接访问非static成员。非static成员可以访问static成员。

④ 静态成员只会初始化一次。

14、单例模式:

① 类在系统中只能有一个对象

② 构造函数声明为private,这样避免外界访问

第十二章、面向对象深入

1、枚举:限定一个数据的可选值范围,比如“方向”。

2、枚举的原理:构造函数设置为private,把几个对象设置为public static fina实例。

3、类的静态代码块:静态代码块在类第一次被使用的时候执行一次,在构造函数执行之前执行。只要一旦开始“接触一个类”,静态成员、static代码块就会被执行。

4、继承(inherit):① Java中一个类可以“继承”自其他类。

② 子类会从父类继承所有非private成员。子类还可以有子类。

③ Java中一个类只能有一个父类(单继承),如果没指定父类,则Java内置的Object为父类。

5、继承中的构造函数调用顺序:① 子类的构造方法默认都去访问了父类的无参构造方法:在子类中的构造方法中都有一行默认语句:super()

② 先执行父类的构造函数把父类初始化完成,再初始化子类的。

③ 可以通过super(参数)去访问父类中的有参构造函数。可以通过this(参数...)去访问本类中的其他构造函数。

④ 如果父类没有无参构造函数,那么子类必须显式调用父类的其他的构造函数。

6、public/private/protected:

① private成员无法被子类访问,子类只能通过父类的非private方法“间接”访问父类的private成员。这样保证了父类private成员的安全性。

② 继承是“模子”的集成,数据不会继承。

③ protected成员只能被自己以及子类(直接或者间接)以及兄弟(同package包中)访问,无法被“外姓人”访问。

另:default(什么都不写):同一个package包中可以访问。

第十三章、多态

1、多态:父类和子类中的方法的参数个数和类型都相同,只是实现体不同,父类(基类)类型变量指向子类类型对象,并调用子类类型对象的方法进行实现的现象。

另:① 父类类型的变量可以指向子类的对象,但子类类型的变量不可以指向父类。

② 可以调用哪些方法由变量的类型决定

2、类型转换:

()类型转换可以把“以父类类型角度观察的对象的实例”重新以“子类类型角度观察”。(显式类型转换/强制类型转换)如:Chinese zgr5 = (Chinese)dqr1;(dqr1是父类类型)

3在父类方法中调用虚方法,指向的是子类对象,执行的也是子类对象的方法

4、如果父类中的某些方法不希望被子类Override,比如kill,那么标记为final即可。

好处:① 安全,可以保证父类定义的行为的执行(必须“被杀死”);

② 效率高,避免了查询虚方法表(*)。

另:如果某些类不希望被继承,类也可以声明为final。

final 类的好处主要是安全。String类就是final

5.抽象类:Ⅰ、① 抽象方法没有方法体;② 一旦类中定义了抽象方法,类必须被修饰为抽象;

③ 抽象类无法实例化(new)。

Ⅱ、抽象类的抽象方法主要用来限制子类“必须实现这些抽象方法”;子类也可以不实现,那么子类也要是抽象类,由子类的子类……去实现。

6、调试:如果修改了类结构、加了方法、改了方法、改了签名等就要重启

第十四章、游戏引擎封装

1、虚方法定义“能干什么”,子类中的方法定义具体“干什么”。

2、public GameText(){this("");//调用重载的构造函数}

3、GameText[] txts = new GameText[words.length];//只是new了一个大小为5的txts数组,并没有元素,元素需要另外赋值

4、for(GameText text:txts){text.moveLeft();}//增强for循环

5、增强for循环只适用于读取(使用),不能赋值

6、数组的每个元素的默认值,int=0,boolean=false,String =null, 类数组的每个元素的默认值都是null

第十五章、匿名类和接口

1、匿名类格式:new 类名() { };//类体

这样就是相当于声明了一个这类的子类,然后并且创建这个类的对象。注意:不是创建这个父类的对象。

2、System.out.println(d2.getClass());//d2指向的对象是Test1$1 (编译器自动生成的)类型

3、类中this指的是匿名内部类,如果要想指外部的对象,要用“类名.this”

4、接口:Ⅰ、① 是一种用来声明“能力”的类型,不提供具体实现

② 不提供实现方法,连{}都不能有。

③ 接口无法实例化,只能被类“实现”(implements)

Ⅱ、① 既可以使用接口类型变量又可以使用类类型变量调用speak

② 接口的意义是定义“做什么”,类定义“怎么做”

③ 接口中只能声明static 成员变量,不能声明普通成员变量。因为static 可以被外界用,一个没有实现代码的接口中声明普通成员变量没意义。而且必须要是public。

Ⅲ、① 接口中可以定义多个方法,也可以不定义任何方法(* 标识接口)。

② 接口只是“能力”不是“实现”,因此不能也必要定义构造函数。

③ 类只能有一个父类,类可以实现多个接口。

④ 接口可以继承其他接口:extends。 接口也有多态、类型转换。

Ⅳ、不能给values参数传递int[],但是可以传递Integer[]

第十六章、补充知识

1、java中==就是用来比较是否指向同一个对象,如果要进行内容的比较,则需要提供equals方法或者实现Comparable接口。

2、char其实也是一个数字

3、java字符串比较方法:
使用String.compareTo方法:
compareTo()的返回值是int,它是先比较对应字符的大小(ASC||码顺序)
①、如果字符串相等返回值0
②、如果第一个字符和参数的第一个字符不等,结束比较,返回它们之间的差值(ASC||码值) //第一个字符出结果了就不较后面的了
(负值前字符串的值小于后字符串,正值前字符串大于后字符串)
③、 如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,
依次类推。
④、如果比较完一个,另一个字符串还剩一点,则返回this.length()-anotherString.length()

4、在内存中创建一个字符串对象,内容是“abc”,把s1指向这个字符串对象

发现已经有了一个“abc”字符串对象了,因此把s2直接指向之前的“abc”

本文题目:Java语言基础、学习笔记
网页URL:https://www.cdcxhl.com/article22/cjghcc.html

成都网站建设公司_创新互联,为您提供动态网站服务器托管建站公司微信小程序品牌网站制作商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设