1. 变量
数据类型:Java是一种强类型编程语言
生命周期:有效范围。Java提供了垃圾回收机制
数据类型:Java是一种强类型编程语言
生命周期:有效范围。Java提供了垃圾回收机制
Java中的数据类型可以分为两大类型:基本类型【原生】和应用类型【复杂】
1.1基本类型
4型8种:
(1)整型:byte【1字节】、short【2字节】、int【4字节】、long【8字节】
4种不同的表示方式:十进制、八进制【0开头】、十六进制【0x开头】、二进制【0b开头】
(2)浮点数:folat【4字节】、double【8字节】
在Java中浮点数无法精确存放,除非使用Java提供的BigDecimal。
不允许使用“==”判断,应该使用Math.abs(a-b)
(3)字符类型:char 【char c ='中'】;注意是单引号
Java中字符采用的是Unicode编码字符集,2B,对应整数为0-65535。
Java中提供了转意字符,以反斜杠开头:
(1)ddd:1-3位的8进制数对应的字符
(2)uxxxx: 1-4位的16进制数对应的字符
(3)': 表示单引号,注意不允许' ' '
(4)": 表示双引号
(5)\:表示反斜杠字符
注意:'0'<'A'<'a'
(4)布尔类型:boolean
只有两个数值:true 表示真、false表示假
在Java中整型数据和Boolean值之间没有转换关系
常见的数学计算:
Java提供了一个Math类,其中包含了基本运算的属性和方法。
public class Test1 {
public static void main(String[] args) {
double kk=144;
System.out.println(Math.sqrt(kk));
double dd = 144.d;
System.out.println(Math.sqrt(dd));// 开平方
int k1 = 12;
System.out.println(Math.pow(k1, 2));// 计算k1的2次方
System.out.println(Math.pow(dd, 0.5));
k1 = -123;
System.out.println(Math.abs(k1)); // 绝对值
System.out.println(Math.max(dd, k1));//获取2个数值之间较大的数字
System.out.println(Math.min(dd, k1));// 获取2个数值之间较小的数字
// 浮点数转整数型
dd = 3.45;
System.out.println(Math.ceil(dd)); // 天花板
System.out.println(Math.floor(dd)); // 地板
dd = -3.45;
System.out.println(Math.ceil(dd));
System.out.println(Math.floor(dd));
// 四舍五入,注意考核中的坑在于负数的处理
dd = -3.45;
System.out.println(Math.round(dd)); // -3
dd = -3.56;
System.out.println(Math.round(dd));// -4
// 随机数
System.out.println(Math.random()); // 0.7683377459693336
}
}
除了简单计算外,还有指数、对数、三角和三角函数等方法的封装。
1.2基本类型的转换
小转大自动转,大转小需强转(窄化操作)
强制类型转换语法:(目标类型)变量
注意:Boolean类型和数值类型之间没有任何对应关系,所以进行强制类型转换会报语法错误。
浮点数的特殊处理:针对浮点数系统默认的是double类型,所以123.456会识别为double类型,但是变量声明为float型。所以需要进行数据类型转换或者进行特殊声明。
1.3复合数据类型
复合数据类型包括:类class、接口interface、数组
特殊值null,在运行是并没有对应的类型,但它可以被转换成任何复杂类型,表示没有存储数据,但是不能赋值给简单类型。
复合类型的默认值就是null空指针。
2.常量
常量就是指在程序执行的期间其值不能发生变化的数据。
final double PI = 3.1415; PI=PI+1;//语法报错是因为final表示PI是常量,不允许更改
3.表达式
表达式就是运算符、操作数以及方法的调用序列,用来说明某个计算过程并返回计算结果。
基本运算符可以分为:
(1)算数运算符:+ - * / % ++ --
例子:将一个任意正整数进行反转,如果数值越界则返回-1
public class Test3 {
public static void main(String[] args) {
int k =20487458;
long res =0;
while(k>0) {
int p =k%10;
k=k/10;
res=res*10+p;
if(res>Integer.MAX_VALUE) {
res=-1;
break;//立即终止循环的执行
}
}
System.out.println(res);
}
}
(2)关系运算符:> >= < <= ==等值 !=不等于
注意:==和=的区别
k=100;这是一个赋值计算,就是将=右边的计算结果赋值给=左边的变量
k==100;这是比较计算,判断k是否值为100,如果是返回true,否则flase.
(3)逻辑运算符:&&与运算(且),||或运算(或),!非运算(不是)【重点在计算过程中支持短路操作】
(4)位运算符:&与 |或 ^异或 ~按位取反 <<左移位 >>右移位 >>> 【基本不做要求,不支持短路操作】
(5)赋值运算符:= += -= *= /= %=
(6)三目运算符:(表达式1?表达式2:表达式3)
4.结构化编程
流程图是流经一个系统的信息流、观点流或部件流的图形代表。
流程图一般由由圆角矩形、矩形、菱形、平行四边形、箭头组成。流程图一般都是用圆角矩形来表示“开始”与“结束”,用矩形表示行动方案、普通工作环节,菱形表示判断,平行四边形表示输入输出,箭头表示工作流方向。
流程图是流经一个系统的信息流、观点流或部件流的图形代表。
流程图一般由由圆角矩形、矩形、菱形、平行四边形、箭头组成。流程图一般都是用圆角矩形来表示“开始”与“结束”,用矩形表示行动方案、普通工作环节,菱形表示判断,平行四边形表示输入输出,箭头表示工作流方向。
任何复杂的问题都可以使用三种基本算法结构来描述:顺序、选择和循环。
4.1条件分支语句
Java提供了两种判断语句if和Switch,这两种用于是实现条件判断,当符合某些条件时执行某段代码,否则不执行。
if结构
if(条件判断语句){
代码段1;
}else{
代码段2;
}
例子:
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
// Scanner sc=new Scanner(System.in);
// boolean bb=sc.nextBoolean();
// if(bb==false) {
// System.out.println("性别为女!");
// }
Scanner sc=new Scanner(System.in);
int score=sc.nextInt();
if(score>=80) //当大括号里面只有一句语句时,可以省略大括号
System.out.println("成绩优秀");
else if(score>=70)
System.out.println("成绩良好");
else if(score>=60) {
System.out.println("成绩合格");
}else {
System.out.println("成绩不合格!");
}
}
}
Switch结构
switch(表达式){
case 值1:
代码段1;
break;
case 值2:
代码段2;
break;
......
default: //当所有case都不成立时,则执行代码段n
代码段n;[break;]
}
例子:
import java.util.Scanner;
public class Testnian {
public static void main(String[] args) {
System.out.println("请输入月份:");
Scanner sc= new Scanner(System.in);
int month =sc.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("本月有31天");
break;
case 2:
System.out.println("请输入年份:");
int year=sc.nextInt();
if((year%4 == 0 && year%100 != 0)||(year%400 == 0)) {
System.out.println("本月有29天");
}else {
System.out.println("本月有28天");
}break;
case 4:
case 6:
case 9:
case 11:
System.out.println("本月有30天");
break;
default:
System.out.println("月份输入错误");
break;
}
}
}
4.2循环结构
在Java程序中,循环控制就是某一个条件下,控制程序重复执行某一段代码,直到遇到终止条件为止。
循环语句也称为迭代语句,有while、for和do...while三种循环语句。
4.2.1while循环
while(条件){执行语句;}当条件成立时反复执行语句,直到条件不成立为止。
public class leijiaqi {
public static void main(String[] args) {
int res =0;
int k=0;
while(k++<100) {
res+=k;
}
System.out.println("1+2+3+...+100="+res);
}
}
注意:break和continue的用法
break:立即终止循环,进入循环结构的后续代码继续执行,循环体执行结束。
continue:终止本次循环,进入下一次循环,循环并没有结束
4.2.2for循环
for(表达式1;表达式2;表达式3){循环体;}
基本执行流程:1、执行表达式1。2、执行表达式2,一般表达式2是一个条件判断,如果值为true则执行循环体,否则终止循环体的执行。3、执行完循环体后执行表达式3。4、再次执行表达式2以判断是否执行循环体。在整个循环的执行过程中表达式1执行且只执行一次。
int res=0;
for(int k=1;k<=100;k++){
ers+=k;
}
System.out.println(res);
4.2.3do...while循环
do{循环体;}while(条件)
先执行循环体,然后进行条件判断,如果条件为true,则执行下次循环;如果条件为false则终止循环。不同于while循环的特征: dolwhile循环至少需要执行循环体一次;而while循环有可能一次都不执行循环体。
int res=0;
int k=1;
do{
res+=k++;
}while(k<=100)
System.out.println(res);
实际上三种循环可以相互替代。
(1)for循环一般用于可以明确循环次数的场景中
(2)while循环一般用于不能明确知道执行次数的场景中
(3)do/while循环一般用于不能预先明确循环次数,但是同时要求循环体至少执行一次的场景中
5.系统预定义类
Java 5 添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。
nextInt()只读取int值,就是只能读取整数类型的数据,如果输入了非整型的数据(浮点型字符串等)就会报错。nextFloat、nextDouble这些也是以此类推,只能读取符合该类型的数据。
注意在class类定义的上方应该添加import java.uti1.scanner;
import java.util.Scanner;
public class Testnian {
public static void main(String[] args) {
System.out.println("请输入月份:");
Scanner sc= new Scanner(System.in);
int month =sc.nextInt();
}
System.out.println();
}



