java基础篇笔记6

JDK3的Jshell简单使用
在轻量级的操作中,可以直接使用Jshell,不用保存文件和进行编译,可以直接一步步执行。

编译器的两点优化(编译器的常量优化)
1 对于byte/short/char三种类型来说,如果右侧复制的数值没有超过范围,那么javac编译器建会自动隐含地为我们补上(byte)(short)(char)
2 在给变量进行进行赋值时,如果右侧的表达式中全都是常量没有任何变量,那么javac将会直接将这若干个计算得出结果,右侧的常量结果没有超过左侧的范围。但是一旦右侧表达式中有变量参与,那么就不能进行这种优化了。

常见API(Application Programming Interface,应用程序编程接口)文档的使用
官方有1.6的中文版API文档

scanner类的功能:可以实现键盘输入数据到程序中。
1 导包
import 包路径.类名称
只有java.lang包下的内容不需要导报,其他的包需要import语句。
2 创建
类名称 对象名=new 类名称( );
3 使用
对象名.成员方法名(参数);

scanner需要导包
import java.util.scanner;

Scanner sc =new Scanner(System.in); //System.in代表从键盘输入
int num=sc.nextin( ); //获取从键盘输入的数字
string str=sc.next( ); //获取从键盘输入的字符串

创建对象的语法:
类名称 对象名=new 类名称( );
匿名对象
就是只有右边的对象,没有左边的名字和赋值运算符
new 类名称( );
匿名对象只能使用唯一的一次,下一次就要创建新的对象。

Random类用来生成随机数字

数组的长度不可以发生改变
但是ArrayList集合的长度是可以随意变化的。

对于ArrayList来说,有一个尖括号<>代表泛型
泛型,也就是在集合当中的元素全都是统一的什么类型
注意:泛型只能是引用类型,不能是基本类型

注意事项:
对于Arraylist集合来说,直接打印得到的不是地址值,而时内容。
如果内容失控,得到的是空的中括号

ArrayList当中的常用方法:
public boolean add(E ); 向集合中添加元素,参数类型与泛型一致。返回值代表添加是否成功。
备注:对ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。
但对于其他集合来说,add添加动作不一定成功。
public E get(int index); 从集合中获取元素,参数是索引编号,返回值是对应位置的元素。
public E remove(int index); 从集合中删除元素,参数是索引编号,返回值是被删除的元素。
public int size( ); 获取集合的尺寸长度,返回值是集合中包含的元素个数。

ArrayList集合只能存放引用类型。
如果希望向ArrayList集合中存储基本类型数据,必须使用基本类型对应的“包装类”。

基本类型 包装类(引用类型,包装类位于java.lang包下)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean

从JDK1.5开始,支持自动装箱,自动拆箱。

自动装箱: 基本类型—>包装类型
自动拆箱:包装类型—>基本类型

java.lang.String类代表字符串。
API中Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
其实就是说:程序当中所有的双引号字符串,都是字符串的对象。(就算没有new也是)

字符串的特点:
1 字符串的内容不可改变;(常量)
2 正是因为字符串不可改变,所以字符串是可以共享使用的。
3 字符串效果上相当于char[ ]字符数组,但是底层原理是byte[ ]字节数组。

创建字符串的常见3+1种方式
三种构造方法:
public String( ); //创建一个空白字符串,不含有任何内容
public String(char[] array); //根据字符数组的内容来创建对应的字符串
public String(byte[] array ); //根据字节数组的内容来创建对应的字符串(用ASCII码来创建,97是a)

一种直接创建:
String str=“hello”; //右边直接双引号

注意:写上双引号就是字符串

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中

对于基本类型来说,==进行的是数值的比较。
对于引用类型来说,==进行的是【地址值】的比较。
双引号直接写的字符串在常量池中,new的不在池中。

==时进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法。

public boolean equals(Object obj); 参数可以是任意对象,只有参数是一个字符串并且内容相同才会给true,否则返回false
备注:
1 任何对象都能用Object进行接收;
2 equals方法具有对称性,也就是a.equals(b)与b.equals(a)结果相同;
3 如果比较方一个常量一个变量,推荐把常量字符串写在前面
推荐:“ABC”.equals(str) 不推荐:str.equals(“ABC”)

public boolean equalsIgnoreCase(String str); 忽略大小写进行比较
注意:只有英文字母区分大小写,其他都不区分大小写

String当中与获取有关的常用方法的有:
public int length(); 获取字符串当中含有的字符个数,拿到字符串长度
public String concat(String str) 将当前字符串和参数字符串拼接称为返回值新的字符串
public char charAt(int index) 获取指定索引位置的单个字符(索引值从0开始)
public int indexOf(String str) 查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值

字符串的截取方法:
public String substring(int index); 截取从参数位置到字符串末尾,返回新字符串
public String substring(int begin, int end); 截取从begin开始,一直到end结束中间的字符串
备注:(begin,end)包含左边不包含右边

字符串的转换相关方法:
public char[ ] toCharArray(); 将当前字符串的拆分成为字符数组作为返回值。
public byte[ ] getByte(); 获得当前字符串底层的字节数组。
public String replace(CharSequence oldString, CharSequence new String);
将所有出现的老字符串替换成新的字符串,返回替换后的新字符串。
备注:CharSequence意思就是说可以接收字符串类型

字符串的分割方法:
pubilc String[ ] split(String regix); 按照参数的规则,将字符划分为若干部分
注意事项:
split方法的参数其实是一个正则表达式,今后学习
今天注意,如果要使用英文句点,必须写“\.”(前面加两个反斜杠)

静态static关键字
如果一个成员变量使用了static关键字,那么这个变量不在属于对象自己,而是属于所在的类,多个对象共享一份数据。
一旦使用static修饰成员方法,那么这就成为静态方法,静态方法不属于对象,而是属于类。
如果没有static关键字,必须首先创建对象,然后通过对象才能使用。
对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用。推荐使用类名称来调用静态方法。
无论是成员变量还是成员方法,如果有了static都推荐使用类名称来调用。
类名称.静态变量
类名称.静态方法

注意事项:
1 静态不能直接访问非静态;因为内存中是【先】有的静态内容,【后】有的非静态内容。“先人不知道后人,但后人知道先人”。
2 静态方法中不能使用this
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。

静态static的内存是直接存放在方法区中的静态区的。
注意:
通过类名称访问静态成员变量的时候,全程和对象就没关系,只和类有关系。

静态代码块:
格式是:
public class 类名称{
static{
//静态代码块的内容
}
}

特点:当第一次使用到本类时,静态代码块执行唯一的一次。
静态内容总是优先于非静态,所以静态代码块比构造方法先执行
静态代码块的典型用途:
用来一次性地对静态成员变量进行赋值。

数组工具类Arrays
java.util.Arrays是一个与数组相关的工具类,里面有大量静态方法,用来实现数组的常见操作。
public static String toString(数组); 将参数数组变成字符串(按照默认格式,[元素1,元素2,元素3,……])
public static void sort(数组); 按照默认升序(从小到大)对数组元素进行排序
备注:
1 如果是数值,sort默认升序从小到大;
2 如果是字符串,sort默认按照字母升序;
3 如果是自定义的类型,那么这个自定义的类型需要有comparable或comparator接口的支持(今后学习)。

数学工具类Math
java.util.Math是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算线管的操作。
public static double obs(double num); //获取绝对值
public static double ceil(double num); //向上取整
public static double floor(double num); //向下取整
public static lang round(double num); //四舍五入

Math.PI代表近似的圆周率常量。(double)

Object类
类 Object 是类层次结构的根类。
每个类都使用 Object 作为超类。
所有对象(包括数组)都实现这个类的方法。

字节打印类的名字其实就是在调用toString方法。
看一个类是否重写toString方法,直接打印这个类的对象即可,输出地址值表示没有重写。

equals方法对于基本数据类型,比较的是数值,
对于引用类型,比较的是地址值。此时就没有意义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值