学习方法: 每天要做的事——笔记、作业、代码 知识点的学习——A:是什么? B:有什么特点? C:如何使用? D:什么时候使用? E:能讲给别人听么? 学习的前提 (1)目标要明确 (2)兴趣是最好的老师 (3)自信是成功的法宝 (4)要求和建议 A:写总结,记笔记,写注释。 B:多交流
C:勤练习:敲--狂敲(学习的捷径 不走弯路,就是捷径) 常用的DOS命令 A:盘符的切换 **D:回车 B:进入目录 **cdaaa **cdc:\aaa\bbb C:回退目录 **cd... 返回上一级目录 **cd\ 返回根目录 D:删除文件 **dela.txt **del*.txt 删除所有以.txt结尾的文件 E:清屏 **cls F:退出DOS窗口 **exit 了解:dir,md,rd 标识符的规则 A:由26个英文字母大小写,数 字:0-9 符号:_ $ 组成。 B:不能以数字开头。 C:不能与关键字重名。 注意:java语言严格区分大小写。 变量 (1)在程序的运行过程中,其值是可以改变的量。 A:是内存中的一小块存储区域。 B:用于存储数据。 (2)声明变量的格式: A:数据类型 变量名 = 初始化值; **byte b = 10; **System.out.println(b); B:数据类型 变量名; 变量名 = 初始化值; 使用变量 **byte b; **b = 20; **System.out.println(b); (3)好处:该空间可以重复使用。
(4)什么时候使用变量呢?当要使用的数据是不确定的时候。 数据类型1、分类 A:基本数据类型 B:引用类型(类,接口,数组) 2、基本数据类型 4类8种,区别在于他们在内存中的存储空间大小不一样。 A:整数 **字节 byte 占1个字节 **短整型 short 占2个字节 **整型 int 占4个字节 **长整型 long 占8个字节 其后跟L或者l标示 B:浮点数 **单精度 float 占4个字节 其后跟F或者f标示 **双精度 double 占8个字节 C:字符 **char 占2个字节 D:布尔 **boolean占1个字节 true,false
注意:整型默认是int;浮点型默认是double。 运算符1、算数运算符 +,-,*,/,%,++,- - A:% **左边小于右边,结果是左边 **左边等于右边,结果是0 **左边大于右边,结果是余数 **余数的正负,取决于左边的正负 **应用:%2 (结果是0,1) B:++,-- **单独使用,放在操作数前后结果一样。 a++;++a; **参与操作(运算,赋值,打印)时,放在操作数的前面,数据本身改变,再参与操作。 inta = 12; b = ++a; //a=13,b=13; **参与操作(运算,赋值,打印)时,放在操作数的后面,数据先进行临时存储,数据本身改变,最后将存储的数据进行赋值。 int a = 12; b = a++; //a=13,b=12; C:+ **正号 **加法运算符 **字符串连接符 ***"hello"+'A'+1结果是helloA1 ***'A'+1+"hello"结果是66hello 2、赋值运算符 =,+=,-=,*=,/=,%= A:int x = 3;//把3赋值给int类型变量x B:x += 3; //x = x +3; 把左边和右边相加赋给左边。 C:左边必须是变量。 D:面试题 short s = 2; s = s + 2; s += 2; //+= 有一个自动强制转换的过程 哪一行会报错?为什么? 3、关系运算符 ==,!=,>,>=,<,<= A:比较运算符的结果都是boolean型,也就是要么是true,要么是false。 **System.out.println(3==3); 结果是true **System.out.println(3!=3); 结果是false 4、逻辑运算符 &,|,^,!,&&,|| /* |运算符:或 左边 右边 结果 true true true false true true true false true false false false 简单的说:有true则true。 */
| |
逻辑运算符用于连接boolean类型的表达式
/* &运算符:与 左边 右边 结果 true true true false true false true false false false false false 简单的说:有false则false。 */ /* !运算符:非 !true false !false true !!true true */
| |
/*
^运算符:异或 左边 右边 结果 true true false false true true true false true false false false 简单的说:相同则false,不同则true。 /* ||:短路或 |:或 区别:||是左边为true了,右边就不操作了。 |左边是true,右边还得继续操作。 */
| |
*/
/* &&:短路与 &:与 区别:&&是左边为false了,右边就不操作了。 &左边是false,右边还得继续操作。 */ 5、三元运算符 (?:) A:(条件表达式)?表达式1:表达式2; **如果条件表达式为true,运算后的结果是表达式1; **如果条件表达式为false,运算后的结果是表达式2; B:表达式:用运算符连接起来的式子就叫表达式 **算术表达式 a+b **赋值表达式 a+=2; **关系表达式 (a+b+c) >(a+b) **逻辑表达式 (a<b) ||(c>d); **三元运算符100>200?(300>200?100:200):200; 结果是:200
C:特点:运算完后,肯定有结果。 语句(顺序 选择 判断 循环)一、顺序结构 (1)程序从上往下,从左往右依次执行。 二、判断结构(if语句)1、第一种格式 if(条件表达式--只有两个结果(true/false)){ 执行语句; } A:执行流程 首先判断条件表达式,如果值为true,那么就执行if语句所控制的语句体。 如果为false,就不执行语句体。 B:条件表达式无论简单(a>b)或者复杂((a+b+c)>(a+b)),其结果是boolean值。true或者false。如果是其他的值,则错误。 注意问题: A:if(条件表达式)其后没有分号。 一般来说,有"{}"就没有";",有";"就没有"{}" B:if语句所控制的语句如果是一条语句,我们可以不写大括号; 如果控制的是两条以上的语句,必须加大括号。 if语句的控制体没有加大括号是其后跟的一条语句。 建议:永远加上大括号。避免不必要的错误。 2、第二种格式 if(条件表达式){ 执行语句1; }else{ //else 否则的意思。 执行语句2; } A:执行流程 首先判断条件表达式,如果值为true,那么就执行语句1。 如果为false,就执行语句2。 B:if可以单用,第一种格式。 有else必须有if。 C:发现if语句的第二种格式和三元运算符相似。 区别: (1)三元运算符是if语句的简写形式。 (2)所有的三元运算符都可以用if语句改写。反之不行。 为什么?因为三元运算符是一个运算符,计算完后,必有结果。 3、第三种格式 if(条件表达式){ 执行语句1; }else if (条件表达式){ 执行语句2; } …… else{ 执行语句n; } A:else可以省略,但是不建议。 (1)它是第三种格式的组成部分。 (2)你有可能没有判断完所有的情况,我们就可以使用else来完成特殊情况。 B:执行流程 虽然格式很长,但是,它整体只是一条语句。 不断的判断,只要有满足条件的条件表达式,就执行该判断处控制的语句体,执行完后。语句结束。 当都不满足时候,执行else。 C:if后面必须有条件表达式。 else后面没有条件表达式。 D:if语句的嵌套 if语句里面的语句体还是if语句。 4、if的应用 A:给定一个数值,请打印出对应的星期?。 B:一年有四季,每季三个月 春:3,4,5 夏:6,7,8 秋:9,10,11 冬:12,1,2 给定一个月份,输出对应的季节。 C:if语句什么时候使用? ***对几个值进行判断的时候 **** 1,2,3,4,5,6,7 if(x==1) {} elseif(x==2) {} ... ***对结果是boolean类型的进行判断 **** if(x>3) {} elseif(x==3) {} elseif(x??) {} ... ***对范围进行判断 **** if(x>90 && x<100) {} elseif(x>80 && x<=90) {} ... 三、选择结构1、基本格式 switch(表达式){ case 取值1: 执行语句; break; case 取值2: 执行语句; break; …... default: 执行语句; break;
} 选择结构1、基本格式 switch(表达式){ case 取值1: 执行语句; break; case 取值2: 执行语句; break; …... default: 执行语句; break; } 2、针对基本格式的说明 A:switch 用于定义选择结构范围。 表达式:被选择的结果,该表达式只能有四种类型:byte,short,int,char 注意:在JDK5以后,还支持一个叫做枚举的类型(enum);JDK7以后,还支持String类型。 B:case :被选择的答案 C:break:跳出,结束switch语句。 D:default:默认的意思。当所有的case都不匹配时,执行default里面的内容。相当于if语句中的else。 函数1、定义:就是完成一个特定功能的一段小程序。 A:以后写代码的时候,就得注意了: **我们在也不用把所有的代码都放到主函数里面去了。 **主函数只负责调用我们自定义的函数。 B:函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…){ 执行语句; return返回值; } 说明: **修饰符---- 修饰函数的。现在不用管,后面专门讲。现在统一写为: public static **返回值类型---- 函数本身是具有特定功能的一段独立的小程序,这个功能在运算完或者执行完之后,肯定有结果,那么结果到底是什么类型的呢,我们需要在函数上标示一下。 **函数名---- 为了方便使用定义好的函数,我们就给它起个名字。 **参数类型---- ***形式参数----接受实际参数的变量 ***实际参数----实际使用的数值 **执行语句----函数是用于完成一段特定功能的,有可能这段功能需要多条语句执行,这就有了执行语句。 **return----就是将执行的结果返回回来的一个关键字。其后跟的是返回的结果。 2、特点A:定义函数可以将功能代码进行封装,便于对该功能进行复用。函数的出现提高了代码的复用性。 B:自定义函数只有被调用才会被执行。 C:函数中只能调用函数,不可以在函数内部定义函数。因为函数是平级的。 D:被调用时: **有明确返回类型的函数: ***可以单独使用,但是没有意义; ***可以赋值给一个和返回类型对应的变量,然后输出变量; ***可以直接在输出语句中直接使用; **void返回类型的函数: **只能单独调用。不能用于打印 注意:返回值类型和参数列表中参数类型没有关系! 定义功能,功能中需要定义什么就定义什么,不需要的就不要定义。 3、函数的应用 A:如何自定义函数--------两个明确 **明确函数的返回值类型 **明确参数列表(形参的类型及个数) B:两个整数的求和 public class Sum { public static void main(String[] args) { int sum = getSum(3,4); System.out.println(sum); } //返回值类型:int,未知内容:inta,int b public static int getSum(int a,int b){ return a+b; } } C:取得两个整数中较大的值 public class Max { public static void main(String[] args) { int max = getMax(3,5); System.out.println(max); } //返回值类型:int,未知内容:inta,int b public static int getMax(int a,int b){ return a>b?a:b; }
} 数组1.数组的定义 存储的是同一种数据类型的数据的集合,它是一个容器。 2.数组的格式(一维数组) 第一种格式: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 示例:int[] arr = new int[5]; **左边: int 表示数组中元素的数据类型 [] 表示数组 arr 数组的名字 简单说:定义了一个int类型的数组,名称是arr。 **右边: new 创建一个实体 实体:存储一个数的东西叫变量。存到多个数据的东西叫实体。 new:class是用来定义一个类的,new是用来创建一个实体的。 int 表示数组中元素的数据类型 [] 表示数组 5 表示此数组中有5个元素 简单说:创建一个int类型的数组实体,该实体中可以存储5个int类型的元素。 第二种格式: 元素类型[] 数组名 = new 元素类型[]{元素1,元素2,……}; 示例:int[] arr = newint[]{3,5,1,7}; int[] arr ={3,5,1,7}; 面向对象思想 类与对象 一、面向对象思想1、面向对象与面向过程区别和联系。 A:区别: **面向过程关注执行过程,这个时候我们是执行者。 **面向对象关注的是最终功能,这个时候我们是指挥者。 B:联系:. **面向对象是基于面向过程的。 2、面向对象 A:面向对象思想的特点。 **是符合人们思考习惯的一种思想。 ***编程思想就是来源于生活。 **将复杂的问题简单化了。 **把我们从执行者变成了指挥者。 B:举例 **我去面试,boss调用了我的写程序的功能,不需要自己去做。 **找女朋友洗衣服、做饭。 C:请给我解释面向对象的思想。 **先说特点 **举例说明这些特点 3、面向对象思考问题的方式 找对象,完成功能。 如果对象不存在,自己就造一个对象。 4、面向对象的三大特性 A:封装 B:继承 C:多态 此外面向对象还有个一个特性------->抽象! 二、类与对象1、类 是对现实世界事务的抽象。 A:类就是一类事物的抽象。 2、对象 是该类事物具体的存在个体。 3、如何描述一个类 A:现实生活中我们用属性和行为来描述一个事物。 B:这个时候我们就可以用属性和行为来描述一个类 那么,他们在类中分别对应什么呢? **属性 -- 成员变量 (属性)--------------->整个类中有效 **行为 -- 成员方法 (函数,功能)------>整个类中有效 4、自定义类的分析过程 A:分析: **首先分析这个类是个什么样的事物 **其次你就应该该事物具有哪些属性和行为 **把这个事物的属性和行为对应成我们类的成员变量和成员方法。 B:自定义一个电脑类 **属性 颜色,品牌,重量 **行为 开机,关机,上网 对应成类 //自定义电脑类 classComputer { Stringcolor;//颜色 Stringtype;//品牌 doubleweight;//重量 publicvoid start(){}//开机 publicvoid stop(){}//关机 publicvoid online(){}//上网 } 5、对象的创建和使用及对象的内存图 A:对象的创建 Student s = newStudent();//创建一个Student的对象,并把它赋给了Student类型的s。 B:使用对象 如果你想使用类中的方法和属性,你必须通过类的实例(对象)来调用。 调用方式: 对象名.属性; 对象名.方法名(参数列表); 三、成员变量和局部变量的区别1、作用范围 成员变量作用于整个类。 局部变量只作用于它所属的范围(函数,语句); 2、生命周期&位置 成员变量存储在堆内存中,是属于对象的,随着对象的存在而存在,随着对象的消失而消失。 局部变量存储在栈内存中,是属性它所属范围的,使用完立即被释放。 3、初始值 成员变量都有默认初始化值。 **整型 0 **浮点型 0.0 **字符型 '\u0000' 空字符 **布尔型 false **字符串 null 局部变量没有默认值,要想使用,必须遵循: 先定义(声明),再赋值,最后使用。 封装1、概念把实现细节隐藏,提供公共的访问方法。 任何对象或者系统都应该有一个明确的边界,边界内部的改变对外部没有影响,在java中,类包含了数据和方法,将数据放到一个类中就构成了封装。他将变化的进行了隔离,这样大大的提高了程序的安全性,由于他提供了公共访问方式,我们只需要调用它的功能即可,这样就提高了代码的复用性(只关注功能不用在意具体实现),自然而然就方便使用了。我们只需要将类中的成员变量私有(在变量名前加private即可),并提供相对应的set和get方法。 机箱和主板的例子。 私有只是封装的一种体现,隐藏才算是封装。 2、好处 A:将变化隔离。 B:便于使用。 C:提高重用性。 D:提高安全性。 3、private关键字 A:private **私有的 B:特点 **是一个权限修饰符。 **可以修饰成员,被修饰的成员只能在本类中访问。 C:一般用法 **一般用于将成员变量私有,提供公共的get,set方法进行访问。 自定义类 一般格式: classStudent{ privateString name; publicvoid setName(String n){ name= n; } publicString getName(){ returnname; } }
注意:set方法可用于对成员变量进行赋值。 this关键字1、概念 代表本类对象的一个引用 A:方法被哪个对象调用,该方法内的this就代表哪个对象。 2、使用场景 A:局部变量隐藏成员变量 classStudent{ privateString name; /* publicvoid setName(String n){ name= n; } */ publicvoid setName(String name){ this.name= name; } publicString getName(){ returnname; } } Students = new Student(); s.setName("张三"); Stringstr = s.getName(); System.out.println(str); System.out.println(s.getName()); B:构造方法中使用this classStudent{ privateString name; privateint age; Student(){} Student(Stringname){ this.name= name; } Student(intage){ this.age= age; } Student(Stringname,int age){ //this(name);//代表就是调用构造方法----构造方法中的调用方式 this.name= name; this.age= age; } } C:比较年龄 publicboolean compare(Person p){ returnthis.age==p.age; //returnthis.getAge()==p.getAge();//是可以的。
}
|