数组

1、数组的特点
1.其长度是确定的,数组一旦被创建,它的大小就是不可改变的
2.其元素必须相同类型,不允许出现混合类型
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
2、创建数组
创建数组格式:数据类型[] 数组名 = new 数据类型[数组长度];
静态化初始数组:初始化数组时就已经每个数组赋值int [] a = {1,2,3,4,5};  //静态化初始数组Man [] mans = {new Man(),new Man()};//静态初始化数组,可存储任意类型包括类
动态化初始数组:初始化数组时,定义好了数组的大小(初始化后数组大小不可变化)int [] a = new int [5];  //创建大小为5的数组int num=1;for(int i=0;i<a.length;i++){    //使用for循环对a数组进行赋值a[i]=num; //每次循环给数组a赋值num++;}
3、数组边界
数组下标合法区间:[0,length-1],如果越界就会出现异常public static void main(String [] args){int[] a = new int [2];    //数组长度为2System.out.println(a[2]);   //异常,因为a[2]相当于数组中的第3个值}
ArrayIndexOutOfBoundsException:数组下标越界异常,常出现的异常类型
4、数组的使用
foreach循环:主要用于遍历数组和集合public static void main(String [] args){int[] arrs = {1,2,3,4,5};for(int array : arrs){ //foreach遍历数组System.out.print(array+"\t");}}
数组也可以作为形参传入,方法的返回值类型也可以是数组
5、多维数组
静态创建多维数组:int[][] arr = {{1,2},{2,3}};    //二维数组for(int[] each : arr){    //使用foreach遍历二维数组for(int i : each){System.out.print(i+"\t");}System.out.println(); }
动态创建多维数组:int[][] arr2 = new int[2][2];  //创建一个二维数组for(int i=0;i<arr.length;i++){  //for循环赋值for(int j=0;i<arr[i].length;j++){arr2[i][j] = i;}}
6、Arrays类
Arrays常用类使用:public static void main(String[] args) {//copyOfRange数组复制   copyOfRange(源数组,开始下标,结束下标);int[][] a = {{1,2},{3,4}};int[][] b = Arrays.copyOfRange(a,0,1);for (int[] i : b){for (int j : i){System.out.println(j);}}//equals数组值队比是否相同int[] a1 = {1,2,3,4};int[] b1 = {1,2,3,4};System.out.println(Arrays.equals(a1,b1));   //equals:true//binarySearch指定范围搜索特定值 Arrays.binarySearch(查找的数组,开始值,结束值,查找的key);int[] a2 = {1,2,3,4,33,6,3};int i = Arrays.binarySearch(a2, 0,5,2);System.out.println(i);//sort数组排序int[] a3 = {1,3,2,534,634,72};Arrays.sort(a3);    //对数组进行排序System.out.println(Arrays.toString(a3));//fill数组填充 Arrays.fill(填充的数组,开始值,结束值,填充的key);int[] a4 = new int[5];Arrays.fill(a4,1,5,6);a4[0] = 1;System.out.println(Arrays.toString(a4));}

面向对象

1、类与方法
1.对象是类的实例化,类就是对象的抽象。
2.类的组成:属性(成员变量)、方法、构造方法(用于创建对象)public class Dog(){String name;  //属性//修饰符 类名([形参]){}public Dog(){System.out.println("无参构造方法");}public void eat(){System.out.println("方法");}}
3.this和super关键字:this是指当前对象,super指父类public class Animal{String name = "动物";}class Dog{String name = "小狗";public void getName(){System.out.println(this.name);    //小狗System.out.println(super.name); //动物}public static void main(String[] args{Dog dog = new Dog();dog.getName();}                  }
4.staic关键字:变量:static修饰的变量为静态变量,是所有对象共享的变量方法:静态方法属于类,不属于对象,静态方法只可以调用静态变量代码块:类加载完后是最早加载的
5.final关键字:变量:final修饰的变量为常量,初始化后不可再更改方法:final修饰的方法不可被继承
2、三大特性
封装:属性私有,get/set方法。高内聚,低耦合用处:1.提高程序的安全性,保护数据2.隐藏代码实现细节3.统一接口4.增加系统可维护性public class Test{private String name;public String getName(){   //get方法return name;}public void setName(String name){ //set方法this.name = name;}}
继承:使用extends继承父类,子类继承父类的所有非私有的方法和属性1.重写:父类和子类同时拥有此方法时,就是方法的重写2.在未指定父类时,所有的类的父类都是Object类public class Animal{String name;public void eat(){System.out.println("动物吃东西!");}public void walk(){System.out.println("动物行走");}}class Dog extends Animal{public void walk(){       // 子类重写父类的walk()方法System.out.println("狗行走");}public static void main(String[] args){Dog dog = new Dog();dog.name = "大黄";  //子类继承父类的属性dog.eat();   //子类继承父类的方法dog.walk();  //子类重写父类的方法,优先调用子类重写的方法}}
多态:一种定义,多种实现1.实现多态必须满足继承关系、方法重写、父类的引用子类的实例: Person s = new Student();2.可以调用没有重写的父类方法,重写方法时调用子类的方法,不可以调用子类特有的方法。Public class Person{public void eat(){System.out.println("人类吃东西");}public void sleep(){System.out.println("人类睡觉");}}class Student extends Person{public void eat(){      //重写eat()方法System.out.println("学生吃东西");}public void walk(){       //子类特有方法System.out.println("学生走路");}public static void main(String[] args){Person s = new Student();s.eat(); //调用子类重写方法s.sleep();    //调用父类的方法s.walk();  //错误!不可以调用子类特有的方法}}
3、抽象类与接口
1.抽象类:abstract修饰的类和方法为抽象类、抽象方法,抽线类的抽象方法必须由子类进行实现。抽象类可以写抽象方法和非抽象方法。public abstract class Animal{   //抽象类public abstract void eat();    //抽象方法,由子类实现即可}class Dog extends Animal{public void eat(){System.out.println("狗吃东西");  //实现父类的抽象方法}}
2.接口:与抽象类的的区别:接口可以实现多继承,接口只可以写抽象方法,不能写实现。实现类必须重写抽象方法。public interface UserService{  //interface修饰的为接口void add(String name);     //接口的方法为抽象方法,不可以实现void delete(String name);void update(String name);void query(String name);}public class Test implements{   //implements继承接口public void add(String name){}  //实现接口的抽象方法public void delete(String name){}public void update(String name){}public void query(String name){}}

JavaSE面向对象-笔记相关推荐

  1. 我的javaSE学习笔记

    layout: post title: "我的JAVASE自学笔记" date: 2019-05-18 20:23:25 +0800 我的JAVASE自学笔记 作者:吴甜甜 个人博 ...

  2. JavaSE回顾笔记Ⅲ

    JavaSE回顾笔记Ⅲ ​ 前言,,懒得写了,去看2吧,开头有几句废话. ​ day13和上一个重复,是因为这一个是完全自学的一个章节,因为并没什么用,但是很感兴趣就简单看了一下.因为强迫症,不想向后 ...

  3. JavaSE自学笔记013_Real(抽象类、接口、两种设计模式)

    JavaSE自学笔记013_Real(抽象类.接口) 一.基本概述 (一)抽象类(关键字:abstract) //抽象方法 public abstract class Animal{abstract ...

  4. 【JavaSE学习笔记】

    JavaSE学习笔记 一.java的基本语法 变量运算规则 编码情况1中l后面没有加L,默认是int变量 编码情况2中b1=b+1中的1默认是int型变量,会出错 string类型 string里面可 ...

  5. JavaSE学习笔记(持续更新)

    这里写目录标题 JavaSE学习笔记(持续更新) Java跨平台原理与核心机制 1.跨平台原理: 2.两种核心机制: JDK11的安装流程 Java程序开发的三个步骤(无编辑器版) Eclipse安装 ...

  6. 重拾JavaSE学习笔记

    重拾JavaSE学习笔记 1.常用DOS命令 2.了解Java 2.1 .java特性 2.2.JDK .JRE.JVM 2.3.java的加载和执行 3.开发环境搭建 3.1.安装jdk 3.2.配 ...

  7. JavaSE学习笔记(一)基础知识

    本章包含内容有: java环境配置.注释.标识符.数据类型.类型转换.变量.常量.运算符.包机制.顺序结构.选择结构.循环结构.方法的定义和调用.命令行传参.可变参数. 点击这里查看更多JavaSE的 ...

  8. JavaSE自学笔记016_Real(多线程)

    JavaSE自学笔记016_Real(多线程) 一.进程与线程 1.进程 一个正在执行中的程序叫做一个进程.系统会为了这个进程发配独立的[内存资源],进程是程序的依次执行过程,他有着自己独立的生命周期 ...

  9. JavaSE基础笔记——常用API、Lambda、常见算法

    日期与时间 时间日期是在任何一个程序系统里几乎都不可能忽略掉的数据量,而且大量的算法在底层都会使用到时间日期数据值作为算法的基本种子(随机数算法或加密算法都经常用到). 计算机里,时间日期的本质 作为 ...

最新文章

  1. php+管道+pipe管道,C++ 匿名管道执行DOS命令
  2. 交换机的MAC地址作用
  3. spring mvc logback
  4. json map java_Java:JSON和Map相互转换
  5. Python和Flask真强大:不能错过的15篇技术热文(转载)
  6. 如何设置并使用运行在远程服务器上jupyter notebook
  7. ubuntu服务器系统不识别,U盘安装16.04server版 安装好后重启 无法进入系统
  8. 终于把所有的Python库,都整理出来啦!
  9. 【转载】为什么用交叉线而不是直通线连接相同的设备
  10. 拍牌(沪牌)软件编写ideal(C#)------序
  11. Unity 资源管理插件
  12. linux下root权限管理账号
  13. mysql 5.6 安装库_MySQL5.6安装步骤图文详解
  14. Planting Trees Day 植树节 一起去种树
  15. 逻辑地址与物理地址的转换
  16. .c和.h文件的区别
  17. 谷歌chrome安卓版_新型搜索多功能框 谷歌安卓版Chrome正在测试
  18. mac下使用realpath命令
  19. 仙人掌之歌——金秋十月(2)
  20. Gradle 库依赖关系的管理

热门文章

  1. Linux重启提示A stop job is running for ...
  2. ST环境进行测试时,事前需要考虑的问题
  3. HTML中,TextArea的换行问题(添加wrap属性)。
  4. 【Python-2.7】删除空格
  5. CSS兼容性问题的解决方式(更新中···)
  6. eurekaAutoServiceRegistration 异常
  7. Consul 服务注册与发现一站式解决方案
  8. zookeeper 异常 :stat is not executed because it is not in the whitelist. Connection closed b
  9. 解决Linux下pcieport 0000:00:1c.5问题导致的系统根目录/磁盘空间不足
  10. Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案