Java学习记录2
文章目录
前言
今天是跟着韩顺平老师学Java的第二天,主要对之前忘得差不多的知识进行了一个捡起加梳理。韩老师的课程十分细致,个人认为是十足的宝藏。[韩顺平 零基础30天学会Java](本文章截图均来自韩顺平老师课程)
一、Java基础
注意事项
1.Java源文件以.java为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
2.Java应用程序的执行入口是main()方法。它有固定的书写格式:public static void main(String[] args){…}
3.Java语言严格区分大小写。
4.Java方法由一条条语句构成,每个语句以";”结束。
5.大括号都是成对出现的,缺一不可。[习惯,先写{}再写代码]
6.一个源文件中最多只能有一个public类。其它类的个数不限。
7.如果源文件包含一个public类,则文件名必须按该类名命名!
8.一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法
Java常用转义字符
\t:一个制表位,实现对齐的功能
\n:换行符
\:一个
“:一个”
‘:一个’
\r:回车(表示将光标的位置回退到本行的开头位置)
1.数据类型
Java八种基本数据类型
boolen(1)、byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)。
boolen:取值为true或false;
float:数最后必须加 f/F 声明该变量为float型;
double:浮点型数据默认数据类型(常用double,因为double精度更高);
注:由于计算机本身问题,在进行类似:8.1/3 这样的计算时会得出一个近似 2.7 的值(2.69999997等),而不是 2.7 。使用这类计算式写判断语句时需注意。
基本数据类型转换
自动转换:
char→int→long→float→double
byte→short→int→long→float→double
注:byte、short、char三者间可以进行运算,计算时它们会自动转换为int型(单类型计算和多类型计算都是如此)。
强制类型转换
在变量前加上希望转换的数据类型,如:byte b = (byte) a;
注:
1.强制转换可能造成数据损失
2.强转符号只对最近的操作数有效
字符串转换
在操作数后加双引号即可,如:String s1 = n1 + “”
int num1 = Integer.parseInt()
double num2 = Double.parseDouble()
float num3 = Float.parseFloat()
byte num4 = Byte.parseByte()
boolean num5 = Boolean.parseBoolean()
short num6 = Short.parseShort()
用 charAt(下标) 得到字符串中的字符
2.运算符
算术运算符
注:
Java中 % 的本质是:a % b = a - a/b *b。例:10 % 3 = 1; 10 % -3 = 1; -10 % 3 = -1; -10 % -3 = -1。
但当a为小数时,公式为:a%b = a - (int)a/b *b。例:-10.5%3 = -10.5 - (int)(-10.5)/3 *3 = -1.5
关系运算符
逻辑运算符
注:
&& 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
开发中,我们使用的基本是短路与&&,效率高。
|| 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
开发中,我们基本使用 ||
赋值运算符
1.运算顺序从右往左;
2.赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值。
例:int num = 20; int num2 = 78*34-10;int num3 = a;
3.复合赋值运算符等价于下面的效果
例:a+=3:等价于a=a+3;
4.复合赋值运算符会进行类型转换。
例:byte b = 2;b+=3;此处的b+=3等价于 b = (byte)(b + 3)
三元运算符
基本语法: 条件表达式?表达式1:表达式2;
运算规则:
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2:
运算符优先级
3.标识符
标识符命名规则
1.由26个英文字母大小写,0-9,_ 或$组成
2.数字不可以开头。int 3ab = 1;
3.不可以使用关键字和保留字,但能包含关键字和保留字。
4.Java中严格区分大小写,长度无限制。int totalNum = 10;int n = 90;
5.标识符不能包含空格。int a b=90;
标识符命名规范
1.包名:多单词组成时所有字母都小写:aaa.bbb.ccc/比如com.hsp.crm
2.类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]。 比如:TankShotGame
3.变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法]。 比如:tankShotGame
4.常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX YYY ZZZ。 比如:定义一个所得税率TAX_RATE
5.键盘输入
步骤:
1.导入该类的所在包,java.util.*
2.创建该类对象(声明变量)
3.调用里面的功能
例:
package study1.pers.cyc;
import java.util.Scanner;
/**
* @author cyc
* @create 2022-06-29 16:55
*/
public class study1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = scanner.next();
System.out.println("请输入年龄:");
int age = scanner.nextInt();
System.out.println("请输入薪水:");
double salary = scanner.nextDouble();
System.out.println("姓名\t" + "年龄\t" + "薪水\n" + name +"\t"+ age +"\t"+ salary);
}
}
二、进制转换
1. 二、八、十六转十进制
二进制转十进制
运算规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
例:0b1011 = 1+2+8=11
八进制转十进制
运算规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
例:0234 = 4+38+264=156
十六进制转十进制
运算规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
例:0x23A = 10+316+2256=570
2.十进制转二、八、十六进制
十进制转二进制
运算规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
例:34 => 0B00100010
十进制转八进制
运算规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
例:131 => 0203
十进制转十六进制
运算规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
例:237 => 0xED
3.二进制转八、十六进制
二进制转八进制
运算规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
例:0b 11 010 101 => 0325
二进制转十六进制
运算规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
例:0b 1101 0101 => 0xD5
4.八、十六进制转二进制
八进制转二进制
运算规则:将八进制数每1位,转成对应的一个3位的二进制数即可。
例:0237 => 0b 010 011 111 = 0b 1001 1111
十六进制转二进制
规则:将十六进制数每1位,转成对应的4位的一个二进制数即可。
例:0x23B => 0b 0010 0011 1011
三、位运算
1.原码、反码、补码
对有符号二进制数而言:
1.二进制的最高位是符号位:0表示正数,1表示负数;
2.正数的原码,反码,补码都一样(三码合一);
3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0);
4.负数的补码=它的反码+1,负数的反码=负数的补码-1;
5.0的反码,补码都是0;
6.java没有无符号数,换言之,java中的数都是有符号的;
7.在计算机运算的时候,都是以补码的方式来运算的;
8.当我们看运算结果的时候,要看他的原码。
2.位运算符
算术左移<<:符号位不变,低位补0
例:1<<2 = 00000001 => 00000100 本质为:122 = 4
-2<<2 = 10000000 00000000 00000000 00000010(原) => 11111111 11111111 11111111 11111101(反) => 11111111 11111111 11111111 11111110(补)<<2 = 11111111 11111111 11111111 11111000(补)=> 10000000 00000000 00000000 00001000(原)= -8
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
例:
1>>2 = 00000001 => 00000000 本质为:1/2/2 = 0
-2>>2 = 10000000 00000000 00000000 00000010(原) => 11111111 11111111 11111111 11111101(反) => 11111111 11111111 11111111 11111110(补)>>2 = 11111111 11111111 11111111 11111111(补)=> 10000000 00000000 00000000 00000001(原)= -1
逻辑右移>>>:也叫无符号右移,低位溢出,高位补0
例:
-2>>>2 = 10000000 00000000 00000000 00000010(原) => 11111111 11111111 11111111 11111101(反) => 11111111 11111111 11111111 11111110(补)>>>2 = 00111111 11111111 11111111 11111111(补)=反码=原码 = 1073741823
特别说明:没有<<<符号
总结
这一部分学习了java的部分基础内容。
2022-07-04