发表于: 2020-11-23 22:58:18
1 1297
今天完成的事情:
复习昨天的四则运算
double x = 1.0 / 10;
double y = 1 - 9.0 / 10;
// 观察x和y是否相等:
System.out.println(x);
System.out.println(y);
// 比较x和y是否相等,先计算其差的绝对值:
double x = 1.2;
double y = 1.0;
double r = Math.abs(x -y);
System.out.println(r);
// 再判断绝对值是否足够小:
if (r < 0.00001) {
// 可以认为相等
System.out.println("相等");
} else {
// 不相等
System.out.println("不相等");
}
// 一元二次方程
double a = 1.0;
double b = 3.0;
double c = -4.0;
// 求平方根可用 Math.sqrt():
// System.out.println(Math.sqrt(2)); ==> 1.414
// TODO:
double r1 = 0;
double r2 = 0;
r1 = (-b + Math.sqrt(Math.pow(b,2)-4*a*c))/ 2*a;
r2 = (-b - Math.sqrt(Math.pow(b,2)-4*a*c))/ 2*a;
System.out.println(r1);
System.out.println(r2);
System.out.println(r1 == 1 && r2 == -4 ? "测试通过" : "测试失败");
//判断指定年龄是否是小学生(6~12岁):
int age = 12;
// primary student的定义: 6~12岁
boolean isPrimaryStudent = age >= 6 && age <= 12;
System.out.println(isPrimaryStudent ? "Yes" : "No");
/**
* 3.6字符串(String是一个类,所以可以使用当中的方法)
* 1.Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫做String.
* 2.字符char和字符串String是两种不同的类型,但字符串String也是Unicode字符序列,所以也可以使用
* 3.每个用"" 括起来的字符串都是String的一个实例
*
*
* 3.6.1字串
* 1.从一个较大的字符串中提取需要的字串
* 2.字符串是从0开始数的,而substring(2,3),从2开始提取,到3位置,不提取3
* 3.容易计算字串的长度,字串“l”的长度是3-2=1
* 4.想到复制是不是用到这个特性?
*
*
* 3.6.2拼接
* 1.字符串可以和字符串相加成为一个新的字符串
* 2.当一个字符串和一个非字符串拼接的时候,后者会被转换成字符串
* 3.这个特性常常使用在输出语句中
*
* 3.6.3 不可变字符串
* 1.String类没有提供修改字符串的方法。
* 2.要想修改字符串,只能使用拼接来实现。
* 3.不可变字符串,有一个优点,编译器可以让字符串共享。
* 4.字符串不是字符型数组
* 为什么String类中字符串不可更改???
* 因为创建多个变量时,它们值一样时,它们会指向同一对象,这时候如果修改了一个值,就会导致多个值同时修改。
*
*
* 3.6.4 检测字符串是否相等
* 1.可使用equals方法,equal是判断值是否相等,而不是对象
* 2.可使用字符串常量
* 3.equalsIgnoreCase方法判断是否相等时,不区分大小写
* 4.为什么不能用==检测两个字符串相等???因为这个运算符只能判断两个字符串是否指向同一个对象,而字符串的常量是共享的
* 创建String S = "静"; String S1 = S; String B = "静"; 这时候S和S1,B都指向同一对象
* 在新建一个B1对象时,这时B1和B指的不是同一对象,所以使用 ==会判断false
*
* 基本变量创建时,比如下面的int a = 2; int c = a; c = 3,int可以重新赋值,
* 说明a和c是两个独立的变量且其中任何一个的进一步的变化都不对另外一个构成影响。
*
*
* 3.6.5 空串与null串
* 1.空字符串""不等于null
* 2.String可以为null
*
* 3.6.6 代码点和代码单元
* 1.Java字符串由char序列组成。
* 2.char:采用UTF-16编码表示Unicode代码点的代码单元
* 3.大多数Unicode字符使用一个代码单元就能表示
* 4.辅助字符需要一对代码单元,
*
* Unicode字符?辅助字符?代码单元?
* Unicode字符(\'uxxxx'),Unicode试一个按照这种格式的编码规则,用来表示文字和标志
* 𝕆这就辅助字符,用两个char保存,算一个代码点
* 每个字符用16位表示代码单元
*
* 3.6.7 字符串API
* 查看API(Java应用程序编程接口),知道方法的使用方式
* 3.6.8 阅读联机API文档
* 3.6.9 构建字符串
*
*
*/
public class StringTest {
public static void main(String[] args) {
//StringExample();//字符串示例
// SUB();//3.6.1字串提取
// SplicingDemo();//3.6.1字串拼接
// ImmutableDemo();//3.6.3 不可变字符串
// EqualsSDemo(); // 3.6.4 检测字符串是否相等
// NullDemo();//3.6.5 空串与null串
// CodeUnitDemo(); //3.6.6 代码点和代码单元
StringBuilderDemo();//3.6.9 构建字符串
}
private static void StringExample(){
//字符串示例
String e = "Java\u2122";//Java™
System.out.println(e);
String b = " ";//
String a = "\u4e2d";//中
System.out.println(a);
}
//3.6.1字串提取
private static void SUB(){
String greeting = "Hello";
String s = greeting.substring(2,3);
System.out.println(s);
}
//3.6.2拼接
private static void SplicingDemo(){
String S = "静";
String N = "夜思";
int age = 23;
String sum = S + N ;
System.out.println(sum);
String C = "sum" + age;
System.out.println(C);
//之前碰到的报错
int a = 1;
int b = 2;
int c = 3;
// System.out.println(a,b,c);//报错,println方法不能传入多个参数,通过查看println源码,只支持传入一个参数
System.out.println(a+","+b+","+c);//需要用加""将多个int转换成一个字符串,才可输入成功。
}
//3.6.3 不可变字符串
private static void ImmutableDemo(){
String S = "静";
String N = "夜思";
int age = 23;
String sum = S + N ;
String s = sum.substring(1,2)+"下";
System.out.println(s);
}
//3.6.4 检测字符串是否相等
private static void EqualsSDemo(){
String S = "静";
String S2 = "静心如意";
String S1 = S;
System.out.println(S==S1);//true
String B = "静";
System.out.println(S1==B);//true
String B1 = new String("静");
System.out.println(B==B1);//false
System.out.println(B.equals(B1));//true
System.out.println(S2.substring(0,1) == "静");//false
//和String引用类型对照
int a = 2;
int c = a;
c = 3;
// String S1 = "夜";//报错,变量“ S1”已在范围中定义,无法修改。
String N = "夜思";
boolean b = S.equals(N);
boolean b1 ="清风".equals("明月");
boolean b2 = "risk".equalsIgnoreCase("Risk");//不区分大小写
System.out.println(b);//false
System.out.println(b1);//false
System.out.println(b2);//true
}
//3.6.5 空串与null串
private static void NullDemo(){
String str = "";
System.out.println(str.length() == 0);//true
System.out.println(str.equals(""));//true
System.out.println(str == null);//false
System.out.println(str != null);//true
System.out.println(str != null && str.length() !=0);//false
String s = null;
}
//3.6.6 代码点和代码单元
private static void CodeUnitDemo(){
String str = "hi\uD835\uDD46";
System.out.println(str.length());//代码单元的数量4
System.out.println(str.codePointCount(0, str.length()));//代码点的数量3
System.out.println(str);//hi𝕆
char two = str.charAt(2);
System.out.println(two);//?
char three = str.charAt(3);
System.out.println(three);//?
//获取代码点
int index = str.offsetByCodePoints(0,2);
System.out.println(index);//2
int cp = str.codePointAt(index);
System.out.println(cp);//120134
// 码点转化为字符串
char[] chars = Character.toChars(120134);
String str1 = new String(chars);
System.out.println(str1);//𝕆
}
//3.6.9 构建字符串
private static void StringBuilderDemo(){
StringBuilder b = new StringBuilder();
b.append("静");
b.append("夜思");
String completedString = b.toString();
System.out.println(completedString);
StringBuilder d = b.delete(0,2);
System.out.println(d);
}
}
明天计划的事情:
流程控制, 数组类型, 面向对象
遇到的问题:
焦虑,影响到了进度。已经相同了,明天进度快一点
收获:在输出语句中,一次只能传出一个参数,传多个参数不行,需要在中间加 " " 转换成字符串,变成一个参数,就可以传出去了。String字符串变量不可更改可共享,字符串是一个类,当创建几个变量,它们都是同一个值时,它们这时候指向的同一个对象,而 ==判断的是指向同一个对象,和值没有关系,当值相同对象不同时,这时候 ==判断是false,故判断两个值相等时不能用 ==,而是要用equal。
看书学习:
1.先讲书中内容大概看一下
2.直接动手开始做,不懂翻书
3.在注释写下知识点
4.多问几个为什么?自己不知道地方都问出来?
5.复习时可参考网站的练习题目
复习昨天学习的内容:
1.先大概讲知识看一下
2.直接去看网站做题,不要复制代码,先自己写
3.写代码过程中,记下不懂的知识点,然后在去看一下。
评论