-
前言
今天起学校带队去实训,实际上就是换个地方去上课啦,主要是学Java,老师让每天记录学习成果,想着既然要记录不如直接写个博客什么的,所以开坑 -
Java的基本操作
今天讲的主要是一些基本知识,我就不系统的该概述了,只写一些值得注意的知识点 -
八种数据类型与引用型
八种数据类型:byte,int,long,short,float,double,boolean,char
没什么好说的,和c++什么的差不多
但是Java是一门面向对象的语言,所以对这些数据类型的高级操作往往都得转换成引用型
值得注意的是int->Integer,char->Character,其他的直接大写就行了,主要是为了将它们转换成对象,转换成对象以后可以更方便的执行各种操作,可以应用各种函数。 -
关于String
字符串的处理是一门语言入门最多的话题了,开始学C的时候搞了不少操作,比如用数组对字符串进行处理,如删除某一段,插入某一段什么的,不过在Java里字符串处理相当简单,下拉列表中有无数可以用的函数,这里就直接把上课笔记做的代码什么放一下吧。
package aaaa;
public class StudyString {
//字符串类型的学习
public static void main(String[] args) {
//字符串拼接:str.concat()函数
String str1="Hello World!";
System.out.println(str1.length());
String str2=new String("and");
String str3=str1+str2;
String str4=str1.concat(str2);
System.out.println(str3+" "+str4);
//截取:str.substring()函数,分为两种变量和一种变量,结束位置可以.langth-1(从0开始数
String str5=str1.substring(6, str1.length()-1);
System.out.println(str5);
//查找:1找出给定字符/字符串的位置
int i=str1.indexOf("ll");//从前往后查
int j=str1.lastIndexOf("r");//后往前查
System.out.println(i+" "+j);
//给定位置找出字符串
char c=str1.charAt(i);
System.out.println(c);
//切割
String xiyou="唐僧;孙悟空;猪八戒;沙僧";
String[] names=xiyou.split(";");//切割完成;
//一个高效的for循环,foreach
/*
* foreach的操作:for(类型 变量名:便利的对象)
* 实际的一个案例:https://www.cnblogs.com/zpoor/p/7653135.html
*/
for (String string : names) {
System.out.println(string);
}
//比较
String str7=("Hello World!");
String str6=new String("Hello World!");
System.out.println(str1==str7);//true
System.out.println(str1==str6);//false
System.out.println(str7.equals(str6));//equal函数只比较内容,内容相同即相同
/*
* str1和str7指向了一个常量值
* str6是申请了另外的一块空间,在常量池中不是一块内存区域,所以再去引用时就不相同了
*/
//替换 1.替换第一次出现的 replaceall:替换所有出现过的
String str8=str1.replace("l", "0");//全部替换
String str9=str1.replaceFirst("l", "0");//替换了第一次
System.out.println(str8+" "+str9);
//Stringbuilder+Stringbuffer 并发不安全与并发安全,前者单线程后者多线程
//https://baijiahao.baidu.com/s?id=1629804867201303563&wfr=spider&for=pc
//stringbuilder的用法:https://blog.csdn.net/qq_35187119/article/details/81280100
//https://www.cnblogs.com/songsongblue/p/9798651.html
StringBuilder str10=new StringBuilder();
str10.append("Hello world");
str10.insert(5, " java");
System.out.println(str10.toString());
//删除
str10.delete(1, 4);
System.out.println(str10.toString());
//翻转
System.out.println(str10.reverse());
}
}
关于String,和以往不同的是引入了StringBuilder和Stringbuffer,它们的主要作用是提升操作的效率,因为用String进行运算的时候,会产生多个中间的String变量,会产生很多垃圾,
而用Stringbuilder和Stringbuffer运算是对其本身进行操作,效率更高,不会产生过多垃圾
而Stringbuffer在牺牲效率的前提下解决了多线程操作可能造成的字符串混乱问题,在其加上了锁,运算更安全。
值得一提的是,是Stringbuffer先出现的,而Stringbuffer是把前者的锁去掉了,所以两者用法基本一样而后者效率更高。
-
foreach
这个也是之前的学习中没接触过的东西,实际上只是for循环的一个变种,它可以方便的对分组进行处理,格式是for(数据类型 变量名:被分配的数组){}它的应用也有一定的限制,这个可以在csdn其他人博客上看 -
Java的特殊之处
c++一个子类可以有多个父类,而Java一个子类只有一个父类,所以要引入别的需要接口,其他函数的调用我个人觉得和c#很像,都是函数名 变量名=new函数名();酱紫的。