Java
环境变量:
为了让javac和java两个命令在任意路径下都可以使用
文件名与类名相同(编译用的是文件名,运行用的是类名)
包:
就是文件夹作用,区分同名文件,分类存储,起名字的时候都小写,有单级包和多级包
字符串的定义:
1,存储空间消耗者
2,环保主义者(最常用的)
3,字母崇拜者
4,业余爱好者
字符串的访问:
charAt(index)方法可以访问一个字符串中的某个字符
字符串的拆分:
单刃斧:substring(parameter1)方法 截取前面一部分将后面的剩下
双刃斧:substring(parameter1, parameter2)方法 斧头返回值是一个字符串
剥离机:split(parameter1)参数是分割字符串的 “依据“ 返回值是一个字符串数组
字符和字符串的运算:
” + “可以用在字符和字符串中,另外还可以使用concat()方法,是” + “的一种替换形式,但是他每次拼接都会通过构造函数产生一个新的字符串对象,因此不建议使用。
public static void main(String args[]) {
String stringTry = "12"+12+"12"+(9+2)+(7-7);
System.out.println(stringTry);
}
//运行结果:121212110
另外:
toLowerCase()转换为小写
toUpperCase()转换为大写
字符串的比较:
" == "是比较地址,不是比较字符串的值
1,比较两个字符串是否相等用equals()方法
2,部分字符串的比较
(1)endsWith()用来比较后缀是否相同
startsWith()前缀
(2) regionMatches(pm1, pm2, pm3, pm4)方法比较是否包含特定的字符串.
(pm1是目标字符串中的起始,pm2是参与比较的字符串,pm3是参与比较的起始,pm4是比较的个数,该方法还有一个布尔值参数,如果布尔值为true,则在比较中忽略大小写)
public static void main(String args[]) {
if("Schroedinger".equals(args[0])) { //这是一个小技巧哦哦哦
System.out.println("Hallo");
}
}
字符串的查找和替换操作:
查找
indexOf()一个参数时:返回指定的字符或字符串在目标字符串中首次出现的位置
两个参数时:pm1是指定字符,pm2是从目标字符的那个位置开始
lastIndexOf()从目标字符串的右边开始查找
查找:若找到则返回该字符的位置,若没有找到则返回值-1
contains():查找目标字符串是否含有指定的字符或者字符串(返回值为布尔类型)
替换
replace(pm1, pm2) pm1是匹配字符,pm2是替换字符
replaceFirst()替换第一个与指定字符或者字符串匹配的字符或者字符串
replaceAll()所有
…
可以被改变的字符串:
StringBuffer 和 StringBuilder 类(区别:线程问题,目前不用理解)后者速度快目前
public static void main(String args[]) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("String");
stringBuilder.append("-");
stringBuilder.append("Bilder");
stringBuilder.insert(8, "u");
System.out.println(stringBuilder.toString());
}
字符串的删除,替换以及镜像:
.delete(parameter1, parameter2)参数2可以省略,参数1是起始位置,参数2是终止位置,当只有一个参数的时候,只删除那个位置的字符
.replace(parameter1, parameter2, parameter3)参数1是起始位置,参数2是终止位置,参数3是替换的字符
.reverse()没有参数,只是将字符串镜像(翻转)
注意:
在一个循环的内部使用StringBuilder比使用 + 运算符更好,在循环外部可以使用 + 运算符,因为编译器此时会自动生成StringBuilder。concat最不行,最不节省空间。
public static void main(String args[]) {
StringBuilder textMitStringBuilder = new StringBuilder(1377);
for(int i = 1; i <= 99; ++i) {
textMitStringBuilder.append("Luftballon "+i+"\n");
}
System.out.println(textMitStringBuilder.toString());
}
对象,类
->类里可以包含一个main方法和静态方法(类方法)
->方法的静态性
->单进单出
->方法的重构,重构时应避免选用过多的参数,(如果参数很多的话,那么就采取一种简写的形式(Varargs)可变参数)
方法的注释
/**
*方法的用途
*
*@param zahl1
*@param zahl2
*@return
*/
初始类和对象
java不仅会用到函数,还会用到对象(对象实例),这就是面向对象的编程
封装:将数据与功能相结合,用户只能通过对外开放的接口,以特定的访问方式来使用类的成员
第一种说法:
类是对象的数据类型,对象是类的一个实例。就是说,类就像是一个可以由开发人员自己定义的数据类型(类),用这个数据类型可以定义不同的变量(对象).
第二种说法:
类就像是一个模板、一个规范,对象则是按着模板所具体制造生产出来的东西.
类有它的属性,也有它的方法。
类的对象由以下两个因素组成:
数据:对象的变量、字段、属性或者特性.
函数:对象方法、方法.
用对象变量描述一个对象的特征,用对象方法描述对象的行为。
构造函数的两个特例:(内存缓存机制)
new String()
new Integer()
在一个类中,含有很多对象变量、对象方法,但这些方法目前还不能被引用或调用,现在你需要生成一个该类的对象,最好把创建过程放在一个独立的类里,通过执行新类的main()方法实现生成一个对象。含有对象变量和对象方法的类起到创建模板的作用(含有那些特征),程序起点的任务最好交给另外一个类来完成。
再次强调:对象方法在没有创建的情况下是无法被调用的,必须创建一个对象实例,然后才 能调用。
在一个类中,如果没有static关键字,也就是说,这个方法不是类方法,而是一个对象方法。
应该避免类属性的直接访问:
原因:擅自访问对象变量会导致这个类创建出无效的参数。
如何避免:最简单的方法就是把对象变量隐藏起来,将其声明成私有类型就行了。
set(设置)和get(获取)方法:(用户也想知道照相机的品牌以及猫不再可爱)
->set…()和get()…方法可以改变对象变量的值,现在对象看起来完美多了,既可以封装起来,又可以只通过方法改变对象变量的值。
->this.为了区分一个是参数名另一个是变量名,后面的是参数名,前面的是对象变量名。
->如果想获取布尔类型的对象变量值,方法名可以用 is 替换get
自动创建get和set方法:Source—> get和set
多参数的set方法:根据个人喜好选择。
更快给对象变量赋值的小窍门: