华清远见嵌入式学习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方法调用  

华清远见嵌入式学习day40——Java基础_第1张图片

 

/*

需求:两个数中的较大值

两个明确:

返回值类型: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]);

    }

}

 

 

  • 内存图解
  • 华清远见嵌入式学习day40——Java基础_第2张图片
  • String 内存图解 
  • 遍历数组  

 

 方法版本

public static void printArray2(int[] arr) {

System.out.print("[");

for(int x=0; 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

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()

   参数: 

    1. src - 源数组。
    2. srcPos - 源数组中的起始位置。
    3. dest - 目标数组。
    4. destPos - 目标数据中的起始位置。
    5. 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”);

}

}

 

 

  • /*
  • 手机事物:
  • 属性:品牌,价格,颜色...
  • 行为:打电话,发短信,玩游戏...
  •  
  • 手机类:
  • 成员变量:品牌,价格,颜色
  • 成员方法:打电话,发短信,玩游戏
  • */
  • class Phone {
  • //品牌
  • String brand;
  • //价格
  • int price;
  • //颜色
  • String color;
  •  
  • //打电话的方法
  • public void call(String name) {
  • System.out.println("给"+name+"打电话");
  • }
  •  
  • //发短信的方法
  • public void sendMessage() {
  • System.out.println("群发短信");
  • }
  •  
  • //玩游戏的方法
  • public void playGame() {
  • System.out.println("玩游戏");
  • }
  • }

 

  •  成员变量 和局部变量  访问特定 就近原则

 

 

  • 创建对象来使用

 

  • 构造器(构造方法)的声明语法:
  • 访问修饰符   类名  ( 参数数据类型  参数名,…)
  • {
  • 给成员变量赋值
  • }
  • 构建器名称必须和类名称一致
  • 一个类可以有多个构造器,但这些构造器的参数列表必须不同
  • 例如:
  • 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 关键字

访问成员变量的方式

你可能感兴趣的:(华清远见嵌入式学习day40——Java基础)