学习视频:狂神说Java
参考网站:菜鸟教程
打开CMD方式
管理员方式运行
常用命令
盘符切换:直接选择盘后加: 例如:D:+回车
查看当前目录下的所有文件:dir
同盘符切换目录:cd+路径;
不同盘符切换目录:cd+/d+路径
返回上一级:cd +…
清理屏幕:cls(clear scree)
退出终端:exit
查看电脑的ip:ipconfig
测试网络:ping+ip
打开应用
文件操作
有序
无序
接空格或者>直接回车
java的特性和优势
参考网址
简单性
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
面向对象
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
可移植性
这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
高性能
与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
分布式
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
动态性
Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
多线程
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
安全性
Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
健壮性
Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。
java三大版本
JDK:Java Development Kit
其它工具
JRE:java Runtime Environment
其它工具
JVM:Java Virtual Machine
卸载原有的JDK
卸载JDK(如果原来有下载)
删除java的安装目录:我的电脑-->属性-->高级系统设置-->环境变量-->系统变量--J>AVA_HOME(路径)-->删除该路径下文件
删除JAVA_HOME
删除环境变量path下关于java的目录
测试是否卸载成功:java -version
下载与安装JDK
JDK下载与安装
百度搜索JDK8,找到下载地址
同意协议
下载电脑对应版本
双击安装JDK--选择安装路径--一直下一步
记住安装的路径
配置环境变量:1、我的电脑-->属性-->高级系统设置-->环境变量-->系统设置-->新建系统变量JAVA_HOME(变量值就是上面java安装路径) 2、配置Path变量: 新建-->%JAVA_HOME%\bin; 新建-->%JAVA_HOME%\jre\bin
测试JDK是否安装成功 :
1、打开cmd(win+R)
2、java -version
JDK目录介绍
编译型
举例:美国人要看一本中文书,需要中国人把这本中文书翻译为英文书,再给美国人,这就叫编译型,编译过程需要的工具就叫java编译器。操作系统、C、C++都是编译型。要使用的时候直接将程序编译一下就可以用了。
解释型
举例:美国人要看一本中文书,雇佣了一个中国翻译官,翻译官一句一句给他翻译,等以后他又想看这本书的时候,就又得请翻译官给他翻译,这就叫解释型。网页还有服务器的脚本,对速度要求没有那么高,就可以使用解释型语言,就是边执行边解释。java是编译型也是解释型,javascript,Python都是解释型。
程序运行机制
/*
java程序运行机制
源程序(.java文件)通过java编译器编译成字节码(.class文件),class文件才真正的被执行。所以java在被真正执行之前经过了一次预编译,生成的代码就是介于源程序和机器码之间的字节码文件。字节码文件运行的时候,就会走到JVM(虚拟机),这个过程有很多步骤:
把字节码文件放到虚拟机的类转载器里面,这个类就被加载到JVM里面了,加载进来之后就放进字节码校验器里,检查代码写的有没有问题,如果没有问题那么就将其放到解释器解释给操作系统。
随着技术发展和硬件的发展,编译型和解释型的界限越来越模糊。因为硬件有提升,所以解释型速度也很快。
源程序到字节码经过了javac编译。
*/
标识符(identifier),是指类名(包括接口、枚举、抽象类)、方法名、变量、常量名、包名等可以自定义的字符组合。
虽然可以自定义,但是也要遵循如下规则:
由字母, 下划线, 数字, $ 符号组成;
只能以字母、下划线、$ 符号开头,不能以数字开头;
标识符长度没有限;
区分大小写
不能是关键字
java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
/*Java关键字不能用于常量、变量和任何标识符的名称。
关键字(keywords)是这Java语言规范约定用于表达语法含义的单词,截止JDK8.0,这部分单词总共有50个。
其中绝大部分关键词是Java语法发布之初就约定好的,少部分关键词是随Java语言发展后加入的。
strictfp JDK1.2 加入
assert JDK1.4 加入
enum JDK5.0 加入
还有少数单词,目前还没有明确的语法含义,但是Java语言也约定它是关键字,随着Java的发展,将来可能会被赋予语法含义。这部分关键词又被称为保留关键字(reserved keywords),如关键字列表中的const、goto 。
*/
访问控制
类、方法和变量修饰符
程序控制语句
错误处理
包相关
基本类型
变量引用
保留关键字
String不是关键字
java可以使用修饰符来修饰类中的方法和属性。主要由两类修饰符。
访问控制修饰符:public protected private default
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
非访问控制修饰符:abstract,final,static,synchronized。。。
在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value]...] ;
格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。
int a, b, c; // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22; // 声明并初始化 z
String s = "runoob"; // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量 x 的值是字符 'x'。
变量的命名规范
作用域
例子:
public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}
java常量
Java的数据类型分为两大类
字节
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,1B=8bit
字符:是计算机中使用的字母,数字,字和符号。
1bit表示1位,
1Byte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
基本类型
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
数值类型
整数类型
byte占1个字节范围
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
short占2个字节范围
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
int占4个字节范围
long占8个字节范围
这种类型主要使用在需要比较大整数的系统上;
浮点类型
浮点数不能用来表示精确的值,如货币;
Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。
字符类型char占2个字节
char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为 0);
最大值是 \uffff(即为65、535);
char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。
boolean类型:占1位,其值只有true和false两个
引用类型
数据类型扩展及面试题
整数扩展
浮点数扩展
最好完全避免使用浮点数进行比较,因为会精度丢失,如果想要进行计算然后比较就可以使用BigDecimal 数据工具类进行比较。
例子:
float f=0.1f;
double d=1.0/10;
System.out.println(f);//0.1
System.out.println(d);//0.1
System.out.println(f==d);//false
float d1=231212121212f;
float d2=d1+1;
System.out.println(d1==d2);//true
字符扩展
所有的字符本质都是数字
例子:
char c1='a';
System.out.println(c1);//a
System.out.println((int)c1);//强制转换 97
char c2 = '中';
System.out.println(c2);//中
System.out.println((int)c2);//强制转换 20013
char涉及到编码 Unicode编码可以处理各种语言的文字 占2字节 0-65536 最初的Excel最长有2的16次方=65536
例子:
char c3 = '\u0061';
System.out.println(c3);//a
转义字符
水平制表符(在文本该处插入一个tab键):\t
例子:
System.out.println("Hello\tWorld");
//Hello world
换行:\n
例子:
System.out.println("Hello\nWorld");
//Hello
//World
后退键:\b
回车:\r
换页符:\f
单引:’
双引:"
反斜杠:\
==与equals区别
==:比较的是对象的地址是否一致。
equals:比较的是内容是否一致。
例子:
String sa = new String("hello World");
String sb = new String("hello World");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc=sd);//true
例子解释:
前面的sa和sb是引用类型,采用==来比较的时候,比较两者地址是否一致,很明显sa和sb都通过new开辟了新的内存空间,存在两个不同的堆中,地址不一样,返回false。
后面的sc和sd是基本数据类型,都保存在字符串常量池中,不new的是指向同一个内存空间。所以地址一样,返回true。
equals:比较的是内容是否相同,如果第一个采用sa.equals(sb),这样就是对的。因为两者的内容是一样的。
布尔值扩展
例子:
boolean flag=true;
//Less is More! 代码要精简易读
if (flag) {
System.out.println("新手");}
if (!flag) {
System.out.println("老手");}
数据类型转换
java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低-----------------------------------------》高
byte,short,char–》int–》long–》float–》double
运算中,不同类型的数据先转化为同一类型,然后进行运算
强制类型转换
int i=128;
byte b=(byte) i;//-128 //强制转换 高-低 (类型)变量名 //内存溢出 Byte进去知道最大值为127,i为128,导致内存溢出
double d=i;//128 //自动转换 低-高
自动类型转换
注意点
注意点:
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、在把高容量转换为低容量的时候,强制转换
4、转换的时候可能存在内存溢出,或者进度问题
算术运算符:+,-,*,/,%,++,–
//++ -- 自增 自减 一元运算符
int a = 3;
//执行完这行代码后,先给b赋值,a再自增
int b = a++;//b=3;a=4;
//a++ a=a+1
System.out.println(a);//4
// 执行完这行代码前,a先自增,再给c赋值
//a++ a=a+1
int c = ++a;//c=5;a=5
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=,instanceof
逻辑运算符:&&,||,!
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a && b:"+(a && b));//a && b:false
//逻辑或运算:两个变量有一个额为真,则结果才为true
System.out.println("a || b:"+(a || b));//a || b:true
//如果是真的,则变为假,如果是假则为真
System.out.println("!(a && b):"+!(a && b));//!(a && b):true
//短路运算
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5 因为c<4是错误的,所以不再执行后面的c++,所以c的值没有变化
位运算符:&,|,^,~,>>,<<,>>>(了解即可)
条件运算符?:
String type=score<60?“不及格”:“及格”;//必须掌握
扩展赋值运算符:+=,-=,*=,/=
package pkg1[.pkg2[.pkg3…]];
javadoc命令是用来生成自己API文档的
生成JavaDoc文档方式
参数信息
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据
概念
基本语法
获取输入的字符串方式
next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
判断是否还有输入方式
使用与上面的方法对应。
获取其它类型数据的方法
这些的用法跟next()用法相似
循环输入
条件语句
if
if…else
双选择结构,有两个判断。
语法:
if(布尔表达式){
//如果布尔表达式的值为true}
else{
//如果布尔表达式的值为false}
if…else if…else
多选择结构,选择很多的时候使用。
语法:
if(布尔表达式 1){
//如果布尔表达式 1的值为true}
else if(布尔表达式 2){
//如果布尔表达式 2的值为true}
else if(布尔表达式 3){
//如果布尔表达式 3的值为true}
else{
//如果布尔表达式的值为false}
if语句至多有1个else语句,else语句在所有的else if语句之后;
if语句可以有若干个else if语句,它们必须在else语句之前;
一旦其中一个else if 语句检测为true,其它的else if以及else语句都将跳过执行。
嵌套的if…else:if(){if(){}}
可以在另一个if或者else if语句中使用if或者else if语句,可以像if语句一样嵌套else if…else
语句:
f(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
2为true执行代码}
}
switch 多选择结构
多选择结构实现方式是switch case语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch case 语句有如下规则:
语法:
switch(expressinon){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
default:
//语句
}
while循环
do…while循环:至少执行一次
while循环和do…while循环的区别:
do…while循环至少有一次执行do里面的内容,然后再判断while中的条件
while循环要先判断条件之后才可以执行while中的内容
for循环
/*for循环语句是支持迭代的一种通用结构,是最有效的,最灵活的循环结构。
for循环执行的次数是在执行前就确定了。
关于for循环有以下几点说明:
最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
执行一次循环后,更新循环控制变量。
再次检测布尔表达式。循环执行上面的过程。
语法格式如下:
*/
for(初始化; 布尔表达式; 更新) {
//代码语句
}
java增强for循环
Java5 引入了一种主要用于数组或集合的增强型 for 循环。
//Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式)
{
//代码句子
}
//声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
//表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
break关键字:用于强行退出循环,不执行循环中剩余的语句。
Continue关键字:跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
goto关键字
仍是关键字,但是未在语言中得到正式使用;Java没有goto,然而在break和continue身上,又看到goto的影子:带标签的break和continue。
“标签”是指后面是一个冒号的标识符,例如label:
对Java来说唯一用到标签的地方是在循环语句之前,希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随标签使用,他们就会中断到存在标签的地方。
//打印101-150之间所有的质数
//质数是指在大于1的自然数中,除了1和它本身以外不再有其它因数的自然数
int count = 0;
outer:for (int i = 101; i < 150; i++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0) {
continue outer;
}
}
System.out.print(i+" ");
}
Java方法是语句的集合,它们在一起执行一个功能。
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用
设计方法的原则:方法的本意是功能块,就是师兄某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
方法的优点
//Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段。方法包含一个方法头和一个方法体,定义语法如下:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
修饰符
返回值类型
方法名
参数类型
方法体
Java 支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
定义
规则
实现理论
命令行传参
注解:@Override
需要有继承关系,子类重写父类的方法,重写,子类的方法和父类必须要一致;方法体不同
方法的重写规则
为什么要重写
A方法调用A方法,就是自己调用自己。
把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归结构
进栈机制
dataType[] arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {
value0, value1, ..., valuek};
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
静态初始化
动态初始化
数组的默认初始化
通过下标拿到值
for循环
增强for循环
数组作为函数的参数
数组作为函数的返回值
多维数组的动态初始化
多维数组的引用
java.util.Arrays
数组本身没有提供方法给我们调用,但API中提供了一个工具类Aarrays来对数据对象进行一些基本操作
Arrays类中方法都是static修饰的静态方法,在使用的时候可是直接使用类型进行调用,也可以使用对象调用。
功能
介绍
处理方式
封装
该露的露,该藏的藏
高内聚
低耦合
封装(数据的隐藏)
属性私有,get/set
继承
概念:本质是对某一批类的抽象,从而实现对现实世界更好的建模。是类与类之间的一种关系。
extends的意思是“扩展”。子类是父类的扩展
Java中只有单继承,没有多继承
所有类默认继承Object类;
super
final关键字修饰类
声明为 static 的方法不能被重写,但是能够被再次声明。
super与this区别
代表的对象不同
前提
构造方法
私有的东西,子类无法继承
构造器
多态
概念
优点
多态存在的必要条件
多态的实现方式
Parent p=new Child();p.add()在编辑的时候,编译器使用Parent类中的add方法验证该语句,但是在运行的时候,Java虚拟机(JVM)调用的是Child类中的add方法。
概念
使用new关键字创建
声明
实例化
初始化
使用
构造器
作用
注意点
打开class文件
自动生成构造器的快捷键
概念
abstract修饰
抽象方法
抽象类总结规定
思考
概念
类型
枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
在内部类中使用枚举的时候,每个枚举都是通过内部类实现的,且所有的枚举值都是public static final的
class Color
{
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color GREEN = new Color();
}
使用for语句来迭代
enum Color
{
RED, GREEN, BLUE;
}
public class MyClass {
public static void main(String[] args) {
for (Color myVar : Color.values()) {
System.out.println(myVar);
}
}
}
检查性异常
运行时异常
错误ERROR
java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。
Throwable
Error
Exception
IOException
RuntimeException
抛出异常
throw
throws
捕获异常
然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。
Object:Number,Boolean,Character
Number:Byte,Short,Integer,Long,Float,Double
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
Date
SimpleDateFormat
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
在某些情况下,Java编译器会自动创建一个Character对象。
例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
Character ch = new Character(‘a’);
实例:
// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a';
// 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');
注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
String str=“Runoob”;
String str=new String(“Runoob”);
String创建的字符串存储在公共池中,而new创建的字符串对象在堆上。
字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
连接字符串
学习资料:https://blog.csdn.net/Zen99T/article/details/51255418
创建格式化字符串
我们知道输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
例子1:
System.out.printf("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);
例子2:
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
String方法
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
List(有序可重复)
ArrayList(常用)
LinkedList(链表)(常用)
Set(无序不可重复)
Iterator:迭代器
buffer
序列化
反序列化
Serializable
data
转换流
Filter
字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
例子1:
System.out.printf("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);
例子2:
String fs;
fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
String方法
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
List(有序可重复)
ArrayList(常用)
LinkedList(链表)(常用)
Set(无序不可重复)
Iterator:迭代器
buffer
序列化
反序列化
Serializable
data
转换流
Filter
XMind: ZEN - Trial Version
上一篇面向对象