Java学习记录2

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值