java63-

方法

方法(method)是程序中最小的执行单元。

方法定义
把一些代码打包在一起,该过程称为方法定义。
方法调用
方法定义后并不是直接运行的,需要手动调用才能执行,该过程称为方法调用。

带返回值方法的调用

  1. 直接调用:
    方法名(实参);
  2. 赋值调用:
    整数类型变量名=方法名(实参)﹔
public static void main(String[] args) {}

  1. 输出调用:
    system.out.println(方法名((实参));

输出调用 赋值调用:可以显示返回值

赋值调用 最经常用到

66
81

类和对象

类(设计图)︰是对象共同特征的描述;
对象:是真实存在的具体东西。
在Java中,必须先设计类,才能获得对象。

定义类的补充注意事项

  • 用来描述一类事物的类,专业叫做:Javabean类
    在Javabean类中,是不写main方法的。
  • 在以前,编写main方法的类,叫做测试类
    我们可以在测试类中创建javabean类的对象并进行赋值调用。

  • 类名首字母建议大写,需要见名知意,驼峰模式。
  • 一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
    实际开发中建议还是一个文件定义一个class类
  • 成员变量的完整定义格式是:修饰符教据类型变量名称=初始化值;一般无需指定初始化值,存在默认值。

如何得到对象?

public class类名{
1、成员变量(代表属性的,一般是名词)
2、成员方法(代表行为的,一般是动词)
}

类名对象名=new类名();

封装

面向对象三大特征
多态
封装
继承
在这里插入图片描述

对象代表什么,就得封装对应的数据,并提供数据对应的行为
在这里插入图片描述

构造方法的格式

public class student {
修饰符类名(参数){
方法体;
}
}

public Student(){
system.out.print1n("看看我执行了吗? ");
}


public Student(String name,int age){
this.name = name;
this.age = age;
}

1.方法名与类名相同,大小写也要一致
2.没有返回值类型,连void都没有
3.没有具体的返回值(不能由retrun带回结果数据)

③推荐的使用方式
无论是否使用,都手动书写无参数构造方法,
和带全部参数的构造方法

1.构造方法的作用?

  • 创造对象的时候,由虚拟机自动调用,给成员变量进行初始化的。
    2.构造方法有几种,各自的作用是什么?
  • 无参数构造方法:初始化的对象时,成员变量的数据均采用默认值。
  • 有参数构造方法:在初始化对象的时候,同时可以为对象进行赋值。
    3.构造方法有哪些注意事项?
  • 任何类定义出来,默认就自带了无参数构造器,写不写都有。
  • 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写无参数构造器了。
  • 建议在任何时候都手动写上空参和带全部参数的构造方法

标准的javabean类

构造方法
快捷键:
alt + insert
alt + Fn + insert
在这里插入图片描述

P86
8:50
在这里插入图片描述

87三种情况的对象内存图

在这里插入图片描述

92

//第一套体系:
nextInt();接收整数
nextDouble();接收小数
next();接收字符串
//遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了

//第二套体系:
nextLine();接收字符串
可以接收空格,制表符,遇到回车才停止接受数据

Scanner sc = new Scanner( System.in);
system.out.println("请输入一个整数");
int num1 = sc.nextInt( );
system.out.println( num1);
system.out.println("请输入第二个整数");
int num2 = sc.nextInt( );
system.out.println( num2 ) ;

//2.创建汽车对象,数据来自于键盘录入
Scanner sc = new Scanner(System.in);
for (int i = e; i < arr. length; i++) {
//创建汽车的对象
car c = new Car();
//录入品牌
System.out.println("请输入汽车的品牌");
String brand = sc.next( );
c.setBrand(brand);
//录入价格
System.out.println("请输入汽车的价格");
int price = sc.nextInt( );
c.setPrice(price);
//录入颜色
System.out.println("请输入汽车的颜色");
String color = sc.next( );
c.setcolor(color);
//把汽车对象添加到数组当中arr[i] = c;
}

-API和API帮助文档

**APl:**目前是JDK中提供的各种功能的Java类。
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
**API帮助文档:**帮助开发人员更好的使用API和查询API的一个工具。

  1. String是Java定义好的一个类。定义在java.lang包中,
    所以使用的时候不需要导包。
  2. Java程序中的所有字符串文字(例如“abcdefg" )。
    都被实为此类的对象。
  3. 字符串不可变,它们的值在创建后不能被更改

-String构造方法代码:

  1. 直接赋值
    String name =“尼古拉斯·阿玮";
  2. new
构造方法说明
public string()创建空白字符串,不含任何内容
public string(String original)根据传入的字符串,创建字符串对象
public string(char[ ] chs)根据字符数组,创建字符串对象
public string(byte[] chs)根据字节数组,创建字符串对象
//传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
//需求:我要修改字符串的内容。abc  Qbc
// abc --> { 'a ' , 'b', 'c '} --> { 'Q', 'b' , 'c '} --> "Qbc"
char[] chs = i 'a','b', 'c', 'd'};
string s4 = new string(chs);
system.out.print1n(s4); //abcd

//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
//应用场景:以后在网络当中传输的数据其实都是字节信息
//
byte[] bytes = {979899,100};
string s5 = new string(bytes);
system.out.println(s5);//abcd

public class stringDemo {
public static void main( String[ ] args) {
String s1 = "abc" ;
string s2 = "abc" ;
}
}

当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。
不存在:创建新的
存在:复用

字符串的比较

字符串比较

  • boolean equals方法(要比较的字符串)
    完全一样结果才是true,否则为false
  • boolean equalslgnoreCase(要比较的字符串)
    忽略大小写的比较

截取字符串

String substring(int beginIndex, int endlndex)
截取注意点:包头不包尾,包左不包右
只有返回值才是截取的小串
String substring(int beginlndex)
截取到末尾

StringBuilder概述

StringBuilder可以看成是一个容器,创建之后里面的内容是可变的
作用:提高字符串的操作效率

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()就可以实现把StringBuilder转换为String

普及:
因为StringBuilder是Java已经写好的类java在底层对他做了一些特殊处理。
打印对象不是地址值而是属性值。

//1.创建对象
stringBuilder sb = new StringBuilder( );
//2.添加字符串
sb.append( "aaa" ) ;sb.append( "bbb" ) ;sb.append( "ccc" ) ;sb.append( "ddd" ) ;
system.out.println(sb) ; //aaabbbcccddd
//3.再把stringBuilder变回字符串
string str = sb.toString();
system.out.println(str);//aaabbbcccddd

使用stringBuilder的场景:
1.字符串的拼接
2.字符串的反转

StringJoiner

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
子符串原理小结

扩展底层原理3:字符串拼接的底层原理

如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

扩展底层原理4:StringBuilder提高效率原理图

所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

扩展底层原理5:StringBuilder源码分析
默认创建一个长度为16的字节数组
添加的内容长度小于16,直接存
添加的内容大于16会扩容(原来的容量*2+2)
如果扩容之后还不够,以实际长度为准
108-110

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值