第一节:Java的基本数据类型
一:按照数据类型来分类主要分为以下两种
基本数据类型:byte(一个字节)、short(两个字节)、int(4个字节)、long(8个字节)、float、double、 float、double、char(2字节)、boolean。
需要注意的三个点:①定义long型变量必须要以大写的L或小写的l结尾
②定义float变量时要以f或F结尾。通常使用double型
③ char c6 = '\u0043';//字符也可以通过Unicode编码进行表示
引用数据类型:class、interface、数组。
二:基本数据类型的运算规则
前提:去除boolean类型的运算。
1.自动类型提升:当容量小的跟容量大的做运算时,结果自动提升为容量大的数据类型。
例如: short s = 5;
//s = s-2;编译无法通过,因为此时等号右边自动类型转换为int型而变量s为 byte 型,所以编译无法通过
在此需要注意一点:++和*运算符不会改变原来的运算符
例一:byte b1 = 127;
b1++;//此时b1仍为byte类型例二:int i = 1;
i *= 0.1;//不会改变原有数据类型,若是 i = i * 0.1则会报错。
2.此时的容量大小,表示的是数的范围的大和小。
3. byte、char、short---》int--->long--->float---->double
4. 特别的当byte、char、short三种类型做运算时结果为 int 类型
注意: 整形常量,默认类型以int型存储, 浮点型常量,默认类型为double型
例如:long cc1 = 123425364646464646l; // 后面如果不加l以int类型存储就会超出int的范围,进而报错
float ff1 = 12.3f;//如果不加f相当于以double类型进行存储,而接受值的变量为ff1为float类型, 相当于容量大的往容量小的进行转化,所以要报错,
第二节:运算符的使用
1:逻辑运算符
①对于&&只要前面的条件为假,后面的条件就不执行了。对于&前面为假后面的条件也要执行。但是运算结果是相同的。
②对于|和||,二者运算结果是相同的,当符号左边是false时,二者都会执行符号右边的运算,但当左边为true是|仍要执行两边但||不在执行右边的运算了。
2.位运算符
①<<:在一定的范围内,每向左移一位,相当于*2
②>>:在一定范围内,每向又移一位,相当于/2
③& (二进制运算符),化成二进制代码然后在进行运算。此时两边都是数值。
④三元运算符: (n1 > n2)? n1 : n2;//求n1与n2中的大值
第三节:流程控制
一:switch语句使用需要注意点
switch语句中除了boolean和浮点型 不能放其他都能放
public static void main(String[] args) {
String season = "summer";
switch(season) {//除了boolean和浮点型不能放其他都能放
case "spring": //case字后只能声明常量,不能声明范围。
System.out.println("春暖花开");
break;
case "summer":
System.out.println("夏日炎炎");
break;
default: //default位置是任意的
System.out.println("输入有误");
}
二:从键盘获取不同类型的变量,需要使用Scanner类
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//实例化对象
// int num = scan.nextInt();
System.out.println("请输入你的姓名");
String name = scan.next(); //调用Scanner的相关方法。
System.out.println(name);
//System.out.println(num);
System.out.println("请输入你的体重");
double weight = scan.nextDouble();
System.out.println(weight);
//对于random huode区间[a,b]的随机数,Math.random()*(b-a+1) + a;
三:循环:必须要有循环退出的条件
例如:通过for循环来求10000以内的素数
public class PrimeNumber {
public static void main(String [] args) {
long start = System.currentTimeMillis();
label: for(int i = 2;i <=10000; i++) {
//boolean isFlag = true;
//通过取根号来优化,对本身是质数的自然数是有效的
for(int j = 2; j <=Math.sqrt(i);j++) { //因为一个数总是可以分解为一个数乘以另外一个数
//
if(i % j == 0) {
continue label; //如果i不是质数,直接结束当前循环,开始下一次循环.
/* isFlag = false;
break;//优化一:对本身非质数的自然数是有效的。*/
}
}
System.out.println(i);
/*
if(isFlag == true) {
System.out.println(i);
}*/
}
long end = System.currentTimeMillis();
System.out.println("程序运行的时间为:" + (end-start));
}
}