wordpress对接COS后网站变慢,版面设计图大全简单又漂亮,微信小程序本地服务器搭建,常州网站建设招聘#x1f4a1;涉及的知识点速通#x1f6eb; 关于变量和常量你都知道啥?#x1f6eb; 和#xff06;、|和||有什么区别#xff1f;#x1f6eb; 关于字符串的问题你能答对几道#xff1f;#x1fa82; 可以修改一个字符串中的值吗?#x1fa82; 字符串使用… 涉及的知识点速通 关于变量和常量你都知道啥? 和、|和||有什么区别 关于字符串的问题你能答对几道 可以修改一个字符串中的值吗? 字符串使用和equals判等的区别? 空串和null串有啥区别? 这些String的常见API你都掌握了吗? String StringBuilder StringBuffer都是啥? 各位小伙伴们大家好欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏在这个系列专栏中我将记录浅学这本书所得收获鉴于 看到就是学到、学到就是赚到 精神这波简直就是血赚 扎哇太枣糕的博客首页 关于变量和常量你都知道啥?
变量 首先变量的声明遵循以下规范
只能包含字母、数字、美元符(“$”)、下划线(“”)但是不能以数字开头且$“和”_并不推荐在命名的时候使用不能使用Java中的保留字变量的命名区分大小写虽不强制要求但是尽量使用小驼峰(第一个单词首字母小写其他单词的首字母大写)命名 其次Java支持一次声明多个变量但并不提倡因为这种形式会降低程序的可读性(int i, j;)可以使用逐一声明的形式而且变量的声明要尽可能的靠近变量第一次使用的地方 最后变量声明之后还必须要进行初始化才能使用否则会编译器就会认为这个变量的使用是非法的。变量的初始化有三种机制
构造器Java中如果没有在构造器中显式的为字段设置初始值的话就会将其设置成默认值也就是不同数据类型数据所对应的默认值显式赋值也就是最常见的使用等于号初始化代码块Java中将类中使用花括号包裹起来的几行代码称为是初始化代码块初始化代码块随着类的加载而加载只要构造这个类的对象就会执行这个块里的代码。而且初始化代码块中的代码会在main方法之前执行初始化代码块中定义的变量和构造器一样有默认值机制 类变量(static修饰的变量)、实例变量可以使用构造器、显式赋值和初始化块三种机制进行初始化但是局部变量则只能也必须使用赋值语句进行显式初始化。常量 Java中常量必须在main方法的外部使用final进行定义常量定义的时候必须进行初始化一旦初始化之后就无法改变值的大小且常量的命名必须全部大写。静态变量和静态常量 静态变量也叫类变量是使用static修饰的变量静态变量属于类而不属于任何单个的对象也就是说即使不创建该类的对象这个静态变量依然存在不管创建多少个对象都是共享这一个静态变量。非静态变量也就是实例变量就不一样了实例对象属于对象必须使用对象调用无法直接调每创建一个对象都会得到一个实例变量的副本不同对象之间互不影响 静态常量的使用频率要明显高于静态变量在静态常量定义的时候往往都会加上final修饰这样的话它既可以被其他类直接使用类名调用又不用担心字段值被调用后随意修改产生的安全问题。之前输出语句的时候使用的out就是一个final修饰的PrintStream类型的静态常量PrintStream类里又内置了print、println、printf等方法用于输出 和、|和||有什么区别 (逻辑与)和(逻辑或)是逻辑运算符(短路与)和(短路或)是短路逻辑运算符。这两种运算符对应的的运算结果相同与运算的话是全真为真、有假则假或运算的是全假为假、有真则真。两种类型的运算符区别在于逻辑运算符会执行完左右两边的表达式之后返回一个结果短路逻辑运算符当能够得到结果的时候就会直接返回也就是说短路与的左边结果为false就会直接返回false短路或的左边结果为true就会直接返回true 补充一种进行位移运算的位运算符位移运算就是对一个数值的二进制表示进行左右移动的运算其中表示右移高位符号位补充表示左移低位补0则是右移高位补0注意并没有这个运算符 关于字符串的问题你能答对几道 可以修改一个字符串中的值吗? 不能。因为Java中字符串并不是内置的数据类型而是标准Java类库中提供的一个预定义类。字符串不只一种使用new的实例化方式使用双引号(“”)括起来的字符都是String类的一个实例使用new方式实例的对象对分配在堆内存中使用双引号实例的对象在常量池中字符串变量的值则是字符串对象的地址引用不管使用哪种方式给字符串变量重新赋一个新值都是看上去改变了这个字符串的值实际上只不过是改变了变量值的地址引用原来的字符串对象还在内存中存储且值不变 由上图就得以验证我们之前的结论是正确的使用双引号实例化的字符串对象存储在字符串常量池中所以连续创建两个内容相同的字符串会指向同一个地址。而且使用new实例化的字符串对象存储在堆内存中所以说使用两种方式实例化内容相同的字符串对象地址会不同。接下来的三种方式改变字符串的内容地址都和原地址不同也就是证实了字符串是一个不可变的数据类型 字符串使用和equals判等的区别? 是对两个字符串变量的引用地址值是否相等进行判断就算字符串的内容相等如果存储的位置不同也会返回false。String类中重写了Object的equals方法使之可以对字符串的内容进行判等查看源码不难发现重写之后的equals方法是对两个字符串的地址、长度、每一个字符顺序进行判断在判断的过程中但凡有一个不等就直接返回false。 趁热打铁结合字符串的两种实例化方式和两种判等方式找几个题做做答案放在文末了记得去对照一下 补充一个知识点如果想忽略字母大小写比较两个字符串的内容是否相等可以使用equalsIgnoreCase方法用法与equals相同 空串和null串有啥区别? 空串是一个长度为0内容为空的字符串属于是一个字符串对象null串表示这个变量并未引用任何的对象或者基本数据类型值属于是一个供引用数据变量引用的值。空串引用String的API 会返回值但是null串调用String的API 的话会报NullPointerException的错误。一般情况下都会使用if(str ! null str.length() ! 0)对字符串进行检查符合条件才会使用这个字符串。 这些String的常见API你都掌握了吗? 拓展一个compareTo方法该方法会对比两个字符串并返回一个int数值对比规则从第一个字符开始相比较返回第一个不同的两个字符的ASCII码的差值(前减后)如果说一个字符串是另一个的字串就返回二者的长度差 String StringBuilder StringBuffer都是啥? 这三种都是Java中用来操作字符串的类。区别就是String声明一个不可变的对象每次操作都会生成一个新的对象并将新的对象地址赋给原来的字符串变量而StringBuilder和StringBuffer都是在原来的对象上进行操作并不会产生新的对象所以说在需要经常改变字符串内容的情况下最好使用这两种类。 StringBuilder和StringBuffer也是有区别的StringBuffer线程安全但是性能相对较差StringBuilder线程不安全但是性能较高于是单线程的情况下推荐使用StringBuilder多线程的话就使用安全的StringBuffer 字符串的两种实例化方式和两种判等方式的问题答案