尚硅谷java基础(上)涛哥

JavaSE

1.语法

2.面向对象:类和对象,封装,继承,堕胎,抽象,接口

public class helloworld{
public static void main(String[ ] args){

System.out.println("HelloWorld");
     }

}

/*

public class helloworld    //定义一个类
从main开始执行

*/

7.1字符编码问题

1.编码:保存数据的过程就是编码的过程
2.解码:读数据的过程就是解码的过程
3.注意:
  a.编码和解码遵守的编码规范必须是一样的
  b.常见的两个编码规范:
    GBK:专门为我们中文所设计的编码
        ANSI代表的是GBK
        
        一个中文汉字在GBK中占2个字节
        
    UTF-8:一个中文汉字在UTF-8中占3个字节
        
  c.dos命令窗口默认编码:GBK     

7.2源文件名(java文件名)与类名一致问题?

1.类名必须要和java文件名一致嘛?
  不是必须的
    
  如果类名和java文件名不一致,需要将class前面的public干掉
    
2.如果class前面带public,此时类名必须要和java文件名一致
    
3.一个java文件中可以写多个class类,但是只能有一个类带public
    
  但是建议不要随意在一个java文件中写多个class -> 一个java文件中就写一个class,而且带public的
    
4.main方法必须写在带public的类中    

小结:

1.一个java文件只写一个class,而且带public

2.类名和java文件名保持一致

3.main方法写在带public的类中

##

println:输出之后自带换行效果
print:输出之后不带换行效果 

##

这技巧挺实用,有点意思

小技巧:

1.复制当前行:ctrl+d

2.一次操作多行:

​ a.预留出足够的空间

​ b.按住alt不放,鼠标往下拉,此时发现光标变长了

##

常量

整数常量:所有整数
  小数常量:所有带小数点的
          2.5  1.5  2.0
  字符常量:带单引号的 ''  单引号中必须有且只能有一个内容
          '1'(算)   '11'(不算)   ''(不算)  'a1'(不算)
          ' '(算)   '  '(两个空格不算)
          '写一个tab键'(算)
      
  字符串常量:带双引号的 ""  双引号中内容随意
            ""   "helloworld"

  布尔常量:true(真) false(假) -> 这两个单词不要加双引号
          "true"(这样写属于字符串,不属于布尔常量)
      
  空常量:null  代表的是数据不存在   

变量

数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -128 至 127 定义byte变量时超出范围,废了
短整型 short 2个字节 -32768 至 32767
整型 int(默认) 4个字节 -2^31^ 至 2^31^-1 正负21个亿
-2147483648——2147483647
长整型 long 8个字节 -2^63^ 至 2^63^-1 19位数字
-9223372036854775808到9223372036854775807
单精度浮点数 float 4个字节 1.4013E-45 至 3.4028E+38
双精度浮点数 double(默认) 8个字节 4.9E-324 至 1.7977E+308
字符型 char 2个字节 0 至 2^16^-1
布尔类型 boolean 1个字节 true,false(可以做判断条件使用)

注意这里要加一个L    F

        //long -> 定义long型的变量后面加个L
		long num4 = 10L;
		System.out.println(num4);
		
		//float -> 定义float型变量的时候后面加个F
		float num5 = 2.5F;
		System.out.println(num5);
/*
		   t:普通字符
		   \t:制表符 -> 就是tab键     相当于空格"    "
		*/
/*
		  用String表示一个路径
		  在java中两个\\代表一个\
		*/
		
		String path = "E:\\01_javase_video\\code";
		System.out.println(path);

定义变量的一些原则

1.概述:咱们给类,方法,变量取的名字
2.注意:
  a.硬性规定(必须遵守)
    标识符可以包含"英文字母","数字","$和_"
    标识符不能以数字开头  int i1 = 100(正确)  int 1i = 100(错误)
    标识符不能是关键字  int static = 100(错误)   int public = 100(错误)
      
  b.软性建议(可遵守可不遵守,但是建议遵守)
    给类取名字:遵循大驼峰式 -> 每个单词首字母大写
    给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写
   
    见名知意

数据类型转换

1.什么时候发生类型转换:
  a.等号左右两边类型不一致
  b.不同类型的数据做运算
      
2.分类:
  a.自动类型转换
    将取值范围小的数据类型赋值给取值范围大的数据类型 -> 小自动转大
    取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大
      
  b.强制类型转换
    当将取值范围大的数据类型赋值给取值范围小的数据类型 -> 需要强转
      
3.基本类型中按照取值范围从小到大排序:
  byte,short,char -> int -> long -> float -> double
public class Demo11DataType{
	public static void main(String[] args){
		//精度损失
		int i = (int)2.9;
		System.out.println(i);
		
		/*
		  数据溢出
		  int型占内存4个字节,4个字节变成二进制是32位
		  
		  100个亿: 10 0101 0100 0000 1011 1110 0100 0000 0000 -> 34位二进制
		  
		  100个亿的二进制位比int型的二进制位多出来2位,此时干掉最前面的2位
		  
		  101 0100 0000 1011 1110 0100 0000 0000
		  
		  101 0100 0000 1011 1110 0100 0000 0000->1410065408
		*/
		int j = (int)10000000000L;
		System.out.println(j);//1410065408
		
	    System.out.println("=========================");
		
		byte b = 10;
		System.out.println(b);
		
		b = (byte)(b+1);
		System.out.println(b);
		
		System.out.println("=========================");
		
		char c = '中';
		System.out.println(c+0);//20013
	}
}

进制转换

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a或A
11 1011 13 b或B
12 1100 14 c或C
13 1101 15 d或D
14 1110 16 e或E
15 1111 17 f或F
16 10000 20 10

位运算符号

原码反码补码
1.符号的介绍:
  a. &(与) -> 有假则假
  b. |(或) -> 有真则真
  c. ~(非) -> 取反
  d. ^(异或) -> 符号前后结果一样为false,不一样为true
     true ^ true -> false
     false ^ false -> false
     true ^ false -> true
     false ^ true -> true
      
2.   1代表true   0代表false  
      
3.我们要知道计算机在存储数据的时候都是存储的数据的补码,计算也是用的数据的补码 
  但是我们最终看到的结果是原码换算出来的
      
  原码   反码   补码
      
4.正数二进制最高位为0;  负数二进制最高位为1
    
5.如果是正数  原码 反码 补码 一致
  比如:5的原码  反码  补码一致:
      0000 0000 0000 0000 0000 0000 0000 0101 -> 因为是正数,二进制最高位为0
          
  如果是负数,原码 反码 补码不一样了
       反码是原码的基础上最高位不变,剩下的0和1互换
       补码是在反码的基础上+1
          
  比如:-9
       原码: 1000 0000 0000 0000 0000 0000 0000 1001
       反码: 1111 1111 1111 1111 1111 1111 1111 0110
       补码: 1111 1111 1111 1111 1111 1111 1111 0111

介绍位运算

 1)左移:<<

​ 运算规则:左移几位就相当于乘以2的几次方

​ **注意:**当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位

2<<2   结果等于8
快速算法:  2*(2的2次方)

 

-2<<2  等于-8
快速算法: -2*(2的2次方)
(2)右移:>>

快速运算:类似于除以2的n次,如果不能整除,向下取整

9>>2  等于2
    
快速算法: 9除以(2的2次方)

 

-9>>2   等于-3
    
快速算法: -9除以(2的2次方)

 

(3)无符号右移:>>>

运算规则:往右移动后,左边空出来的位直接补0,不管最高位是0还是1空出来的都拿0补

正数:和右移一样

9>>>2 等于2

负数:右边移出去几位,左边补几个0,结果变为正数

-9>>>2
结果为:1073741821    

笔试题: 8>>>32位 -> 相当于没有移动还是8

​ 8>>>34位 -> 相当于往右移动2位

(4)按位与:&

小技巧:将0看成为false 将1看成true

运算规则:对应位 " 都是1才为1 " ,相当于符号左右两边都为true,结果才为true

1&1 结果为1

1&0 结果为0

0&1 结果为0

0&0 结果为0

5&3 结果1

 

(5)按位或:|

运算规则:对应位只要 " 有1即为1 " ,相当于符号前后只要有一个为true,结果就是true

1|1 结果1

1|0 结果1

0|1 结果1

0|0 结果0

5|3    结果为7

 

(6)按位异或:^

​ 运算规则:对应位一样的为0,不一样的为1

1^1 结果为0 false

1^0 结果为1 true

0^1 结果为1 true

0^0 结果0 false

5^3   结果为6

 

(7)按位取反

运算规则:~0就是1

​ ~1就是0

~10   结果为-11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值