第二章笔记-2
基本数据类型转换
java中有8种基本数据类型,除了布尔类型外其余7种之间可以相互转换
默认转换
默认转化:容量小的类型默认转化为容量大的byte,short,char<int <long<float<double直接转化,因为容量大的完全装的下容量小的
强制类型转化
强制类型转化:容量大的转化为容量小的
问题:1.溢出 2.精度降低
实例:
public static void main(String[] args) {
//默认转化:容量小的类型默认转化为容量大的
byte a = 20;
short b = a;
int c = b ;
long d =c ;
float f = d;
double g = f;
//强制类型转化:容量大的转化为容量小的
//数据类型不匹配,报错
/*int x = 10;
byte y =x;*/
int x = 10;
byte y = (byte) x;
//注意:混合运算时,小容量会自动转化为大容量计算
float z = 12.3f;
int m =(int) (a+x+z);
int m1=(int) (z)+x+a;
System.out.println(d);
System.out.println(g);
System.out.println(m);
System.out.println(m1);
}
运行结果:
算术运算符
+,-,*,/,%,++,–
“+”可以表示一个正数,加法运算和字符串的连接符
+,-,*,/,%只能进行算术运算,数值与数值之间的运算
注意++a和a++,–a和a–的区别
实例1:
public static void main(String[] args) {
int a=+5;
int b=3;
System.out.println(a+b);
String s="abc";
String s1="abcd";
System.out.println(b+s);
System.out.println(s+s1);
int x=10;
x++;
++x;
System.out.println(x);
}
运行结果:
实例2:
public static void main(String[] args) {
int i1 = 10,i2 = 20;
int i = i1++;
System.out.print("i="+i);
System.out.println("i1="+i1);
i = ++i1;
System.out.print("i="+i);
System.out.println("i1="+i1);
i = i2--;
System.out.print("i="+i);
System.out.println("i2="+i2);
i = --i2;
System.out.print("i="+i);
System.out.println("i2="+i2);
}
运行结果:
比较运算符
比较运算==,!=,<,>,<=,>=
==,!=可进行数值与数值,布尔与布尔,引用类型与引用类型之间的比较。
<,>,<=,>=可进行数值与数值间的比较。
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注意:比较运算符“==”不能误写成“=” 。
实例:
public static void main(String[] args) {
int a=5;
int b=10;
int c=15;
System.out.println(a>b);
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a<b);
boolean d=true;
boolean e=false;
System.out.println(d==e);
System.out.println(d!=e);
String s="abc";
String s1="abd";
System.out.println(s==s1);
System.out.println(s!=s1);
}
逻辑运算符
逻辑运算符:
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
注意:“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ ):当左右都为true时,结果为false。
实例:
public static void main(String[] args) {
int a=15;
int b=10;
int c=5;
//逻辑与
/*System.out.println(a>b & b>c);
//System.out.println(a<b & b>c);
//检验逻辑与左边为真时右边是否会参与运算
System.out.println(a<b & ++b>c);
System.out.println(b);*/
//短路与
System.out.println(a>b &&b>c);
//System.out.println(a<b && b>c);
//检验短路与左边为真时右边是否会参与运算
System.out.println(a<b && ++b>c);
System.out.println(b);
/* 异或运算^
非运算!
*/
boolean m=true;
boolean n=false;
System.out.println(!m);
System.out.println(m^n);
}
运行结果:
赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
public static void main(String[] args) {
int i=10;
i=i+5;
short x=10;
// x=x+2;由于数据类型的不同,编译器会报错
x+=2;
boolean b1 = false;//区分好==和=的区别。
if(b1==true){
System.out.println("结果为真");
}else{
System.out.println("结果为假");
}
boolean b2 = false;
if(b2=true){
System.out.println("结果为真");
}else{
System.out.println("结果为假");
}
int y = 1;
y*= 0.1;
System.out.println(y);
y++;
System.out.println(y);
int y1 = 1;
y1++;
y1*= 0.1;
System.out.println(y1);
}
运行结果:
条件运算符
(条件表达式)? 表达式1:表达式2;
为true,运算后的结果是表达式1;为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
public static void main(String[] args) {
int a=50;
String s=(a>60)? "及格":"不及格";
System.out.println(s);
}
运行结果:
位运算符
左移(<<),右移( >>) ,不带符号位右移 >>> ,与( &) , 或(|) ,非( ~) ,取反( ^)。
public static void main(String[] args) {
int a=2;
int b=7;
System.out.println(a<<2);
System.out.println(-8>>>2);
System.out.println(8>>2);
System.out.println(a&b);
System.out.println(a|b);
System.out.println(a^b);
System.out.println(~a);
}
运行结果:
表达式的运算顺序:
控制台输入
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型。
public static void main(String[] args) {
//输入一个数
//创建Scanner对象,接受从控制台输入
Scanner s=new Scanner(System.in);
System.out.println("请输入一个数字:");
//接受int类型
int num=s.nextInt();
//输出结果
System.out.println(num);
//输入一个字符串
//创建Scanner对象,接受从控制台输入
Scanner name=new Scanner(System.in);
System.out.println("请输入姓名:");
//接受String类型
String s1=name.next();
//输出结果
System.out.println(s1);
}
运行结果:
控制语句
条件语句:根据不同条件,执行不同语句。
if
if … else
if … else if
if … else if … else if … else
switch
循环语句:重复执行某些动作
for
while
do … while;
实例:
public class SwitchDemo {
/*
控制语句
if语句
if...else语句
if...else if...else if ...else语句
switch:多分支选择语句,根据表达式的值来执行多个操作中的一个
switch中的表达式可以是byte,short,int,char,枚举类型等,JDK7以后,可以使用String
case语句后面只能使用常量表达式
case:后面的值不能重复
*/
public static void main(String[] args) {
int day=1;
switch (day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 0:
System.out.println("星期天");
break;
default:
System.out.println("不合法的日期");
}
}
运行结果:
循环
循环语句功能:在某些条件满足的情况下,反复执行特定代码的功能。
循环语句的四个组成部分:循环变量的初始化,循环条件部分 ,循环体部分 ,循环变量的更新。
循环语句分类:
while 循环
do/while 循环
for 循环
while语句
实例1:
public static void main(String[] args) {
int i=0;
while(i<5){
System.out.println(i);
i++;
}
运行结果:
实例2:
public static void main(String[] args) {
int i = 0;
do {
System.out.println(i);
i++;
}while(i<5);
运行结果:
实例3:
public static void main(String[] args) {
int i = 0;
do {
i++;
System.out.println(i);
}while(i<5);
运行结果:
实例4:
public static void main(String[] args) {
int i=0;
do{
Scanner s=new Scanner(System.in);
System.out.println("请输入一个数字");
i=s.nextInt();
}while(i>5);
System.out.println("你当前输入的数字小于等于5");
运行结果:
实例5:死循环
public static void main(String[] args) {
while(true){
System.out.println("死循环");
}
运行结果:
for循环
实例1:
public static void main(String[] args) {
for(int i=0;i<5;i++){
System.out.println(i);
}
}
运行结果:
实例2:
public static void main(String[] args) {
int j=0;
for( ;j<5;j++){
System.out.println(j);
}
}
运行结果:
实例3:
public static void main(String[] args) {
int k=0;
for( ; k<5; ){
System.out.println(k);
k++;
}
}
运行结果:
实例4:
public static void main(String[] args) {
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.print("*");
}
System.out.println();
}
}
运行结果:
实例5:
public static void main(String[] args) {
for (int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
运行结果:
break语句
实例:
public static void main(String[] args) {
int a = 4;
for (int i = 1; i <= 10; i++) {
//当i等于a时,退出循环
if (i == a){
break;
}
System.out.println(" i= " + i);
}
}
运行结果:
continue语句:
实例:
public static void main(String[] args) {
int b = 4;
for (int i = 1; i <= 5; i++) {
//当i等于b时,跳过当次循环
if (i ==b){
continue;
}
System.out.println("i = " + i);
}
运行结果:
方法
Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含于类或对象中.
方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}
修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
Java语言中使用下述形式调用方法:对象名.方法名
return语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 表达式; //将表达式的值返回
return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略
实例1:
public static void main(String[] args) {
MethedDemo s = new MethedDemo();
Scanner input=new Scanner(System.in);
int x=input.nextInt();
int y=input.nextInt();
int z=input.nextInt();
System.out.println( s.getMax(x,y,z));
}
public int getMax(int x,int y,int z){
int max;
return ( max=(x>y)? x:y)>z ? max :z;
}
运行结果:
实例2:
public static void main(String[] args) {
show(5);
}
public static void show (int a){
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
System.out.print("*");
}
System.out.println();
}
}
运行结果: