声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)
组成:变量由三部分组成:类型+名称+数值
概念:变量相当于内存中一个数据存储空间的表示
布尔型 | boolean[1],存放true或者false |
字符型 | char[2],存放单个字符 |
数值型 | 整数类型:byte[1],short[2],int[4],long[8] |
浮点数类型:float[4],double[8] |
变量名字的命名规范
1.首字母要小写 | myBank |
2.一般数字,字母,_和$等组成的,但是数字不能开头 | myBank_1 |
3.小驼峰的命名规则(单词首字母大写),或者使用_连接多个单词 | myBankGood |
4.见名知意 | month、week、year |
5.不能使用Java的关键字 | 比如: int、short、double |
精度小的自动转换为精度大的
规则:
char->int->long->float->double
byte->short->int->long->float->double
1.系统首先自动将所有数据类型转换成容量最大的那种数据类型,再进行计算 | eg: int n1=10; float d1=n1+1.1;//这就是错的,因为1.1是double数据类型,不能转成float float d1=n1+1.1f;//这个时候就可以了 |
2.精度大的赋值给精度小的就会报错 | |
3.byte,short和char直接不会进行自动转换 | 当把一个具体的值赋给byte时,编译器会先判断,如果是在byte的范围就可以, 但是如果把一个int类型的值赋给byte是不行的 |
4.byte,short,char三者之间可以进行计算,在计算时会转为int类型 | byte b1=1; byte b2=3; short s1=2; short s2=b1+s1;//错误的 int i1=b1+s1;//对的 byte b3=b1+b2;//不可以,虽然是两个byte加减但是还是转为了int |
5.boolean不参与自动转换 | |
6.表达式结果的类型自动提升为操作数中最大的类型 |
将容量大的数据类型强制转换为容量小的数据类型,()强制类型转换符,但是可能造成精度降低或溢出
1.强转符号()只针对最近的操作数有效 | eg: int x=(int)10*6.5;//错误的,double无法转int int x=(int)(10*6.5);//可以了 |
2.char类型可以保存int的常量值,不能保存变量值,需要进行强转 |
注意转换一定要是能转换的,不要出现"hello"转int
基本数据类型->String | eg: int n1=100; String s1=n1+"";//此时输出s1就是string 类型的100 |
String->基本数据类型 | //eg:用到一个parse的方法,调用基本数据类型对应的包装类的相应方法 String s5="123"; int num1=Integer.parseInt(s5); double num2=Double.parseDouble(s5); float num3=Float.parse.Float(s5); boolean num4=Boolean.parseBoolean("true"); |
String->基本数据类型 | 特殊点的,String -> char: 一般来说字符串转字符都是拿到第一个字符,用charAt(0)这一方法 String s1="123"; System.out.println(s1.charAt(0));//就会输出字符"1"; |
1.类(class) 2.接口(interface) 3.数组[]
+ - * / % += -= *= /= %= ++ --
>/>=/<=/==/!=
主要就是这么几个关系运算符,记住运算结果是Boolean类型,只有true/false,等式左边加不加括号都行
1.&&——全为真才真
||——有一个为真则为真
!——真假反转
2.短路原则:&(逻辑与)和&&(短路与)
二者都是全真为真,有假为假,区别在于短路与&&是当第一个为假时,JVM就不再判断第二个是真还是假,因为结果已经是假了,这样提高了效率,实际开发中也是常用这个
而且如果是||和&&连用的话,如果第一个是||,且第一个为true,那么后面就都不会再执行。所以一班开发中都是单独使用&&或者单独使用||。很少出现混用的情况
类似的逻辑或(|)和短路或(||)也是一样的道理
a^b,
a,b不同,为真,相同,为假
先学习语法格式和执行流程
if(表达式){
代码
}
表达式结果一定是Boolean类型的值,所以一定是关系或逻辑运算符的,如果为true才执行里面的代码
if(表达式){
语句体1
}else{
语句体2
}
写一个小案例:判断某一年是不是闰年。如果能被4整除,并且不能被100整除,或者能被400整除,就是闰年
public static void main(String[] args) {
int year =2023;
if((year%4==0 && year%100!=0) || year%400==0 ){
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
}
if(表达式){
语句体1
}else if(表达式){
语句体2
}else if(表达式){
语句体3
}else{
表达式4
}
哪个表达式为true就执行哪个表达式,一个比较经典的是根据学生成绩给分等级
swicth(表达式){
case 常量1:
表达式1;
break;
case 常量2:
表达式2;
break;
case 常量3:
表达式3;
break;
default:
表达式n;
break;
}
是swicth后面表达式里的值去匹配case后的常量,匹配上了就执行。这里又考虑到那个经典案例:根据学生成绩给分等级。如何用swicth语句去实现呢?其实很简单的
int num=89;
switch(num/10){
case 10:
表达式1;
break;
case 9:
表达式1;
break;
}
另外一个问题:swicth表达式里的值可以是什么类型?
可以是int 、 byte、 short、 char、jdk1.8及以后版本可以是string、枚举enum,其实主要就是int,byte和short可以是因为能转为int,而char可以则是因为可以转为ascll码表对应的数字,但是要记得加'',同时汉字是没有对应码表的。另外string类型要加""
以上就是今天的知识点,下面做题:
1、输入一个整数,判断这个整数是大于0,还是小于0,还是等于0。
2、输入一个整数,如果这个整数等于0输出“生成了一只白猪”,如果输入的整数等于1输出“生成了一只黑猪”,如果输入的是2输出“生成了一只红猪”,如果不是这三个数就输出“生成了一只变形猪”。
3、输出“你是男人吗?”,回答如果是:1,那么输出“原来你是男人呀,呵呵”,如果回答是:0,那么输出“你的性别难道是女?”。
4、输入一个整数,如果输入的数大于等于1000,那么输出“输入的数>=1000”,否则的话就输出“输入的数<1000”。
5、输入一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。提示:8%2==0 10%2==09%2=1
6.输入两个整数,计算他们的和,如果和大于100,就输出这两个数的乘积,如果和小于100,就输出这两个数的商
7、输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目地就是要让a中放的值总是小于或等于b中的数,输出。
建议初学者都敲一敲,很多东西看着会,实际自己上手敲的时候往往会出错。这次习题都比较简单,我就不出答案了,最后一题涉及到输入输出,给一个:具体知识点看下一节。
7、输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目地就是要让a中放的值总是小于或等于b中的数,输出。
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
if(a>=b){
int temp=a;
a=b;
b=temp;
}
System.out.println("a="+a);
System.out.println("b="+b);