1、读输入
Scanner in=new Scanner(System.in);//in这个对象做读入下一行的操作 System.out.println(in.nextLine());//System.out这个对象打印下一行
2、数组
其中所有的元素都具有相同的数据类型
int []s=new int[maxn];//数组定义 new创建的数组会得到默认的0值 创建maxn个int型数组 int []s={1,2,3,4};//直接初始化数组 可以不用给出大小
有成员函数length可直接使用 数组变量是 !**数组的管理者**!而非数组本身! 数组必须创建出来交给数组变量管理,数组变量之间的赋值是**管理权限**的赋予, 数组变量之间的比较是判断**是否管理同一个数组** eg. s是有maxn个元素的数组的管理者
3、包裹类型
基础类型 包裹类型 boolean Boolean char Character int integer double Double
可以通过包裹类型获取该类型的最大最小值,判断是否是字母什么的 可以有更多的功能扩展
4、Math类
Math.abs(-12);//12 Math.pow(2,3);//8.0 浮点运算 Math.random();//生成0~1之间的随机数 可以*100 获取0~100之间的随机数 Math.round();//四舍五入
5、字符串
字符串变量并不存放字符串,也不是字符串所有者,它是**字符串的管理者** Java的字符串是”不可变“对象,所有对字符串的操作都是产生一个新的字符串, 而不是对原来的字符串进行修改 String的变量是对象的管理者 eg. String s=new String("a string");//创建了一个String的对象,并初始化 //创建了这个对象的管理者s 让s管理这个对象 输入字符串,in.next;//读入一个单词,以空格为界 in.nextLine();读入一整行 字符串的比较: if(input=="bye") 比较的是 是否指向的是同一个String对象 很大可能return false 因为input和"bye"是两个不同的字符串 if(input.equals("bye") 才是比较内容是否相同 对字符串的操作: s.charAt(index);//返回在index上的单个字符 0~length()-1 //注意 不能用for-each循环来遍历字符串 for(char c:s){}不行 //for-each只适合于数组或者可枚举类型 s.substring(n);//得到从n号位置到末尾的全部内容 s.substring(b,e);//b号位置到e号位置之前的内容 左闭右开 s.indexOf(c);//得到c字符所在位置,-1表示不存在 s.indexOf(c,n);//从n号位置开始找 s.indexOf(t);//找到字符串t所在位置 返回值为子串开始的index s.lastIndexOf();//从右边开始找 eg.要找一个串中的第二个3 String s="0123453"; int loc=s.indexOf('3'); s.indexOf('3',loc+1); s.startsWith(t);//s是否是以字符串t开头的 s.endsWith(t); s.trim();//把字符串两端的空格删掉 s.replace(c1,c2);//所有的c1换成c2 s.toLowerCase();//所有字符都变成小写 s.toUpperCase();
6、 本地变量不会被自动初始化 有可能会报错,所以要记得初始化
本地变量:定义在函数内部,作用域和生存期都在函数内部, 而成员变量(自动初始化为0或null)的生存期是对象的生存期,作用域是类内部的成员函数
7、类和对象
VendingMachine v=new VendingMachine();//对象变量是对象的管理者
v.insertMoney()中使用的成员变量是v的成员变量实际上**是通过this实现的**
this:
this是成员函数的一个特殊的固有的**本地变量**,它表达了调用这个函数的 **那个对象** 在成员函数内部直接调用自己的其他函数,也可以通过this来实现(通常会省略)
一个类的成员变量可以是其他类的对象
8、封装:把数据和对数据的操作放在一起,并且用这些操作把数据掩盖起来 (面向对象核心概念)
直接手段: 类的所有成员变量必须是private的 所有的public的函数,只是用来实现这个类对象或类自己要提供的服务的,而不是用来直接访问数据。
private(类所私有的)只能用于成员变量和成员函数:
public class Display{ private int num; private int getValue(){ };//不可以在getValue函数中定义变量的时候使用private }
注意:
public class Fraction{ private int a; private int b; public Fraction plus(Fraction r) { int fenzi=a*r.b+r.a*b;//这个完全可以实现哦,因为private的限制不是对对象的,他们都在Fraction类里 int fenmu=b*r.b; return new Fraction(fenzi,fenmu); } }
9、包
10、类变量和类函数
11、对象容器
究竟把什么放进容器里了?对象的管理者.
泛型类:eg. ArrayList 这种泛型类是一种容器
无限放东西,计算机有容量就能一直放,数组无法实现,要用容器实现
容器类有两个类型:容器的类型(ArrayList)、元素的类型(String)
import java,util.ArrayList; public class NoteBook{ private ArrayList<String> notes=new ArrayList<String> (); //ArrayList类中常用成员函数 //notes.add(s); notes(location,s);//把s放在原来location前面,即放在location位置,原来location位置以后的东西顺序后移 //notes.size(); //notes.remove(index); //notes.toArray(a);//把这个ArrayList里的元素都复制到a数组中,然后进行输出 }
12、对象数组
当数组的元素的类型是类的时候,数组的每一个元素都只是对象的管理者而非对象本身,
仅仅创建数组并不意味着创建了其中的每一个对象,String[] a=new String[10],此时对象还没有创建出来,如果是int,则会产生a[0]=0;
for-each循环
for(int k:ia){ k++; }//没有任何用,因为这里的k只是原数组的复制品 对于对象数组却有所不同 因为 数组管理的那块东西 和 for-each循环里那个东西管理的 是同一个东西,会实现修改
13、集合容器