JavaSE学习总结第06天_Java语言基础2 & 面向对象1
06.01 二维数组概述和格式1的讲解
二维数组概述:二维数组其实就是一个元素为一维数组的数组
格式1:数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数
例:int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取,表示获取第m+1个一维数组的第n+1个元素
格式1还可以写成int arr[][]; int[] arr[]; 但是都不建议
注意:
int x,y; 表示同时定义两个int型的变量x、y
int[] x,y[]; 表示定义了一个一维数组x,一个二维数组y
例:
//定义一个二维数组,有3个一维数组,每个
//一维数组有2个元素
int[][] arr = new int[3][2]; //输出二维数组名称
System.out.println(arr); //[[I@1175422 //输出二维数组的第1个元素一维数组的名称
System.out.println(arr[0]); //[I@949f69 //输出二维数组的元素
System.out.println(arr[0][0]); //
06.02 二维数组格式1的内存图解
06.03 二维数组格式2的讲解
格式2:数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组,但没有直接给出一维数组的元素个数,可以动态的给出
例:
int[][] arr = new int[3][]; //定义一个有3个一维数组的二维数组
arr[0] = new int[2]; //第1个一维数组有2个元素
arr[1] = new int[3]; //第2个一维数组有3个元素
arr[2] = new int[1]; //第3个一维数组有1个元素
例:
class Demo
{
public static void main(String[] args)
{
int[][] arr = new int[3][]; System.out.println(arr); //[[I@1175422
System.out.println(arr[0]); //null //动态的为每一个一维数组分配空间
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[1]; System.out.println(arr[0]); //[I@949f69
System.out.println(arr[0][0]); // arr[1][0] = 100;
arr[2][0] = 200;
}
}
06.04 二维数组格式2的内存图解
06.05 二维数组格式3的讲解
格式3:数据类型[][] 变量名 = new 数据类型[][]{{元素...},{元素...},{元素...}};
简化版格式:数据类型[][] 变量名 = {{元素...},{元素...},{元素...}};
例:int[][] arr = {{1,2,3},{4,5},{6}};
06.06 二维数组格式3的内存图解
06.07 二维数组练习1遍历
二维数组遍历
class Demo
{
public static void main(String[] args)
{
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
//外循环控制的是二维数组的长度,其实就是一维数组的个数
for(int i = 0;i < arr.length;i++)
{
//内循环控制的一维数组的长度
for(int j = 0;j < arr[i].length;j++)
{
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
06.08 二维数组练习2求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,67,43
第二季度:77,33,88
第三季度:25,43,65
第四季度:11,66,99
class Demo
{
public static void main(String[] args)
{
//将题目的数据用二维数据表示
int[][] arr = {{22,67,43},{77,33,88},{25,43,65},{11,66,99}}; //定义一个求和变量
int sum = 0;
//遍历二维数组
for(int i = 0;i < arr.length;i++)
{
System.out.print("第"+(i+1)+"季度分别为:");
for(int j = 0;j < arr[i].length;j++)
{
System.out.print(arr[i][j]+"万 ");
sum += arr[i][j];
}
System.out.println();
}
System.out.println("总和为:"+sum+"万元");
}
}
运行结果:
第1季度分别为:22万 67万 43万
第2季度分别为:77万 33万 88万
第3季度分别为:25万 43万 65万
第4季度分别为:11万 66万 99万
总和为:639万元
06.09 二维数组练习3杨辉三角
打印杨辉三角形(行数可以键盘录入)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数:");
int n = sc.nextInt(); //根据键盘录入的数据创建一个二维数组
int[][] arr = new int[n][n]; //给二维数组的任何一行的第一列和最后一列赋值为1
for(int i = 0;i < arr.length;i++)
{
arr[i][0] = 1; //任何一行第一列
arr[i][i] = 1; //任何一行最后一列
} for(int i = 2;i < arr.length;i++)
{
for(int j = 1;j <= i-1; j++)
{
//每一个数据是它上一行的前一列和它上一行的本列之和
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
} //遍历二维数组
for(int i = 0;i < arr.length;i++)
{
for(int j = 0;j <= i;j++)
{
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
06.10 思考题1Java中的参数传递问题
class Demo
{
public static void main(String[] args)
{
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a:10,b:20
change(a,b);
System.out.println("a:"+a+",b:"+b); //a:10,b:20 int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //
}
public static void change(int a,int b)
{
System.out.println("a:"+a+",b:"+b); //a:10,b:20
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b); //a:20,b:40
} public static void change(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
}
Java中的参数传递问题:
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
06.11 思考题2加密问题的分析
数据加密问题
某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。
如输入123456 输出609871
分析:
1.数据是小于8位的整数,可以定义一个int类型的数据
2.加密规则
a:首先将数据倒序
b:然后将每位数字都加上5,再用和除以10的余数代替该数字
c:最后将第一位和最后一位数字交换
3.把加密后的结果输出在控制台
通过分析,需要将数据变成数组
1.定义一个数据
2.定义一个数组,int[] arr = new int[8]; //不可能超过8
在赋值的时候,用一个变量记录索引的变化。
3.获取每一个数据
int ge = number%10
int shi = number/10%10
int bai = number/100%10
06.12 思考题2加密问题的代码的实现
class Demo
{
public static void main(String[] args)
{
//定义一个数据
int num = 123456;
//定义一个数组
int[] arr = new int[8];
//获取数据中的每一位数据存储到数组中
int index = 0;
while(num > 0)
{
arr[index] = num % 10;
index++;
num /= 10;
} for(int i = 0;i < index ;i++)
{
arr[i] += 5;
arr[i] %= 10;
} int temp = arr[0];
arr[0] = arr[index - 1];
arr[index - 1] = temp; for(int i = 0;i < index;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
06.13 思考题2加密问题的代码改进
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("原始数据:");
int num = sc.nextInt();
//定义一个数组
int[] arr = new int[8];
//获取数据中的每一位数据存储到数组中
int index = 0;
while(num > 0)
{
arr[index] = num % 10;
index++;
num /= 10;
} for(int i = 0;i < index ;i++)
{
arr[i] += 5;
arr[i] %= 10;
} int temp = arr[0];
arr[0] = arr[index - 1];
arr[index - 1] = temp; System.out.print("加密数据:");
for(int i = 0;i < index;i++)
{
System.out.print(arr[i]);
}
System.out.println();
}
}
06.14 思想引入和面向过程思想概述
通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类来封装这多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。这就是面向对象思想的编程方式。
面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
面向过程的代表语言:C语言
06.15 面向对象思想概述
面向对象思想概述:面向对象是基于面向过程的编程思想
面向过程:对于面向过程思想,强调的是过程(动作)。例如C语言就是面向过程语言
面向对象:对于面向对象思想,强调的是对象(实体)。例如C++ 、Java 、C#就是面向对象的语言
面向对象思想特点:
1.面向对象是一种常见的思想,符合人们的思考习惯
2.面向对象的出现,将复杂的问题简单化
3.面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者
06.16 大象装进冰箱案例
把大象装进冰箱
面向过程:动作
1:打开冰箱门
2:装进大象
3:关闭冰箱门
面向对象:在用面向对象思想体现的时候,给出一个三句话使用规则,让我们更符合面向对象思想
1.有哪些类
2.每个类有哪些东西
3.类与类直接的关系是什么
把大象装进冰箱的分析(如何分析有哪些类呢?UML。名词提取法。)
1.有哪些类:大象、冰箱、Demo
2.每个类有哪些东西:[大象:进去]、[冰箱:开门关门]、[Demo:main方法]
3.类与类直接的关系:Demo中使用大象和冰箱类的功能
06.17 开发,设计以及特征
面向对象开发:就是不断的创建对象,使用对象,指挥对象做事情。
面向对象设计:就是在管理和维护对象之间的关系。
面向对象特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
06.18 类与对象
如何表示一个现实世界事物:
属性就是该事物的描述信息
行为就是该事物能够做什么
我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现
事物的属性与行为在类中对应成员变量与成员方法
类是一组相关的属性和行为的集合
对象是该类事物的具体体现
类是抽象的,概念的,代表一类事物,例如人类、猫类
对象是具体的,实际的,代表一个具体的事物
类是事物的描述,对象是该类事物的实例,在java中通过new创建
06.19 类的定义概述
类与对象的关系图:
上图中图纸就是类,每一个汽车就是对象
现实世界的事物
属性人的身高,体重等
行为人可以学习,吃饭等
Java中用class描述事物也是如此
成员变量就是事物的属性
成员方法就是事物的行为
定义类其实就是定义类的成员(成员变量和成员方法)
06.20 学生类的定义
如何定义学生类
按照事物到类的过程一步步分析
学生事物:
属性:姓名,年龄,地址...
行为:学习,吃饭,睡觉...
把事物要转换为对应的类:
学生类:
成员变量:姓名,年龄,地址...
成员方法:学习,吃饭,睡觉...
class Student
{
//定义变量
//姓名
String name;
//年龄
int age;
//地址
String address; //定义方法
//学习的方法
public void study()
{
System.out.println("学生爱学习");
} //吃饭的方法
public void eat()
{
System.out.println("学习饿了,要吃饭");
} //睡觉的方法
public void sleep()
{
System.out.println("学习累了,要睡觉");
}
}
06.21 手机类的定义
手机事物:
属性:品牌,价格,颜色...
行为:打电话,发短信,玩游戏...
手机类:
成员变量:品牌,价格,颜色
成员方法:打电话,发短信,玩游戏
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("玩游戏");
}
}
06.22 学生类的使用
创建对象:类名对象名 = new 类名();
使用成员变量:对象名.成员变量
使用成员方法:对象名.成员方法
class Demo
{
public static void main(String[] args)
{
Student s = new Student();
System.out.println(s.name+".."+s.age+".."+s.address);
//给成员变量赋值
s.name = "小明";
s.age = 25;
s.address = "上海"; System.out.println(s.name+".."+s.age+".."+s.address);
//调用方法
s.study();
}
} class Student
{
//定义变量
//姓名
String name;
//年龄
int age;
//地址
String address; //定义方法
//学习的方法
public void study()
{
System.out.println("学生爱学习");
} //吃饭的方法
public void eat()
{
System.out.println("学习饿了,要吃饭");
} //睡觉的方法
public void sleep()
{
System.out.println("学习累了,要睡觉");
}
}
运行结果:
null..0..null
小明..25..上海
学生爱学习
06.23 手机类的使用
class Demo
{
public static void main(String[] args)
{
Phone p = new Phone();
System.out.println(p.brand+"..."+p.price+"..."+p.color);
//给成员变量赋值
p.brand = "诺基亚";
p.price = 450;
p.color = "黑色";
System.out.println(p.brand+"..."+p.price+"..."+p.color); //调用成员方法
p.call("小明");
}
} 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("玩游戏");
}
}
运行结果:
null...0...null
诺基亚...450...黑色
给小明打电话
06.24 一个对象的内存图
例:
class Demo
{
public static void main(String[] args)
{
Phone p = new Phone();
System.out.println(p.brand+"..."+p.price+"..."+p.color); p.brand = "诺基亚";
p.price = 450;
p.color = "黑色";
System.out.println(p.brand+"..."+p.price+"..."+p.color); p.call("小明");
}
} class Phone
{
String brand;
int price;
String color; public void call(String name)
{
System.out.println("给"+name+"打电话");
}
}
06.25 二个对象的内存图
例:
class Demo
{
public static void main(String[] args)
{
Phone p1 = new Phone();
p1.brand = "诺基亚";
p1.price = 450;
p1.color = "黑色";
System.out.println(p1.brand+"..."+p1.price+"..."+p1.color);
p1.call("小明"); Phone p2 = new Phone();
p2.brand = "小米";
p2.price = 1699;
p2.color = "白色";
System.out.println(p2.brand+"..."+p2.price+"..."+p2.color); p2.call("旺财");
}
} class Phone
{
String brand;
int price;
String color; public void call(String name)
{
System.out.println("给"+name+"打电话");
}
}
06.26 三个对象的内存图
例:
class Demo
{
public static void main(String[] args)
{
Phone p1 = new Phone();
p1.brand = "诺基亚";
p1.price = 450;
p1.color = "黑色";
System.out.println(p1.brand+"..."+p1.price+"..."+p1.color); Phone p2 = new Phone();
p2.brand = "小米";
p2.price = 1699;
p2.color = "白色";
System.out.println(p2.brand+"..."+p2.price+"..."+p2.color); Phone p3 = p1;
System.out.println(p3.brand+"..."+p3.price+"..."+p3.color);
p3.brand = "魅族";
p3.price = 2999;
p3.color = "金色";
System.out.println(p1.brand+"..."+p1.price+"..."+p1.color);
}
} class Phone
{
String brand;
int price;
String color; public void call(String name)
{
System.out.println("给"+name+"打电话");
}
}
JavaSE学习总结第06天_Java语言基础2 & 面向对象1的更多相关文章
- JavaSE学习总结第05天_Java语言基础1
05.01 方法概述和格式说明 简单的说:方法就是完成特定功能的代码块 在很多语言里面都有函数的定义,函数在Java中被称为方法 格式: 修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2 ...
- JavaSE学习总结(二)——Java语言基础
一.Java程序预览 Java的语法与C非常类似,这里先使用几个非常简单的程序以点带面来区分C语Java的区分再细讲每个知识点.该文仅针对有编程基础的朋友参考. 1.1.Hello World 创建j ...
- 2018.3.5 Java语言基础与面向对象编程实践
Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- JavaSE学习总结第01天_Java概述
01.01 计算机概述 计算机(Computer):全称电子计算机,俗称电脑. 是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 由硬件和软件所组成,没有安装任何软件的计算机称 ...
- JavaSE学习总结第02天_Java基础语法1
02.01 关键字的概述和使用 关键字概述:被Java语言赋予特定含义的单词 关键字特点:组成关键字的字母全部小写 关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notep ...
- JavaSE学习总结第03天_Java基础语法2
03.01 数据类型中补充的几个小问题 1:在定义Long或者Float类型变量的时候,要加L或者f. 整数默认是int类型,浮点数默认是double. byte,short在定义的时候, ...
- JavaSE学习总结第04天_Java基础语法3
04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) { case 值1:语句体1;break; case 值2:语句体2;break; ...
- JavaSE学习总结(三)——Java语言编程练习、格式化字符与常量
一.变量.常量.字面量 package com.zhangguo.chapter2_3; /** * 1.银行利率为5%,问存款100美元5年的收益细节? * */ public class P1 { ...
随机推荐
- Radio Checkbox Select 操作
一个小总结 <!DOCTYPE html> <html> <head> <meta name="description" content= ...
- QTableView的表格项中加入图标的方法(重载View::mouseMoveEvent,并使用View::setIconSize函数设置图标的大小)
当在使用表格视图的时候,需要在表格每一行前面加入图标,应该怎么做呢?Qt中通过使用MVC的处理方式,很容易做到这一点,具体实现如下: 先贴出图,让大家一睹为快 下面我就来介绍一下,上图的灯泡是怎么实现 ...
- QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开 ...
- css vertical-align全解
CSS 的属性 vertical-align 指定了内联(inline)元素或表格单元格(table-cell)元素的垂直对齐方式. 要记住:vertical-align不影响块级元素中内容的对齐. ...
- HDU 3507 Print Article(CDQ分治+分治DP)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3507 [题目大意] 将长度为n的数列分段,最小化每段和的平方和. [题解] 根据题目很容易得到dp ...
- 贪吃蛇AI
贪吃蛇AI 作者:CodeNoob 转载请标明作者和出处 序言 前几天在网上看到一张让人涨姿势的图片,这张图片我很早以前看过,当时就觉得肯定是程序实现的,只是当时还比较渣,不会算法.这次学了java也 ...
- 联想S720/S720i通刷刷机包 Vibe V1.0
ROM介绍 基于官方最新S116底包制作,保证足够的稳定性. 增加VIBE元素,看起来更加大气.美观. 首次增加VIBE元素,720i执行起来无压力,720可能会有点卡.自行酌情刷入. 有bug请文明 ...
- zoj 1184
硬币称重,经典,1.若被判平,左右所有硬币必正常:2.若判轻或判重,对应硬币被判轻-1.重记数+1:3.只有球只被判轻或判重,且次数跟天平不平衡次数相等,该球才能是坏的,否则必然是好的.且>0的 ...
- C#多线程及GDI(Day 23)
又来到了总结知识的时间了,今天又学了一些新的知识,是多线程和GDI的一些运用. 理论: 在学习多线程之前,首先要了解一下什么是进程? 进程:(关键字Process)进程是一个具有一定独立功能的程 ...
- UVa202 Repeating Decimals
#include <stdio.h>#include <map>using namespace std; int main(){ int a, b, c, q, r, p ...