华清远见嵌入式学习day40——Java基础
JAVA基础
- 方法
- 方法重载
- 掌握数组的声明
- 掌握数组的初始化
- 掌握数据的冒泡 拷贝和排序
- 面向对象
- 类和对象
- 成员变量 成员方法 构造方法
Java方法
方法定义
-
1简单的说:方法就是完成特定功能的代码块
- 在很多语言里面都有函数的定义
- 函数在Java中被称为方法
- 格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
函数体;
return 返回值;
}
求两数字和: 带返回值的
public static int sum(int a,int b) { //如何实现呢? //int c = a + b; //return c;
//c就是a+b,所以,我可以直接返回a+b return a + b; } |
Java方法调用
|
/* 需求:两个数中的较大值 两个明确: 返回值类型:int 参数列表:int a,int b */ public static int getMax(int a,int b) { //if语
//用三元改进 //int c = ((a > b)? a: b); //return c;
//由于c就是后面的式子 return ((a>b)? a : b); } |
- 方法重载
public static int sum(int a,int b,int c) { return a + b + c; } //需求3:求四个数的和 /* public static int sum2(int a,int b,int c,int d) { return a + b + c + d; } */ public static int sum(int a,int b,int c,int d) { return a + b + c + d; }
public static float sum(float a,float b) { System.out.println("float"); return a + b; } |
方法重载
class FunctionTest6 { public static void main(String[] args) { //测试 byte b1 = 3; byte b2 = 4; System.out.println("byte:"+compare(b1,b2));
//测试 short s1 = 5; short s2 = 5; System.out.println("short:"+compare(s1,s2));
//后面的两个自己测试 }
//byte类型 public static boolean compare(byte a,byte b) { System.out.println("byte"); return a == b; }
//short类型 public static boolean compare(short a,short b) { System.out.println("short"); return a == b; }
//int类型 public static boolean compare(int a,int b) { System.out.println("int"); return a == b; }
//long类型 public static boolean compare(long a,long b) { System.out.println("long"); return a == b; } } |
- 数组 数组定义 格斯
- 数组是用来存储一组相同数据类型数据的数据结构
- 数组的元素可以是简单类型的数据,也可以是引用类型的数据
- 无论数组内容是简单类型还是引用类型,数组自己本身都是一种引用类型
定义 初始化格式
动态 int [] arr = new int[5];
静态 int [] arr ={1,2,3,4}
public class Test { public static void main(String args[]) { int a[] = new int[5]; String[] str= new String[3]; System.out.println(“a[3]="+a[3]); System.out.println("str[2]="+str[2]); } }
|
- 内存图解
- String 内存图解
- 遍历数组
方法版本 public static void printArray2(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x == arr.length-1) { //这是最后一个元素 System.out.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } } |
- 冒泡排序演示
int[] arr = { 10, 3, 19, 2, 11, 15 }; for (int x = 0; x < arr.length - 1; x++) { // 每次比较的时候次数 都比上次少一次 //第一次比较 0个元素 不比 //第二次比较 1个元素 不比... for (int y = 0; y < arr.length - 1 - x; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = temp; } } } System.out.println("排序后:"); for(int i = 0; i<arr.length;i++) { System.out.println(arr[i]); } |
- 回顾 数组
- Arrays. sort()方法
public class ArraysSort{ public static void main(String args[]) { int[] a = { 10, 3, 19, 2, 11, 15 }; System.out.println(“排序前:"); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); Arrays.sort(a); System.out.println(“\n排序后:"); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); } }
|
|
数组值的拷贝
System类的静态方法arraycopy()
参数:
-
- src - 源数组。
- srcPos - 源数组中的起始位置。
- dest - 目标数组。
- destPos - 目标数据中的起始位置。
- length - 要复制的数组元素的数量。
作用:从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
面向对象思想建立
1:面向对象思想 面向对象是基于面向过程的编程思想。
面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能
2:面向对象的思想特点 A:是一种更符合我们思想习惯的思想 B:可以将复杂的事情简单化 C:将我们从执行者变成了指挥者
举例: 买电脑: 面向过程:我的了解电脑--了解我自己的需求--找对应的参数信息--去中关村买电脑--讨价还价--买回电脑 面向对象:我知道我要买电脑 -- 班长去给我买 -- 班长就买回来了
3:把大象装进冰箱 面向过程: 动作有哪些呢? A:打开冰箱门 B:装进大象 C:关闭冰箱门 代码体现; class Demo { public static void main(String[] args) { /* System.out.println("打开冰箱门"); //打开冰箱门的东西,我现在仅仅是为了演示,就写了一个输出语句 //其实,它可能需要做很多操作。 //这个时候代码就比较多一些了 //假设我要多次打开冰箱门, //代码一多,每次都写一遍,麻烦不 //我们就应该用方法改进
System.out.println("装进大象"); System.out.println("关闭冰箱门"); */
//写了方法以后,调用就改变了 open(); in(); close(); }
public static void open() { System.out.println("打开冰箱门"); }
public static void in() { System.out.println("装进大象"); }
public static void close() { System.out.println("关闭冰箱门"); } }
面向对象: 我们怎么才能更符合面向对象思想呢? A:有哪些类呢? B:每个类有哪些东西呢? C:类与类直接的关系是什么呢?
把大象装进冰箱的分析? (如何分析有哪些类呢?UML。名词提取法。) A:有哪些类呢? 大象 冰箱 Demo B:每个类有哪些东西呢? 大象: 进去 冰箱: 开门 关门 Demo: main方法 C:类与类直接的关系是什么呢? Demo中使用大象和冰箱类的功能。
代码体现: class 大象 { public static void in() { System.out.println("装进大象"); } }
class 冰箱 { public static void open() { System.out.println("打开冰箱门"); }
public static void close() { System.out.println("关闭冰箱门"); } }
class Demo { public static void main(String[] args) { 冰箱调用开门 大象调用进去 冰箱调用关门 } }
4:开发,设计,特征 面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情。
面向对象设计 其实就是在管理和维护对象之间的关系。
面向对象特征 封装(encapsulation) 继承(inheritance) 多态(polymorphism) |
类和对象
现实世界中是如何描述一个事物的呢? 举例:学生 姓名,年龄,性别... 学习,吃饭,睡觉
属性:该事物的描述信息 行为:该事物能够做什么
我们学习编程语言,是为了模拟现实世界的事物的。 而我们学习的编程语言Java中最基本的单位是:类。 所以,我们就应该把事物通过类来体现出来: 由此,我们就得到了现实世界事物和类的对应关系:
事物: 类: 属性 成员变量 行为 成员方法
类:是一组相关的属性和行为的集合。是一个抽象的概念。 对象:是该类事物的具体表现形式。具体存在的个体。
举例: 学生:类 班长:对象 |
类的定义
public class Student{ String name; public void eat( ){ System.out.print(“eat”); } }
|
|
- 成员变量 和局部变量 访问特定 就近原则
|
- 创建对象来使用
- 构造器(构造方法)的声明语法:
- 访问修饰符 类名 ( 参数数据类型 参数名,…)
- {
- 给成员变量赋值
- }
- 构建器名称必须和类名称一致
- 一个类可以有多个构造器,但这些构造器的参数列表必须不同
- 例如:
- public class Phone{
- int weight;
- public void playGame( ) {
- System.out.print(“palyGame”);
- }
- }
写出构造方法打印运行
class Phone{ String brand; int weight; public Phone( String b,int w ){ brand = b; weight =w; } } public class PhoneDemo{ public static void main(String[] args) { Phone phone= new Phone(“Huawei ”,0.3); }
|
非法访问 私有
封装指的是将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元的机制。
目的:
隐藏一个类的实现细节
防止对封装数据的未经授权的访问
有利于保证数据的完整性
便于修改,增强代码的可维护性
: public class Phone{ public int weight; } public class PhoneTest{ public static void main(String args[]){ Phone phone = new Phone(); phone.weight= -1000; } } } |
this 关键字
访问成员变量的方式 |