数据类型转换
默认转化
容量小的可以转化为大容量的数据类型,数据类型按照容量大小排序为:byte,short,char<int<long<float<double.其中byte,short,char之间不会相互转化,在计算时会转化为int类型.
byte b=10;
int a=b;
long x=a;
double y=x;
强制转化
容量大的转化为容量小的数据类型,需要强制转化符,但是会出现两种问题:溢出现象,精度降低.
double a=1.98;
int b=(int) a;//精度降低
System.out.println(b);//b=1
int x=255;
byte y= byte(x);//溢出
运算符
算术运算符: +,-,*,/,%,++,–.算数运算时使用,其中自增和自减,++a先运算后取值,a++先取值在运算.
/*算数运算符
+ 表示一个正数,字符串 连接
+ 加法运算
-,*,/,%, 数值运算
++,-- */
int a=10;
int b=5;
int c=3;
/* ++a 先运算后取值
a++ 先取值后运算
*/
a=b++ +c; // 8
// a=++b +c; 10
System.out.println(a);
关系(比较)运算符: >,<,>=,<=,==,!=.
/*比较运算符
== !=
结果为 ture false
> < >= <= 数值与数值(char)
*/
int a=10;
int b=5;
int c=3;
System.out.println(a==b);
String x="abc";
String y="abc";
System.out.println(x==y);
逻辑运算符: &—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
int a=10;
int b=5;
int c=3;
// & 与运算 都为真才为true 当左边为假的时候 右边会继续进行运算
System.out.println(a>b&a<c);
System.out.println(a>b&a>c);
System.out.println(a<b&++a>c); //a=11
System.out.println(a);
// &&与运算(短路与) 都为真才为true 当左边为假的时候 直接结束运算
System.out.println(a<b&&++a>c); //a=10
System.out.println(a);
// !非运算 取反
System.out.println(!true);
// |或运算 有true即为true 都为false才为false
// ||或运算 (短路或) 当左边为真的时候 直接结束运算
System.out.println(a>b||++a<c); //a=10
System.out.println(a);
// ^异或运算 当左右都为true 结果为false
练习:如何将两个数值不借用第三变量进行交换.
public class Operdame {
public static void main(String[] args) {
// 两个数值不借用第三个变量进行交换 通过异或运算
int a=3;
int b=2;
/* 0011
0010
0001
0010
0011
*/
a=a^b;
b=b^a;
a=a^b;
System.out.println(a);
System.out.println(b);
}
}
赋值运算符: = ,+ =,- =,* =,/ =
/*
赋值运算符 =
扩展赋值运算符 +=, -=, *=, /=, %=
*/
short a=3;
a=a+2;//类型转换出现问题
a+=2; //自动转换类型
// 分辨==和=
boolean b=false;
if(b=true){
System.out.println(true);
}else{
System.out.println(false);
}
条件运算符
/*
条件运算符
(条件表达式)?表达式1:表达式2
*/
int a = 60;
String r = (a>=60)?"及格":"不及格";
System.out.println(r);
表达式中的运算顺序
控制台输入
在程序中交互式输入数据,使用Scanner取得一个字符串或一组数字,使用标准输入串System.in.Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型.
Scanner scan= new Scanner(System.in);
System.out.println("请输入");
String r=scan.next();
控制语句
if条件结构语句,其中if后的括号中写明条件,语句是用{}包含语句块.
int a=66;
if(a>60){
System.out.println("考试及格");
}else{
System.out.println("考试不及格");
}
条件运算符与if-else的联系与区别:
条件运算符可简化if-else语句,条件运算符要求必须返回一个结果; if后的代码块可有多个语句.
switch语句,多分支选择语句,根据表达式的值,执行某分支的操作或某分支及之后分支的操作.
package Day2;
public class Opear6 {
public static void main(String[] args) {
int a=3;
// switch后的表达式可以为byte,int,short,int,char,枚举类型,也可以使用String类型
switch(a)
{
//case 后面只能使用常量表达式 不能重复
case 0:
System.out.println("春天");
// break;//不执行下一个case的语句
case 1:
System.out.println("夏天");
case 2:
System.out.println("秋天");
defaule : System.out.println("查无此项");
}
}
}
if语句与switch语句的区别
在具体的判断数量不多的情况下,switch语句效率会更高一点.对区间或者结果为boolean类型判断,使用if,if的使用范围更广.
循环
在某些情况中,需要对特定的代码反复进行执行,此为循环语句.
while&do while语句
while语句表达式为while(表达式){语句}.先判断逻辑表达式的值,若true,能执行后面的语句.
do while语句表达式为do{语句}while(表达式),先执行语句,然后在判断逻辑表达式的值.
package Day2;
public class Whiledame {
public static void main(String[] args) {
// while循环 先判断逻辑表达式 后执行语句
int a=1;
/*while(a<5){
System.out.println(a);
a++;
}*/
// do-while 先执行语句 再判断
do{
System.out.println(a);
a++;
}while(a<4);
}
}
for循环
for循环语句表达式为 for(表达式1; 表达式2; 表达式3){ 语句; … ; },表达式用;隔开.
for语句执行过程:先执行表达式1,然后执行表达式2,若表达式2为true,则执行循环语句,接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
package Day2;
public class Fordame {
public static void main(String[] args) {
// for 循环
/*
输入三行三列*
***
***
***
*/
for (int i = 0; i < 3; i++) {
for (int j = 0; j <3 ; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
break&continue语句
break语句为结束某段程序的执行,在循环语句中,可以退出循环.
continue语句为跳过循环语句中的本次循环,下一个循环继续执行.
// break 终止
for (int i = 0; i < 5; i++) {
if(i==3){
break;
}
System.out.println(i);
}
// continue 跳过当次循环
for (int i = 0; i < 6; i++) {
if(i==4){
continue;
}
System.out.println(i);
}
}
}
循环嵌套
将循环放在另一个循环体中,就是嵌套循环,如while,if,do while,都可为外层嵌套或者内层嵌套.
java中的方法
方法,在其他语言中称为函数,定义一个新的方法,然后再主方法中可以调用此方法,调用方法的语句为:对象名 方法名(实参列表),实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配.
package fangfa.day4;
public class MethodDameo {
public static void main(String[] args) {
/*
方法
[访问权限修饰符 修饰符] [返回值类型]/void 方法名([参数类型 参数名称]){
语句
return 值
}*/
// 创建方法所在类的对象
MethodDameo m=new MethodDameo();
int r=m.getMax(3,2);
System.out.println(r);
m.open();
}
// 创建一个开门的方法
public void open(){
System.out.println("开门");
}
// 输入两个数 输出最大的一个
public int getMax(int a,int b){
return (a>b)?a:b;
}
}
return语句
return语句是在当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
//return第一种形式 不返回值
public void test(){
int a=1;
if(a==2){
return;//return后面可以不加任何值 终止方法运行 没有返回值
}
}
//return第二种形式 返回此方法中表达式的值
public int test(){
for (int i = 0; i <5 ; i++) {
if(i==2){
return i;
}
}
return 0;
}