首页 > 编程语言 >0基础学JAVA(第五天)

0基础学JAVA(第五天)

时间:2024-07-19 20:54:56浏览次数:14  
标签:JAVA String 基础 System 字符串 str println 第五天 out

1.String类

String类是一个引用类型,默认值为null;

字符串在声明之后是一个常量,不能改变,是一个private final修饰的value,只能在类的内部访问,而且类的内部没有提供任何修改的方法,所以是一个常量

1.声明字符串:

String stri="abc你好";
        stri =new String();
        stri =new String("你好");
        System.out.println(stri);

 2.字符串拼接:

1.   +

字符串拼接可以使用+

String str="12"+"35";//1235
        str="65"+23;//6523
        str="123"+new Object();//"123"+这个对象的toString方法的结果
        System.out.println(str);//123java.lang.Object@b4c966a
        str="123"+new int[]{1,24,5,9};
        System.out.println(str);//123[I@1d81eb93
        System.out.println("-----------------");
        System.out.println("123"+123+123);//   123123123
//在上面的输出语中,执行的顺序决定了结果,上面的是有了字符串,和123这个数相加之和得到123123这个字符串,再何123这个数相加,得到123123123
        System.out.println(123+123+"123");//   246123
上面的输出语句中,是先由两个123的数值相加得到246,在和123这个字符串相加得到246123这个字符串

3.字符串比较  equals

比较两个字符串是否相同只比较字符是否相同,不比较地址

String str="123123";
str=new String;

System.out.println("str.equals"123123"");//true

4.split() 分割

 splite是以参数来分割,每有一个这个数值就会分割一次,如果前面第一个就是这个数值,那么会在前面空出来一个,但是在最后面不会空出来

String str="123123";
System.out.println(str.split(2));//1,31,3    
String str="1231231";
System.out.println(str.split(1));//[ ,23,23]    

5.valueof() 

将传入的参数转换成字符串,下面的98现在是字符串类型的98,现在用这个98+97得到的是字符串类型9897

String str=String.valueof('98');//98
System.out.println(str+97);//9897

6.trim()

去除字符串前后的空格和转义符,之去除字符串前后的,但是中间的不会去除

String str2="\n\r   \t    1     23     3 \n       \r".trim();
        System.out.println(str2);//   得到:1     23     3

7.startWith()/endWith()

判断一个字符串是否已某个字符串开始或者结束

 str="12312313";
        System.out.println(str.endsWith("13")+"-----");   //true

        System.out.println(str.startsWith("12")+"-----"); //true

8.index()/lastIndexOf()

输出字符串中第一次出现某个字符串出现的位置

        int index="123456".indexOf("34");
        int index1="123456".indexOf("3457");
        System.out.println(index1);//-1   找不到对应的字符串的情况下,输出-1
        System.out.println(index);//2         因为字符串下标也是从零开始,3在字符串中的位置是2,所以会输出一个2


        index1="123123132".lastIndexOf("1");      这个是从后向前找字符串1第一次出现的位置,输出这个字符串在整个字符串中的位置
        System.out.println(index1);//6

9.charAt()

输出在字符串某个位置的字符

        char item="123456".charAt(4);
        System.out.println(item);//5

10.replace()/replaceAll()

replace:将字符串中的某些字符串替换成另一个字符串

replaceAll:正则表达式,在下面代码中,虽然有".",但是这个.是任意字符的意思,所以结果是AAAAAAAA

strin="1234534".replace("34","AAA");//12AAA56AAA
System.out.println(strin);
strin="12.31.23".replaceAll(".","A");//AAAAAAAA

11.toUppercase()/tolowercase()

将字符串中的字母变成大写/小写

str="123abc".toUpperCase();//转成大写     
        System.out.println(str);        123ABC
        str="123ABXXCabc".toLowerCase();//转成小写
        System.out.println(str);     123abxxcabc

12.isEmpty()

判断字符串是否为空,下面代码输出为false

        boolean b1="123".isEmpty();
        System.out.println(b1);

13.subString()

获取某个范围内的字符串

注意!!!!这个范围是前面的数值的位置能取到,后边的取不到,所以如果要取到最后一位,下面的范围应该是(1,6)这样可以取到“23456”这个字符串

String strin="123456".substring(1,3);
        System.out.println(strin);//23

14.length()

获取字符串的长度

通过这个length方法获取长度,可以在以后循环遍历的时候使用

int l="123123".length();
        System.out.println(l);//6

15. 常量池

 String str5="abc";
//现在已经定义了一个str5的字符串,所以“abc”这个字符串在常量池中已经存在
//在下次要用abc这个字符串的时候直接从常量池中用,不需要再生成一遍
String str6="abc";
System.out.println(str5==str6);//得到true
是因为这两个字符串在常量池中的地址相同

面试题:

//1.
        String strA="123";
        String strB="123"
        String strC=new String("123");
        String strD=new String("123");
        System.out.println(strC==strD);//false
        System.out.println(strA==strC);//false

        //2.
        String strE="12"+"3";//在编译成字节码文件的时候就解析成了123
        String strF= "1"+"2"+"3";
        String item="12";
        String strG=item+"3";//会生成一个新的对象
        String strGG=item+3;
        System.out.println((strG==strGG)+"-----------");
        String strH="12"+3;
        System.out.println(strA==strE);//true
        System.out.println(strA==strF);//true
        System.out.println(strE==strF);//true
        System.out.println(strA==strG);//false
        System.out.println(strA==strH);//true
        System.out.println(strC==strG);//false

        final  String aa="12";
        String strI=aa+"3";
        System.out.println(strA==strI);//true

        String bb=new String("12");
        String strJ=bb+"3";
        System.out.println(strJ==strA);//false

 

在上面代码中要特别注意有变量参与的时候,只有在运行之后才会得到结果,所以不会和常量池匹配,所以strA==strG是false还有bb是new出来的一个对象,不和常量池中的字符串匹配

在常量池有常量编译优化,这个会在编译时自动识别出来结果,在常量池中有123这个字符串,直接从常量池中拿出123这个字符串使用

16.intern()

intern()流程:检查str5在常量中是否存在副本,如果不存在,就复制一份放到常量池中,然后返回常量池中的副本对象,如果有直接返回副本到对象 ,直接返回副本对象,下面的代码使用intern()方法之后strA和strB中的123123字符串在常量池当中会是同一个所以最后一个才是正确

返回  str5对象在字符串常量池中的副本对象
       //所以  两个字符串  equals   为true
        //name  两个字符串inter方法==        
        strA=new String("123123");
        strB=new String("123123");
        System.out.println(strA.equals(strB));//true
        System.out.println(strA==strB);//false
        System.out.println(strA.intern()==strB.intern());//true

小面试题: 

new String("abc") 问创建了几个对象(一个或者两个)

如果在常量池当中没有abc这个字符串,那么将会创建一个副本对象放在常量池,这个时候本身new出来的也创建一个对象,那么就是创建两个对象

如果在常量池当中已经有abc这个字符串,那么只需要创建一个对象就可以了

17. StringBUffer/StringBuilder

如果要执行下面代码

String str="";
for(int i=0;i<10;i++){
str=str+i;
}

会出现0 01 012 0123 01234 012345 0123456..... 这些个字符串,出现很多的字符串会占用更大的空间,为了节省空间所以有了这两个类,StringBuffer是线程安全的,StringBuilder是线程不安全的

 StringBuilder strB=new StringBuilder();
        strB.append("123");
        strB.append("abc");
        strB.append("456");
        //调用append的时候,往StringBuilder数组中追加字符
        //其中没有产生字符串对象

这个是在数组中直接添加字符串,最后一起输出 

2.容量

在StringBuilder中默认的容量是16,如果容量不够会自动扩容,原本容量*2+2(源代码是将原容量向左移位+2),当然,也可以自己指定容量

2.随机数

真随机数:Math.Random,这个是真随机数,[0,1)

如果要生成一个2-90的随机数需要Math.Random*88+2

假随机数:直接使用Random类创建对象,就算创建两个新的对象,只要随机种子相同,那么产生的随机数就相同,而且往后执行任意次,两个数都相等

 double de=d*82+8;//[8,92)
Random random=new Random(12);//这是一个假随机
Random random1=new Random(12);
int a=random1.nextInt();
int b=random.nextInt();
System.out.println(a+"-----="+b);
a=random1.nextInt(98);    //bound是设置范围(nextInt的参数名称)
b=random.nextInt(98);
System.out.println(a+"-----="+b);

3.取整

!!!!注意:-0.5四舍五入是0,-0.4四舍五入是0,-0.6四舍五入是-1

1.四舍五入:

long num=Math.round(de);
        System.out.println(num);//13
       int numn= Math.round(12.33f);//round()方法返回的是一个int值
        System.out.println(numn);

2.向上取整:

double ceilnum=Math.ceil(de);
        System.out.println(ceilnum);//13.0

3.向下取整:

double floornum=Math.floor(de);
        System.out.println(floornum);//12.0

4.时间类

Date类

在想要得到月份,小时的时候下标都是从0开始

Date date=new Date();
System.out.println(date);
long l=date.getTime();
 System.out.println(l);
 l=l+2*24*60*60*1000;//向后两天整
 date=new Date(l);
 System.out.println(date);
  date.getMonth();//0-11    七月返回6

时间格式化:

SimpleDateFormat  sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss SSS");//HH是24小时制
        String sdfStr=sdf.format(date);
        System.out.println(sdfStr);//这里得到的是规定的格式的时间
          LocalDateTime dateTime=LocalDateTime.now();//本地时间
        System.out.println(dateTime);
        ZonedDateTime zdt=ZonedDateTime.now();  
         Object obj= zdt.getZone();//在计算机里面记录的是上海时区

标签:JAVA,String,基础,System,字符串,str,println,第五天,out
From: https://blog.csdn.net/m0_73570063/article/details/140520676

相关文章

  • 0基础学JAVA!!!(第四天)
    1.包装类整型:Byte,Short,Integer,Long浮点型:Float,Double字符型:Character布尔型:BooleanIntegerinta=21;Integerintb=12;System.out.println(inta==intb);Integerintac=200;Integerintc=200;System.out.prin......
  • 0基础学JAVA!!!(第三天)
    0基础学JAVA!!!(第三天)一,方法:(1)方法的定义:  定义一个方法需要有返回值类型 方法的名称(方法的参数){方法体}  返回值类型:当这个方法不需要返回值的时候返回值类型就用void,用void不是返回一个null值,是不返回值!!在用void的时候可以写return,但是不返回值,用作终止方法返回值......
  • java数组之数组工具类——Arrays的使用
    一、Arrays工具类简述    在java的类库中有许多现成的已经封装好的方法,可以供开发人员使用,比如我们之前学的二分法查找或者快速排序等。所以在实际的开发中,我们是不用自己编写这些常用的方法的。那么在常用的数组方法在哪里的?java作为面向对象的语言,所有方法都会封装......
  • 花几千上万学习Java,真没必要!(十四)
    方法:测试代码1:不带参数,不带返回值的方法packagetestmethod.com;publicclassTestClassMethod{//定义一个不带参数且不带返回值的方法publicstaticvoidmyMethod(){//在这里编写方法体System.out.println("Thisismymethod");}......
  • JavaScript实现通过按纽控制电梯上下移动,并实现帧频动画
    varapp=newPIXI.Application(520,460);document.body.appendChild(app.view);//创建背景varbg=newPIXI.Sprite.fromImage("res/lianxi/elevator/bg.png");app.stage.addChild(bg);varelevator=newPIXI.Sprite.fromImage("res/lianxi/elevator/dt......
  • javaScrip的学习(一)
    目录引言一、java和JavaScript的联系二、js中的弹出框1.alert弹出框2.confirm带确认取消的按钮弹框3.prompt带有提示信息且带有输入框的弹框 4.输出到网页中​三、js引入方式1.放在script标签中2.放在外部js文件中四、执行顺序五、书写规范1.语句结尾加分号......
  • [米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-02使用安路TD开发工具创建FPGA工程
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑!1概述本实验以FPGA芯片DR1M9......
  • Java面试题(企业真题)
    01.泛型的理解泛型是Java5引入的一种特性,它允许程序员在定义类、接口或方法时指定一个或多个类型参数,从而可以在运行时处理各种不同的数据类型,同时保持类型安全。泛型提供了编译时类型检查,消除了强制类型转换的需要,减少了运行时ClassCastException异常的可能性。02.泛型......
  • JAVA小白学习日记Day6
    1.List集合:把具有相同属性的东西放在一起,也可以是容器,把有关的东西都放进去。List:List是位于java.util下的一个接口,有序集合(也称为序列)。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并在列表中搜索元素。之前学过的容器......
  • [Java基础]Class对象
    Class类[class对象通常存放在方法区]在程序运行期间,Java运行时系统始终为所有对象维护一个运行时类型标识。这个信息会跟踪每个对象所属的类。虚拟机利用运行时类型信息选择要执行的正确的方法。不过,可以使用一个特殊的Java类访问这些信息。保存这些信息的类名为Class,这个名字......