7.封装与面向对象

a.方法:

public static void main(String[] args) {

}

一般定义标准:

形参:一般把 不确定的量或者变化的量定义在形参位置//圆的的半径,长方形的长和宽,传递的数组也是不确定的

返回值类型:将运算后的结果类型作为返回值类型//圆的周长,圆的面积,返回数组某个元素

public static int getArea(int width,int length){

return width * length

}

public static String getEle(String[] arr){

return arr[arr.length/2];

}

1.

public static void main(String[] args) {

int i=3;

method1(i);//相当于method1(3);基本类型只传值,形参的改变不会影响实参

System.out.println(i);

}

public void method1(int i){

i+=3;

}

2.

public static void main(String[] args) {

int[] arr={1,2,3,4}

method2(arr);

}

public void method2(int[] arr2){//int[] arr2=arr; 拷贝一份钥匙,把arr的地址值给了arr2,arr和arr2指向同一个数组空间

//方法中对arr2中的元素做的操作影响arr

}

3.

public static void main(String[] args) {

ArrayList<String> al=new ArrayList<String>();

al.add("3");

al.add("4");

al.add("5");

method3(al);

}

public void method3(ArrayList<String> al2){ //ArrayList<String> al2=al; al和al2都使用的是一个集合

//方法中对集合中元素所做的操作都会影响al

}

b.面向对象:封装

class Goods{

private String goodsName;//private在成员上使用后,该属性不能在类外通过 对象.属性直接访问

//为了保证属性的赋值正确性,例如:价格不能赋负数值

private double goodsPrice;

public Goods(){//空参构造,如果不写任何构造函数,默认有

}

public Goods(String goodsName,double goodsPrice){

this.goodsName=goodsName;

this.goodsPrice=goodsPrice;

}

public String getGoodsName(){

return goodsName;

}

public void setGoodsName(String goodsName){

//goodsName=goodsName;//局部变量=局部变量

this.goodsName=goodsName;//this为了区分成员变量和局部变量重名

}

public double getGoodsPrice(){

return goodsPrice;

}

public void setGoodsName(double goodsPrice){

//goodsName=goodsName;//局部变量=局部变量

if(goodsPrice<0){//保证程序的健壮性

System.out.println("亲爱的小用户,商品价格不能负值啊!!");

return;

}

this.goodsPrice=goodsPrice;//this为了区分成员变量和局部变量重名

}

}

public static void main(String[] args) {

//1.新建一个对象

Goods g=new Goods("澳洲小龙虾",300);//会找对应参数的构造方法,为成员变量赋值

String goodsName=g.getGoodsName();

String goodsPrice=g.getGoodsPrice();

g.setGoodsName("澳洲帝王虾");//此时setGoodsName()方法中的this代表的是g引用指向的对象(澳洲帝王虾)

//相当于this=g;

String goodsName=g.getGoodsName();

}

8.字符串操作相关类(会查API)

a.String 类

转换功能:

1.字符数组<->字符串

String(char[] char)

char[] toCharArray()

2.大小写转换

toUpperCase()

toLowerCase()

判断功能:

1.equals(字符串):比较两个字符串的内容相同,例如:用户名比较,密码与重复密码比较

2.euqalsIgnoreCase():比较两个字符串忽略大小写,例如:验证码

3.contains(String str):判断该字符串是否包含指定的子串(字符串中相邻的字符组成)

4.startsWith(String str):筛选指定的姓氏//以张,欧阳...

5.endsWith(String str):筛选指定的文件后缀名//以.txt结尾,以.torrent结尾

获取功能:

1.charAt(int index)//获取指定的索引的字符,对单个字符操作

2.indexOf(String str)//返回指定字符串的首字符的索引,如果没有返回-1

3.lastIndexOf(String str)//倒着查找,以第一次找到为准,返回的正着查找的索引,没找到也返回-1 例如:截取文件的名字(不包含扩展名)

4.substring(int start,int end)//截取的范围[start,end-1]的字符

其它功能:

1.trim()//去掉字符串两端空格//例如用户名

2.String[] split()//我们一般以,和空格作为分割符,来切割这个字符串

3.byt[] getBytes : 把字符串按照一定的编码表转换成字节数组

4."\r\n".getBytes : 表示换行.

b.StringBuilder:请看上面

9.文件操作相关类

1.向文本文件中写一个字符串:FileWriter/BufferedWriter:write(String str)

2.读取文本中的一个字符:FileReader:read()

一次读取一个字符数组:char[] ch=new char[1024]

FileReader:int length=read(char[] ch)//把数据读取到字符数组中

//代表读取到的有效的字符个数

3.一次读取一行:BufferedReaer:readLine()//不包含换行符,读到末尾返回null

4.一次写一个换行符:BufferedWriter:newLine()//该方法跨平台,会根据不同的平台选用不同的换行符

5.文件拷贝的五种方式(下去练下)

close() : 通知系统释放和该文件有关资源.

close()和flush()方法的区别:

flush() : 刷新缓冲区.流对象可以继续使用.

close() : 先刷新缓冲区,通知系统释放资源,流对象不可以在了.

关键字static : 是用类修饰成员变量和成员方法.

10.static的特点:

1.被所有的对象所共享.

2.可以使用类名调用.

3.静态的加载优先于对象

4.随着类的加载而加载.

static的注意事项:

优先于对象,随着类的加载而加载,它优先于任何对象,所有它没有对象.

静态方法:

可以调用静态的成员变量.

可以调用静态的成员方法.

不可以调用非静态成员方法.

不可以调用非静态成员变量.

静态方法只能调用静态的成员.

非静态方法:

可以调用静态的成员变量,成员方法.

可以调用非静态的成员变量,非静态的成员方法.

静态的优缺点:

A:静态的优点:

1.对对象的共享数据提供单独空间存储,节省空间.

2.可以直接被类名调用,不用再堆内存创建对象

3.通过类名访问,相对创建对象访问成员方便.

B:缺点:

访问出现局限性(只能被静态访问);

应用:

Math类是数学操作常用类,类中所有成员都被静态修饰,因此可以直接通过类名访问.

Math包含了一些基本的运算方法

static double PI;

static double abs(double a) : 返回绝对值

static double ceil(double a) : 向上取整

static double floor(double a) : 向下取整

static double round(double a) : 四舍五入

static long max(double a,double b) : 返回两个double值中较大的一个(min方法一样);

static double pow(double a,double b) : 返回第一个参数的第二个参数次幂.

static double random() : 返回一个随机数大于零且小于一

java基础第四篇之面向对象的更多相关文章

  1. Java 学习 第四篇;面向对象(1)

    1:关于继承为了保证父类的良好封装性,不会被子类随意改变,设计父类时通常隐藏父类的内部数据,把父类属性改为private如果父类中可以被重写,但不希望被其他类自由访问可用protected修饰;2:什 ...

  2. Java基础2-容器篇

    java基础2-容器篇 1.页首请关注 思维导航大纲 1.常用容器的类型层次结构 2.理解容器的常用思维大纲 a.空间 时间 concurrentModifyException 加载因子 3.常用类源 ...

  3. Java实习生常规技术面试题每日十题Java基础(四)

    目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...

  4. JAVA基础第四章-集合框架Collection篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. Java 基础(四)| IO 流之使用文件流的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景 ...

  6. Java基础之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  7. 【JAVA并发第四篇】线程安全

    1.线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题. 线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题.这里说的共享变量,是指多个线程 ...

  8. Java基础(四)——抽象类和接口

    一.抽象类 1.介绍 使用关键字 abstract 定义抽象类. abstract定义抽象方法,只有声明,不用实现. 包含抽象方法的类必须定义为抽象类. 抽象类中可以有普通方法,也可以有抽象方法. 抽 ...

  9. for、while循环(java基础知识四)

    1.循环结构概述和for语句的格式及其使用 * 什么是循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把 ...

随机推荐

  1. glViewport()函数和glOrtho()函数的理解(转)

    转:http://www.cnblogs.com/yxnchinahlj/archive/2010/10/30/1865298.html 摘要:glOrtho相当指定图框的大小,由此会使得图框里的图形 ...

  2. array_1.array_map

    note: 为数组的每个元素应用回调函数 <?php $arr = [1, 2, 3]; $arr1 = array_map( function ($value) { return $value ...

  3. Linux下安装二进制版mysql-8.0.15

    1.添加用户## 添加用户组groupadd mysql## 添加用户,指定用户home目录useradd -g mysql mysql -d /data/mysql## 解压下载的mysql二进制包 ...

  4. Early Media and Music on Hold

    Early media refers to any media that is played to the initial caller’s phone before the remote party ...

  5. hyperledger fabric学习(1)

    第一部分 环境搭建 说明 本次环境搭建是是现在虚拟机中,采用ubuntu 16.04版本,安装多次成功. 首先安装一些常用的工具 sudo apt-get update sudo apt-get in ...

  6. CDH5.12.1 安装部署

    ###通过http://192.168.50.200:7180/cmf/login 访问CM控制台 4.CDH安装 4.1CDH集群安装向导 1.admin/admin登陆到CM 2.同意licens ...

  7. 【LeetCode】039. Combination Sum

    题目: Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all uniq ...

  8. Java 核心读书笔记 第11章

    1. 异常 用户希望在出现错误时,程序能够采用一些理智的行为. 如果由于出现错误而使得某些操作无法完成,程序应该:  返回到一种安全状态,并能够进行一些其他的命令: 或者:允许用于保存所有操作的结果, ...

  9. JQuery Mobile+cordova构建一个Android项目

    1.安装Android开发环境     Android开发环境的安装,现在主要是由于不能访问谷歌站点,在windows下在host文件中添加一个对应的74.125.195.190 dl-ssl.goo ...

  10. TCP 登录实现代码

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...