黑马程序员技术交流社区
标题: 技术贴 [打印本页]
作者: xiao宁 时间: 2017-12-27 22:19
标题: 技术贴
学习方法:
每天要做的事——笔记、作业、代码
知识点的学习——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();//是可以的。
}
作者: 小浙姐姐 时间: 2017-12-30 16:00
总结得很详细,希望这个好习惯会一直伴随着你!信心来自于实力,实力来自于勤奋。加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |