黑马程序员技术交流社区
标题: java编程基础学习 [打印本页]
作者: 吕德波 时间: 2018-3-24 22:10
标题: java编程基础学习
Java编程基础学习,在前半段的循环语句,判断语句,各种运算符以及到后面的二维数组等更多的靠逻辑思维.而后面开始学的方法,面向对象,更多的就是要靠自己的理解了.到了这里会是一个相对的难点.大概就是一个分水岭了.
在这里分享一些自己的个人笔记把
自增运算符号:++
自增符号放在前面跟后面的结果是完全不同的.放在前面,会先进行自增,在进行运算.而放在后面,则会把值提取出来进行运算,先不自增.
int a =10;
a=a++;
System.out.println(a)
/*
第一步:a++ a变为了11
第二步:a++这个整体为10
第三步:a++这个整体赋值给了a , a又变成了10
第四步:输出a为10
*/
判断语句:
if else
if(关系表达式){
语句体;
}else{
语句体2;
}
public static void main(String[] args) {
//创建对象
Scannersc = new Scanner(System.in);
//接收数据
System.out.println("请输入学生的考试成绩:");
intscore = sc.nextInt();
//我们发现程序不够健壮,加入错误数据的判断
if(score<0|| score>100){
System.out.println("你的成绩是错误的");
}elseif(score>=90 ){
System.out.println("你的成绩属于优秀");
}elseif(score>=80 ){
System.out.println("你的成绩属于好");
}elseif(score>=70 ){
System.out.println("你的成绩属于良");
}elseif(score>=60 ){
System.out.println("你的成绩属于及格");
}else{
System.out.println("你的成绩属于不及格");
}
}
}
如果if 的第三种格式里面所有的条件表达式都满足,从上往下,只执行一个
switch
关系表达式里的类型:byte,short,int,char
jdk5之后可以是枚举
jdk7以后可以是字符串
注意事项:default 无论放在switch的任何位置,都是先去看case最后才去看default
如果执行了一个case之后,里面没有遇到break,直接case穿透(直接执行下一个case里面的内容,直到遇到break或者大括号)
循环语句
for(初始化;判断语句;控制条件语句){
循环体语句;
}
初始化语句;
while(判断语句){
循环语句;
控制条件语句;
}
初始化语句;
do{
循环语句;
控制条件语句;
}(判断语句)
for循环结束后,初始化的变量就不能使用了.而while循环结束后,初始化变量还可以继续使用.
数组
变量只能存一个
数组是一个容器,存很多,但是固定长度
集合是一个容器,存很多,长度不固定
int[]arr,定义了一个int类型的数组,数组名是arr;
int arr[],定义了一个int类型的变量,变量名是arr的数组
数组初始化
动态初始化:只给出长度,由系统给出初始化值
数组类型[] 数组名=new 数据类型[数组长度];
int[]arr= new int[3];
左边:int:说明数组中的元素类型是int类型
[]说明这是一个数组;arr:这是数组的名称
右边:new:为数组申请内存分配,开辟空间
int:说明数组中的元素类型是int类型;[]说明是一个数组
3:数组的长度,其实就是数组中的长度
静态初始化:给出初始化值,由系统决定长度
数组类型[] 数组名=new 数据类型[]{元素1,元素2,元素3,...}
int[]arr=new int[]{1,2,3};
简化格式:
数据类型[] 数组名={元素1,元素2,元素3,...};
int[]arr={1,2,3};
方法
意义:完成特定功能的代码块。
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){
方法体语句;
return返回值;
}
格式解释:
A:修饰符 目前记住publicstatic
B:返回值类型 用于限定返回值的数据类型
C:方法名为了方便我们调用方法的名字
D:参数类型用于限定调用方法时传入的数据类型
E:参数类名用于接收调用方法时传入数据的变量名
F:方法体 完成功能的代码
G:return 结束方法,并且把返回值带给调用者
写方法俩个明确:
明确返回值类型
明确参数类表 明确几个参数,以及参数的数据类型
class Demo2_Sum{
publicstati void main(String[] args){
intsum =add(10,20); //1 调用add方法,将10和20分别传递给a和b
} //5将方法的结果返回给sum
public staticint add(int a,int b){ //2 复制a=10,b=20 .(int a,int b)形式参数,用来接收实际参数的。
intsum = a+ b; //3 执行语句把a和b相加赋值给sum
returnsum; //4 通过return将sum的结果返回
}
},
注意事项:
单独调用:一般来说没有意义,不推荐
输出调用:但是不够好,因为我们可能需要针对结果进行进一步的操作。
赋值调用,推荐方案
方法不调用不执行
方法和方法是同级的,不能嵌套
如果有返回值必须用return语句带回。
方法调用的时候参数之间用逗号隔开
方法调用的时候,不用再定义数据类型。
Void修饰的方法调用,只能用单独调用
重载
概念:方法名相同,参数类表不同,与返回值类型无关
Println其实就是一个方法的重载
重载的分类
参数个数不同
参数类型不同
方法的参数如果是基本数据类型:形式参数的改变不影响实际参数
方法的参数如果是引用数据类型:形式参数的改变影响实际参数
参数:
实际参数:就是实际参与运算的。
形式参数:就是方法定义上的,用于接收实际参数的。
面向对象
创建对象
格式:类名 对象名=new 类名()
对象如何访问成员?
成员变量:对象名.变量名
成员方法:对象名.方法名(...)
成员变量与局部变量的区别
A:在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
B:在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值问题
成员变量:有默认值
局部变量:没有默认值,必须先定义赋值,最后使用.
private:
是一个修饰符
可以修饰成员变量,也可以修饰成员方法
被private修饰的成员只能在本类中被访问
针对private修饰的成员变量,我们会相应的提供getXxx和setXxx用于获取和设置成员变量的值,方法用public修饰
面向对象:
封装,继承,多态.
封装:
把不需要对外展示的内容,隐藏起来,并对外提供公共的访问方式.
比如面向对象:成员变量加private提供公共的set和get方法.
好处:安全.提供代码的复用型.
在同一个类中,如果有局部变量和成员变量名相同的情况,在局部使用的时候,采用的是就近的原则.
构造方法:
给对象的数据进行初始化
格式:
方法名和类名相同
没有返回值类型,连void都不能写
没有具体的返回值
构造方法的注意事项:
A:如果我们没有给出构造方法,系统将会提供一个默认的无参构造方法供我们使用.
B:如果我们给出了构造方法,系统将不再提供默认的无参构造方法供我们使用
C:这个时候,如果我们想使用无参构造方法,就必须自己提供
推荐:自己给无参构造方法
D:无参构造方法也可以重载
成员变量赋值:
A:setXxx()法
B:带参数构造方法
如何调用构造方法
通过new关键字调用
格式:类名 对象名=new 构造方法(...)
类名作为形式参数:其实这里需要的就是对象.
类名作为返回值:返回的就是对象
作者: 金色的程序员 时间: 2018-3-24 22:37
加油加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |