String 类的两种赋值
课程大纲
一、 String类
1、 String可以表示出一个字符串
2、 String类实际上是使用字符数组存储的
二、 String类的两种赋值方式
String s1 = new String(“小白”);
String s2 = “小白”;
/**
String 类(字符串类)
java.lang包是系统默认引入的包,所以不需要我们人工导入,
*/
class StringDemo
{
public static void main(String[] args)
{
//创建字符串的方式一
String s1 = new String("小白");//会创建两个字符串对象
//创建字符串的方式二
String s2 = "小白";//最多创建一个字符串对象,有可能不创建对象
System.out.println("s1="+s1);
System.out.println("s2="+s2);
}
}
String类的两种赋值分析
课程大纲
一、 String类的两种赋值分析
1、 字符串常量池
2、 Strings1 = new String(“小白”)内存分析
3、 Strings2 = “小白”;内存分析
/**
String 类(字符串类)
java.lang包是系统默认引入的包,所以不需要我们人工导入,
*/
class StringDemo
{
public static void main(String[] args)
{
//创建字符串的方式一
String s1 = new String("小白");//会创建两个字符串对象
//创建字符串的方式二
String s2 = "小白";//最多创建一个字符串对象,有可能不创建对象
System.out.println("s1="+s1);
System.out.println("s2="+s2);
}
}
String类编译期与运行期分析
课程大纲
一、
/**
String 类编译期与运行期的分析
*/
class StringDemo
{
public static void main(String[] args)
{
//情况一
String a = "a1";
String a1 = "a" + 1;
System.out.println(a==a1);//true
//情况二
String b = "b1";
int bb = 1;
String b1 = "b" + bb;
System.out.println(b1==b);//false
//情况三
String c = "c1";
final int cc = 1;
String c1 = "c" + cc;
System.out.println(c1==c);//true
//情况四
String d = "d1";
final int dd = getdd();
String d1 = "d" + dd;
System.out.println(d1==d);//false
}
public static int getdd()
{
return 1;
}
}
String字符与字符串操作方法
课程大纲
一、String字符与字符串操作方法
classStringMethodDemo1
{
public static void main(String[] args)
{
String s = "lampbrother-小白";
char c = s.charAt(3);//根据index下标返回字符串中此位置的字符,下标从零开始
System.out.println("charAt:"+c);
char [] cc = s.toCharArray();//把字符串转换成字符数组并返回
for(int i =0;i<cc.length;i++)//遍历输出该字符数组
{
System.out.print(cc[i]+" ");
}
}
}
String 类字节与字符串方法操作
课程大纲
一、
classStringMethodDemo2
{
public static void main(String[] args)throws Exception
{
String s = "小白是一个无节操、无底线、无干爹的三无少年!";
//将字符串装换为字节数组
byte[] bytes = s.getBytes();
for(int i =0;i<bytes.length;i++)
{
System.out.print(bytes[i]+" , ");
}
System.out.println();
//将字节数组转换为字符串(该方法为构造方法,new的时候调用)
String s1 = new String(bytes);
System.out.println("转换后的字符串为:"+s1);
String s2 = newString(bytes,0,16);//一个汉字占两个字节,offset为偏移量
System.out.println("s2="+s2);
//String s3 = newString(bytes,"utf-8");
String s3 = newString(bytes,"gbk");
System.out.println("s3="+s3);
}
}
String判断是否以指定内容开头或结尾
课程大纲
一、
/**
判断是否以指定内容开始或者结束
*/
classStringMethodDemo2
{
public static void main(String[] args)
{
String s = "威哥是一个猥琐但不下流,爱好搞对象的男人!";
boolean b1 = s.startsWith("威哥");//判断是否以指定内容开头
System.out.println(b1);
boolean b2 = s.startsWith("下流",9);//判断指定位置是否以指定内容开头
System.out.println(b2);
boolean b3 = s.endsWith("男人!");
System.out.println(b3);
}
}
String类替换操作
课程大纲
一、
/**
String 替换操作
*/
classStringMethodDemo4
{
public static void main(String[] args)
{
String info = "小白:真实a一表淫n才啊!";
info =info.replace(":",",");//把前面的字符串替换成后面的字符串
System.out.println(info);
info = info.replace("小白","小黑");//把前面的字符串替换成后面的字符串
System.out.println(info);
info =info.replaceAll("[a-z]","*");//把所有符合正则表达式的值全部替换成后面的
System.out.println(info);
info =info.replaceFirst("\\*","#");//只把第一个符合条件的值替换成后面的值
System.out.println(info);
}
}
String类字符串的截取操作
课程大纲
一、
/**
字符串的截取操作
*/
classStringMethodDemo5
{
public static void main(String[] args)
{
String info = "知识就像内裤,看不见但很重要!";
String s = info.substring(7);//一直截取到最后
System.out.println(s);
String s1 = info.substring(0,6);
System.out.println(s1);
}
}
String类字符串拆分操作
课程大纲
一、
classStringMethodDemo
{
public static void main(String[] args)
{
String info = "怀才就像怀孕-时间久了-才能看出来!";
String[] value =info.split("-");
for(String s:value)
{
System.out.println(s);
}
value =info.split("-",3);
for(String s:value)
{
System.out.println(s);
}
}
}
String类字符串查找操作
课程大纲
一、
classStringMethodDemo7
{
public static void main(String[] args)
{
String info = "安能摧眉折腰事权贵,使我不得开心颜!";
boolean b = info.contains("权贵");//查询是否包含指定字符串
System.out.println(b);
int index = info.indexOf('我');//查询所包含的字符所在的下标位置,如果没有则返回-1;
System.out.println(index);
int index1 = info.indexOf("开心");//查询所包含的字符串所在的下标位置,如果没有则返回-1
System.out.println(index1);
int index2 = info.lastIndexOf('不');//返回字符最后一次出现的索引
System.out.println(index2);
int index3 =info.lastIndexOf("不得");//返回字符串最右边出现的索引
System.out.println(index3);
}
}
String类其他操作方法
课程大纲
一、
二、作业:
1、判断一个Email地址是否正确,要求判断是否存在@和.
2、给出一个字符串:格式描述:姓名:性别:描述
苍老师:女:女友大使|小白:不定:各种演员
威哥:男:非著名讲师
将其转换成如下形式:
class HomeWork1
{
public static void main(String[] args)
{
String email ="1499817026@qq.com";
int at = email.indexOf('@');
int point = email.indexOf('.');
boolean flag = false;
if(at>0&&at<point)
{
flag = true;
}
if(flag)
{
System.out.println("email地址合法");
}
else{
System.out.println("email地址不合法");
}
}
}
class HomeWork2
{
public static void main(String[] args)
{
String info = "苍老师:女:女友大使|小白:不确定:演员|威哥:男:非著名讲师";
String [] str =info.split("\\|");
for(int i= 0;i<str.length;i++)
{
System.out.println(str[i].replace(":","->"));
}
}
}
/**
String的其他操作
*/
classStringMethodDemo8
{
public static void main(String[] args)
{
String info = " time :时间就是生命! ";
boolean b = info.isEmpty();//判断字符串是否为空
System.out.println(b);
//获取字符串的长度
int len = info.length();
System.out.println(len);
//String s1 = s.toLowerCase();转换成小写
String s = info.toUpperCase();//转换成大写
System.out.println(s);
String info1 = info.concat("你要珍惜");//字符串连接
System.out.println(info1);
String info2 = info.trim();//去掉字符串的开头和结尾的空格
System.out.println(info2);
}
}
值传递与引用传递
课程大纲
一、 值传递和引用传递
class RefDemo1
{
public static void main(String[] args)
{
Cat c = new Cat();
method(c);
System.out.println(c.age);
}
public static void method(Cat cat)
{
cat.age = 5;
}
}
class Cat
{
int age = 2;//省略引用
}
class RefDemo2
{
public static void main(String[] args)
{
String name = "小白";
method(name);
System.out.println(name);
}
public static void method(String sname)
{
sname = "小红";
}
}
class RefDemo3
{
public static void main(String[] args)
{
Catc = new Cat();
method(c);
System.out.println(c.name);
}
public static void method(Cat cat)
{
cat.name = "小黑";
}
}
class Cat
{
String name = "小白";
}
class ValueDemo
{
public static void main(String[] args)
{
int x = 10;
method(x);
System.out.println("x="+x);
}
public static void method(int x)
{
x = 20;
}
}