Java自学 --换车重启

Java自学 --换车重启

​ 约莫有10天没有更新自己的学习进度了,因为学习遇到了问题,这边首先说一下我自学的开始是跟着秦疆老师的视频进行的,在B站看的视频,秦疆老师B站的网名叫遇见狂神说,秦老师做了一个自学的网站供网友学习KungStudy,但是我个人是在B站看的,因为B站手机电脑端都有历史记录,比较适合我在公司,在家,在外随时学习观看视频,十分感谢秦老师带我入门。

​ 我是跟着秦老师B站【狂神说Java】Java零基础学习视频通俗易懂这个视频学习的,基础篇总共有80集视频,10天前我学到了最后一集老师对Java基础的总结,总结视频总共2个小时19分钟,然而我前面学习的79集的基础,老师讲到1小时的时候就完了,剩下一小时讲的常用类、集合框架、I/O整个系列都没有,网站也没有,去群里问了一下这部分确实没有,群友推荐这部分遗漏的去看韩顺平老师更新的视频,我想可能是这部分视频没有录下来,比较遗憾,但是从老师总结视频的篇幅来看,这3个部分的内容竟然占了剩下的1个小时19分钟,也就是说Java基础中的一半,应该是非常重要的不可跳过的,于是我就去看了韩顺平老师的教程,韩老师的视频 正好是今年1月底才上传的,并且确实有包含常用类、集合框架、I/O这部分内容,于是我转去韩老师那继续自学。

​ 然后又有个问题,我是直接接下去学习常用类、集合框架、I/O,还是从头开始看呢,我思考了一下决定重新开,原因有以下几个,我前面学的课程不是很多,断断续续也就20来天,时间不是很久,韩老师前面的视频我可以双倍速度看过去,花不了多久时间,顺便复习一下前面学习的,毕竟学的越多忘的越多,还有韩老师的视频是21年开头的,秦老师的视频是19年的,韩老师的更新一点,就这查漏补缺的心态,我决定重新跟韩老师的视频在学校一遍。

​ 就两个老师的风格来讲,可能我是跟着秦老师开始学的,我觉得秦老师讲的更基础更适合新人刚开始看,而韩老师讲的更加全面一点,如果是新人直接0基础看不知道看不看的懂,我正好看过一遍秦老师的,再回头看还行把,相同的点我就不重复记录了,后面学习会把新学习到的点在博客里面更新出来。




​ 这10天也不是光找新课程,找了2天就确定了,目前韩顺平老师的看到101集了,有些新的知识点,随手记录在笔记本里,手头的纸张上,比较少,就没有天天发,今天大周周六没上班,在家统计一下发一下,写博客这个事情我觉得还是很有必要的,回头一看10天没记录了,就会怀疑自己有没有认真在学习。


转义字符

\t :一个制表位,实现对齐的功能

\n :换行符

\\ :一个 \

\" :一个 "

\’ :一个 ’

\r :一个回车


javac文档注释

javac -d 文件夹名 -xx -yy ****.java


DOS

相对路径:从当前目录开始定位,形成的一个路径

绝对路径:从顶级目录C盘D盘之类的开始定位,形成的路径


Shift + TAB

快速把代码对齐


程序中+号的使用

1当左右两把都是数值,做加法
2.左右有一边为字符串,做拼接
3.运算是从左到右的

System.out.println(100+3+"Hello");//103Hello
System.out.println("Hello"+100+3);//Hello1003

中文java帮助文档 8 / 11

http://matools.com/api


char

char 类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码.

char c5 = ‘b’ + 1;//98+1==> 99

System.out.println((int)c5); //99


数据转换的两条线(要背)

char-int-long-float-double

byte-short-int-long-float-double

(byte,short)和char 直接不会自动转换


编码的由来

  • ASCII码 最早 1个字节 128个编码
  • unicode 每一个英文字母和汉字都占用2字节 最多65536字符(兼容ASCII码)
  • utf-8字母1字符 汉字3字节(最广泛,可能是中国内把,unicode的改进)
  • gbk 字母1字符 汉字2字节(标示的范围小,相对的汉字也就少了,所以平时多用utf-8)
  • gb2312 汉字
  • big5 繁体

多种类型的数据,混合运算

​ 多种类型的数据混合运算时,系统自动将所有数据转换成容量最大的那种数据类型再运算

byteshortchar可以互相运算,运算时先转为int类型
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 +b2; //这是错的
byteshortchar三个只要出现运算直接转int

字符串–数字 转换

//基本数据类型->String
int n1 = 100; 
float f1 = 1.1F; 
double d1 = 4.5; 
boolean b1 = true; 
String s1 = n1 + ""; 
String s2 = f1 + ""; 
String s3 = d1 + ""; 
String s4 = b1 + ""; 
System.out.println(s1 + " " + s2 + " "+ s3 + " " + s4);
int num1 = Integer.parseInt(s5); 
double num2 = Double.parseDouble(s5); 
float num3 = Float.parseFloat(s5); 
long num4 = Long.parseLong(s5);
byte num5 = Byte.parseByte(s5); 
boolean b = Boolean.parseBoolean("true"); 
short num6 = Short.parseShort(s5);
String str =123;
int n1 =Integer.parse(str); //字符串转数字
String str = “Hello”;
int n1 =Integer.parse(str); //异常,数字才能转

除法

System.out.println(10 / 4); // 运算的两个数都是整数,结果保留整数 ,结果2
System.out.println(10.0 / 4); //有一个小数,结果2.5
double d = 10 / 4; // 2.0

取余

​ 本质 a%b = a - (int)a / b * b (这个a/b好像是整数运算的意思,留整数,正负数就看这个)

System.out.println(-10 % 3); // -1 
System.out.println(10 % -3); // 1 
System.out.println(-10.5%3); // -1.5 有小数参加取余,余数竟然可以是小数,有意思

自增(a++,++a)

​ 这是老师提供的公示,秦老师虽然也有说过,不过这次有了一点自己的想法了理解,a++ ,++a,我是这么想的,直接从左到右去看 ,什么东西在前面就先执行什么 a++ ,那就是先执行a ,赋值或者运算都行,然后再去++

int a = 1;
a = a++;
System.out.println(a); //1
// temp = a ; a = a + 1; a =temp;

int a = 1;
a = ++a;
System.out.println(a); //2
// a = a + 1; temp = a ; a =temp;

复合赋值运算符会进行强制类型转换

byte b = 3;
b += 2;// 可运行,等价于 b = (byte)(b + 2);
b = b + 2 ; //报错,2是int类型,运算完已经提升为int 不能由byte的b表示了
b += 2.2;//去IDEA跑了一下, 这个可运行,结果等于4

短路和逻辑

​ &&短路与
​ &逻辑与
​ 都是两个为真才为真,区别是&&只要第一个是假的就不判断了,老师说开发中都用短路与,比较高效

​ “||”短路或 第一个为真第二个就不判断了,效率高,“|”逻辑或同逻辑与


三元运算符

x?y:z;
x真执行y,x假执行z
口诀[一真假二]


进制转换

  • 2、8、16进制转10进制,低到高,右到左,几进制就乘几,的位数-1次方
  • 10进制转2、8、16进制,几进制就除以几,一直除下去,最后余数反着写
  • 2进制转8进制(3个数一组,按照2转10的方法算数),2进制转16(4个数一组同上)
  • 8进制转2进制(把8进制的每一个数转为3位数的二进制,因为8进制没有8,8对应的2进制是1111,所以3个数的二进制就能表示0-7的所有8进制数)
  • 16进制转2进制(同上,16进制对应的4个数二进制)

原码、反码、补码(背)

  1. 二进制的最高位是符号位:0表示正数,1表示负数(老韩口诀,0→ 0 1→ -)
  2. 正数的原码、反码、补码都一样(三码合一)
  3. 负数的反码:原码符号位不变,其他位取反(1变0,0变1)
  4. 负数补码 = 负数反码 + 1 负数反码=负数补码 - 1
  5. 0的反码,补码都是0
  6. java没有无符号数,换言之,java中的数都是有符号的
  7. 在计算机运算的时候,都是以补码的方式来运算的
  8. 当我们看运算结果的时候,要看他的原码 (重点)

自己总结的运算规则

原码转成反码,反码再转成补码,通过补码来与运算,运算完再转回去原码


位运算符练习

  • 按位与 & : 两位都为1 ,结果为1 ,否则为0
  • 按位或 | : 两位有1位为1,结果为1 ,否则为0
  • 按位异或 ^ : 两位不一样,结果为1 ,否则为0
  • 按位取反 ~ : 字面的意思,取反,1变0 ,0变1
# 练习  2 & 3
2的二进制  00000000 00000000 00000000 00000010
3的二进制  00000000 00000000 00000000 00000011
    -------------------------------------------------
    	  00000000 00000000 00000000 00000010 = 2
    //都是正数,三码合一,直接按位与运算
    //三码合一,补码运算结果直接是原码  
    
# 练习 ~ -2
-2的二进制原码  10000000 00000000 00000000 00000010
转换为反码      11111111 11111111 11111111 11111101
负数反码+1=补码 11111111 11111111 11111111 11111110
    --------------------------------------------------
对补码取反运算  00000000 00000000 00000000 00000001
此时运算后得到一个正数,正数三码合一是就是结果,不需要转换直接用 
# 练习 ~ 2
2的二进制原码  00000000 00000000 00000000 00000010    
三码合一直接运算
    		 11111111 11111111 11111111 11111101
结果是负数的补码,要先算反码,再算原码
   补码-1=反码 11111111 11111111 11111111 11111100
    原码       10000000 00000000 00000000 00000011
    结果为  -3
# 练习 2|3
2的二进制原码  00000000 00000000 00000000 00000010
3的二进制原码  00000000 00000000 00000000 00000011    
    按位或    00000000 00000000 00000000 00000011
    正数三码合一 直接是结果 3
# 练习 2^3
2的二进制原码  00000000 00000000 00000000 00000010
3的二进制原码  00000000 00000000 00000000 00000011     
按位异或       00000000 00000000 00000000 00000001    
    正数三码合一 直接是结果 1

位运算符 >>、<< 和 >>>

算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移 <<: 符号位不变,低位补 0
>>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
特别说明:没有 <<< 符号

int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 = 0 除2 除2
int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4 乘2 乘2

System.out.println(15>>2); ///结果为3


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值