基本数据类型转换
java中可以从任意的基本类型转换到另外的任意基本类型.
boolean除外.boolean不可以转换为其他的数据类型.
数据类型的转换分为默认转换和强制转换
默认转换
整形,字符型,浮点型的数据在混合运算中相互转换,
转换时默认将容量小的转化为容量大的数据类型.
容量大小排序为 byte=short=char<int<long<float<double
byte short char不会互相转换,他们在计算时会首先转换为int类型
/*
基本数据类型转换
默认转换:容量小的转换成容量大的,可以直接转换
*/
byte q=10;
int w=q;
long e=w;
float r=e;
double t=r;
强制转换
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
//强制类型转换
// 从容量大的转换成容量小的
// 缺点1 溢出装不下
int x= 127;
byte i=(byte)x;
//缺点2 精度降低 注意 混合运算时小容量会自动转为大容量计算.
float p=10.9f;
int o=(int)p;
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
运算符
Java 语言支持如下运算符:
算术运算符: +,-,,/,%,++,–
字符串连接运算符:+
关系(比较)运算符: >,<,>=,<=,==,!=
逻辑运算符: !,& , | , &&,||
赋值运算符: = ,+ =,- =, =,/ =
条件运算符
位运算符
算数运算符
比较运算符
比较运算符的结果都是boolean型,也就是要么是true,要么是false.
逻辑运算符
逻辑运算符:
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ ):当左右都为true时,结果为false。
赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
条件运算符
语法:
(条件表达式)? 表达式1:表达式2;
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
(grade>60)? 及格:不及格;
位运算
日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.
表达式的运算顺序
控制台输入
使用标准输入串System.in
使用Scanner取得一个字符串或一组数字
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以 取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转 换成布尔型。
例: System.out.print(“输入”); Scanner scan = new Scanner(System.in); String read = scan.next (); System.out.println(“输入数据:”+read);
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
import java.util.Scanner;
public class cda {
public static void main(String[] args) {
double person=0;
Scanner s=new Scanner(System.in);
int dog=s.nextInt();
System.out.println("狗的年龄"+dog);
控制语句
条件语句 - 根据不同条件,执行不同语句。
if
if … else
if … else if
if … else if … else if … else
switch
循环语句 – 重复执行某些动作
for
while
do … while;
if条件结构
if-else结构
if(){
//语句
}else{
//语句
}
if-else语句的另一种形式为
if(条件1){
语句1;
}else if(条件2){
语句2;
}else if(条件n){
语句n;
}
条件运算符与if-else的联系和区别:
(1)条件运算符可以简化if-else语句
(2)条件运算符要求必须返回一个结果。
(3)if后的代码块可有多个语句.
分支和循环结构
switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。
switch (表达式){
case value1: 语句序列1;
[break];
…………
case valueN: 语句序列N;
[break];
[default : 缺省语句;]
}
表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类型;
case语句后面只能使用常量表达式;
case后的值不能重复;
某个case分支如果没有提供break语句,则继续执行下一个case后的语句;
当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;如果没有default子句,则程序直接跳出switch语句。
public class Demo8 {
// switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。.
public static void main(String[] args) {
int day=1;
switch(4){
case 0:
System.out.println("星期日");
break;
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
default:
System.out.println("");
}
}
}
switch和if语句的对比
如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可 以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
什么是循环
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分
循环变量的初始化
循环条件部分
循环体部分
循环变量的更新
循环语句分类
while 循环
do/while 循环
for 循环
while &do while 语句
while 语句为如下形式:
while(逻辑表达式){ 语句; … ; }
执行过程
先判断逻辑表达式的值。若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件 不成立 为止
while(条件){
//语句
}
do while 语句为如下形式:
do { 语句; … ; } while(逻辑表达式);
执行过程
先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。
do{
//语句
}while()
for循 环
for 语句为如下形式: for(表达式1; 表达式2; 表达式3){ 语句; … ; }
执行过程 首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句, 接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
public class ForDemo {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 1; j++) {
System.out.println("***");
break;
}
}
}
}
break & continue
break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,退出循环
if (i == stop){
break;
}
System.out.println(" i= " + i);
}
continue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中 continue 语句下面未执行的循环,开始下一次循环过程;例如:
int skip = 4;
for (int i = 1; i <= 5; i++) {
//当i等于skip时,跳过当次循环
if (i == skip){
continue;
}
System.out.println("i = " + i);
}
循环嵌套
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
结束外层循环
如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,然后在需要跳出的地方,用break label就行了.
java中的方法
Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含于类或对象中.
方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}
修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
return 语句终止方法的运行并指定要返回的数据。
return语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 表达式; //将表达式的值返回
return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略