java小结

java小结_第1张图片

八大基本变量

boolean--1bit

byte--8bit

short--16bit

int--32bit

long--64bit

char--16bit

float--32bit

double--64bit

条件和循环语句

1.if 语句

语法说明

if 是该语句中的关键字,后续紧跟一对小括号,该对小括号任何时候不能省略,小括号的内部是具体的条件,语法上要求该表达式结果为boolean 类型。后续为功能的代码,也就是当条件成立时执行的代码,在程序书写时,一般为了直观的表达包含关系,功能代码一般需要缩进。

注意:1.if(条件表达式)后续一般不书写分号

if 语句的执行流程为:如果条件表达式成立,则执行功能代码,如果条件表达式不成立,则不执行后续的功能代码。


if-else 语句

if-else 语句实现了封闭的条件,在程序中使用的更加常见。其中else关键字的作用是“否则”,即条件不成立的情况。

语法说明:其中前面的部分和if 语句一样,else 部分后面是功能的代码

执行顺序:如果条件成立,则执行if 语句中的功能代码,否则执行else 中的功能代码。当程序中有多个if 时,else 语句和最近的if 匹配。


switch 语句

switch 关键字的中文意思是开关、转换的意思,switch 语句在条件语句中特别适合做一组变量相等的判断,在结构上比if 语句要清晰很多。

当表达式的值和对应case 语句后的值相同时,既从该位置开始向下执行,一直执行到switch 语句的结束,在执行中,如果遇到break 语句,则结束switch 语句的执行。



while 循环:

在执行时,如果布尔表达式的结果为真,则循环中的动作将被执行。这将继续下去,只要该表达式的结果为真。


do...while 循环:

do ... while循环类似于while循环,不同的是一个do ... while循环是保证至少执行一次。


for 循环:

for(初始化步骤;布尔表达,循环条件;循环变量递增)

for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。

知道多少次的任务是要重复一个for循环是有好处的。

步骤:

初始化步骤首先被执行,并且仅一次。这个步骤可声明和初始化任何循环控制变量。不需要把一个声明在这里,只要一个分号出现。

接下来,布尔表达式求值。如果是 true,则执行循环体。如果是 false,则循环体不执行和流程控制的跳转到下一个语句过去的for循环。

之后循环体在for循环执行时,控制流程跳转备份到更新语句。该语句允许更新任何循环控制变量。这个语句可以留空,只要一个分号出现的布尔表达式之后。

布尔表达式现在再次评估计算。如果是 true,循环执行,并重复这个过程(循环体,然后更新的步骤,然后布尔表达式)。之后,布尔表达式为 false,则循环终止。

foreach:

声明: 新声明块变量,这是一种与正在访问数组中的元素兼容的。变量将是可利用的块内并且它的值将是相同的作为当前的数组元素。

表达: 这个计算结果完成需要循环数组。表达式可以是一个数组变量或方法调用返回一个数组。


break关键字:

关键字break是用来停止整个循环。 break关键字必须使用任何循环或switch语句中。

关键字break将停止最内层循环的执行,并开始执行的下一行代码的程序段后。


continue 关键字:

continue关键字可以在任一环的控制结构可以使用。它使循环立即跳转到循环的下一次迭代.

在for循环中,continue关键字会导致流程控制的立即跳转到更新语句。

在一个while循环或do/while循环,流控制的立即跳转到布尔表达式。


格式化输出

1.DecimalFormat

DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字

符号含义

0 一个数字,若不存在,用0填充

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符 如:#,# 那么10会变为1,0

; 分隔格式。

- 缺省负数前缀。

% 乘以 100 和作为百分比显示

? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用

国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代

替十进制分隔符。

X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

forExamble

DecimalFormat df1 = new DecimalFormat("0.0");

DecimalFormat df2 = new DecimalFormat("#.#");

DecimalFormat df3 = new DecimalFormat("000.000");

DecimalFormat df4 = new DecimalFormat("###.###");

System.out.println(df1.format(12.34));

System.out.println(df2.format(12.34));

System.out.println(df3.format(12.34));

System.out.println(df4.format(12.34));

结果:

12.3

12.3

012.340

12.34


2.printf

参数 输出格式:指定数据输出时的格式;

输出字符串:指定要输出的数据。

格式替代符

%b 相对应的参数被视为含有要被处理的转义序列之字符串。

%c ASCII字符。显示相对应参数的第一个字符

%d, %i 十进制整数

%e, %E, %f 浮点格式

%g %e或%f转换,看哪一个较短,则删除结尾的零

%G %E或%f转换,看哪一个较短,则删除结尾的零

%o 不带正负号的八进制值 %s 字符串

%u 不带正负号的十进制值

%x 不带正负号的十六进制值,使用a至f表示10至15

%X 不带正负号的十六进制值,使用A至F表示10至15


常用类型

1.Arrays

Arrays静态方法:

asList(T... a)                                  返回一个列表

binarySearch()                               二分查找,        基本类型都可以

copyOf                                          复制数组

copyOfRange()                      复制特定范围的数组

equals()                                       比较是否相等

fill()                                              填充数组

parallelSort()                          指定范围的排序,并行计算,速度较快

sort()                                     排序,串行计算

toString                                       转换为字符串

附:数组声明的三种方式

1) int[] nus={1,2,3,5};

2) String[] names=new String[3];

3)date[] dates=new Date[] {new Date(),new Date()};


String

charAt(int index)返回字符串中第index个字符;

length()返回字符串的长度;

 indexOf(String str)返回字符串中第一次出现str的位置;

 indexOf(String str,int fromIndex)返回字符串从fromIndex开始第一次出现str的位置;

 equalsIgnoreCase(String another)比较字符串与another是否一样(忽略大小写);

replace(char oldchar,char newChar)在字符串中用newChar字符替换oldChar字符

startsWith(String prefix)判断字符串是否以prefix字符串开头;

endsWith(String suffix)判断一个字符串是否以suffix字符串结尾;

 toUpperCase()返回一个字符串为该字符串的大写形式;

public String toLowerCase()返回一个字符串为该字符串的小写形式

substring(int beginIndex)返回该字符串从beginIndex开始到结尾的子字符串;

 substring(int beginIndex,int endIndex)返回该字符串从beginIndex开始到endsIndex结尾的子字符串

 trim()返回该字符串去掉开头和结尾空格后的字符串

split(String regex)将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组


StringBuffer和StringBuilderh和String

String:字符串常量

StringBuffer:字符创变量,线程安全的

StringBuilder:字符创变量,线程非安全的

三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String

String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,从而导致效率低。

而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结

 1.如果要操作少量的数据用 = String

2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

你可能感兴趣的:(java小结)