Java基础语法

目录

1:关键字(掌握)
2:标识符(掌握)
3:注释(掌握)
4:常量(掌握)
5:进制转换(了解)
6:变量(掌握)
7:数据类型(掌握)
8:数据类型转换(掌握)
9:运算符(掌握)

1:关键字(掌握)

  1. 被Java语言赋予特定含义的单词

  2. 特点:

    全部小写

  3. 注意事项:

	A:goto和const作为保留字存在。
	B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

2:标识符(掌握)

  1. 就是给类,接口,方法,变量等起名字的字符序列

  2. 组成规则:

    A:英文大小写字母
    B:数字
    C: $ 和 _
    
  3. 注意事项:

    A:不能以数字开头
    B:不能是java中的关键字
    C:区分大小写
    
  4. 常见的命名规则(见名知意)

    A:包	全部小写
    	单级包:小写
    		举例:liuyi,com
    	多级包:小写,并用.隔开
    		举例:cn.itcast,com.baidu				
    B:类或者接口
    	一个单词:首字母大写
    		举例:Student,Demo
    	多个单词:每个单词首字母大写
    		举例:HelloWorld,StudentName
    C:方法或者变量
    	一个单词:首字母小写
    		举例:name,main
    	多个单词:从第二个单词开始,每个单词首字母大写
    		举例:studentAge,showAllNames()
    D:常量
    	全部大写
    	一个单词:大写
    		举例:PI
    	多个单词:大写,并用_隔开
    		举例:STUDENT_MAX_AGE
    

3:注释(掌握)

  1. 就是对程序进行解释说明的文字

    书写注释是一个非常好的习惯,平时写代码要注意规范

  2. 分类:

    	A:单行注释	 //
    	B:多行注释	/**/
    	C:文档注释(主要说明文档信息)  /** */
    
  3. 注释的作用:

    	A:解释说明程序,提高了代码的阅读性。
    	B:可以帮助我们调试程序。
    		后面我们会讲解一个更高端的一个调试工具
    

4:常量(掌握)

  1. 在程序执行的过程中,其值不发生改变的量

  2. 分类:有两种,字面值常量和自定义常量(后面讲 )

  3. 字面值常量

    A:字符串常量 "hello"
    B:整数常量	12,23
    C:小数常量	12.345
    D:字符常量	'a','A','0'
    E:布尔常量	true,false
    F:空常量	null(后面讲)
    
  4. 在Java中针对整数常量提供了四种表现形式

    A:二进制	由0,1组成。以0b开头。
    B:八进制	由0,1,...7组成。以0开头。
    C:十进制	由0,1,...9组成。整数默认是十进制。
    D:十六进制	由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
    
    例:println输出100 0b100 0100 0x100 值不一样会自动转换为相应进制数
    

5:进制转换(了解)

  1. 其他进制到十进制

    系数:就是每一个位上的数值

    基数:x进制的基数就是x

    权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

    结果:系数*基数^权次幂之和。

  2. 十进制到其他进制

    除基取余,直到商为0,余数反转。

  3. 进制转换的快速转换法

    A:十进制和二进制间的转换

    ​ 8421码。

    B:二进制到八进制,十六进制的转换

6:变量(掌握)

  1. 在程序的执行过程中,其值在某个范围内可以发生改变的量

  2. 变量的定义格式:

    A:数据类型 变量名 = 初始化值;

    B:数据类型 变量名;

    ​ 变量名 = 初始化值;

    注意事项:
    	1.每个变量都有类型,类型可以是基本类型,也可以是引用类型
    	2.变量名必须是合法的标识符
        3.变量声明是一条完整的语句,因此每个声明都必须以分号结束
    

7:数据类型(掌握)

  1. Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

    要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。

  2. 分类:

    A:基本数据类型:4类8种

    B:引用数据类型:类,接口,数组。

  3. 基本数据类型

    A:整数			占用字节数
    	byte			1字节
    	short			2字节
    	int 			4字节
    	long			8字节
    B:浮点数
    	float			4字节
    	double			8字节
    C:字符
    	char			2字节
    D:布尔
    	boolean			1位
    	
    注意:
    	整数默认是int类型,浮点数默认是double。
    		
    	长整数要加L或者l。
    	单精度的浮点数要加F或者f。
    

8:数据类型转换(掌握)

  1. boolean类型不参与转换

  2. 默认转换

    A:从小到大  (小数比整数大)
    B:byte,short,char -- int -- long -- float -- double
    C:byte,short,char之间不相互转换,直接转成int类型参与运算。
    
    注意:
    1.不能能对布尔值进行转换
    2.不能把对象类型转换为不相干的类型
    3.在把高容量转换到低容量的适合,强制转换
    4.转换的时候可能存在内存溢出,或者精度问题
    

    运算中,不同类型的数据先转化为同一类型,然后进行运算

  3. 强制转换

    A:从大到小
    B:可能会有精度的损失,一般不建议这样使用。
    C:格式:
    	目标数据类型 变量名 = (目标数据类型) (被转换的数据);
    
  4. 自动转换 小——>大,不会发生错误,直接写,例如

    int i = 128;
    double b = i;   //自动转换不会发生报错
    
    
  5. 思考题和面试题:

    //操作比较大的数字的时候,注意溢出问题
    //jdk7新特性,数字之间可以用下划线分割,不影响数字本来意思
    int money = 10_0000_0000;
    System.out.println(money);    //输出结果:1000000000 
    
    int years = 20;
    int total = money*years;  // -1474836480,计算的时候溢出
    long total2 = money*years;  //默认是int,转换之前已经存在问题,结果还是溢出
    long tatal3 = money*((long)years);  //先把一个数转换为long,得到正确结果
    
    A:下面两种方式有区别吗?
    	float f1 = 12.345f;
    	float f2 = (float)12.345;
    	没有区别,第一个表示就是float类型(建议)
    	第二个表示经过在运算的自动上升之后的类型强制转换保留后几位
    B:下面的程序有问题吗,如果有,在哪里呢?
    	byte b1 = 3;
    	byte b2 = 4;
    	byte b3 = b1 + b2;   //在相加时类型提升,有问题
    	byte b4 = 3 + 4;   //常量,先把结果计算出来,然后看是否在byte范围内
    C:下面的操作结果是什么呢?
    	byte b = (byte)130;   //byte范围是:-128到127 报错需要强转
    	
    	分析过程:
    		我们要想知道结果是什么,就应该知道是如何进行计算的。
    		而我们又知道计算机中数据的运算都是补码进行的。
    		而要得到补码,首先要计算出数据的二进制。
    				
    		A:获取130这个数据的二进制。
    			00000000 00000000 00000000 10000010
    			这是130的原码,也是反码,还是补码。
    		B:做截取操作,截成byte类型的了。
    			10000010 
    			这个结果是补码。
    		C:已知补码求原码。
    				符号位		数值位
    			补码:	1			0000010
    					
    			反码:	1			0000001
    					
    			原码:	1			1111110
                        
    D:字符参与运算
    	是查找ASCII里面的值
    	'a'		97
    	'A'		65
    	'0'		48
    		
    	System.out.println('a');
    	System.out.println('a' + 1);
    E:字符串参与运算
    	这里其实是字符串的连接(与字符串相加其实会变成字符串连接)
        
    	System.out.println("hello"+'a'+1);   //helloa1
    	System.out.println('a'+1+"hello");   //98hello
    	System.out.println("5+5="+5+5);    //5+5=55
    	System.out.println(5+5+"=5+5");    //10=5+5	
    

9:运算符(掌握)

  1. 算术运算符

    • +,-,*,/,%,++,--

    • +的用法:

      1.加法

      2.正号

      3.字符串连接符

      //字符串连接符  + ,String
      int a = 10;
      int b = 20;
      System.out.println(""+a+b);    //字符串在前面,先拼接,结果为   1020
      System.out.println(a+b+"");    //字符串在后面,先运算再拼接,结果为 30
      
    • /和%的区别

      数据做除法操作的时候,/取得是商,%取得是余数

      //特别注意,当结果涉及到小数的时候需要注意类型
      int a = 10;
      int b = 20;    //ctrl + D:复制当前行到下一行
      
      System.out.println(a/b);   //结果为0  原因是 0.5取整
      System.out.println(a/(double)b);    //应该将任意一个转换为小数
      
    • ++和--的用法

      他们的作用是自增或者自减

      使用:

      1. 单独使用
        放在操作数据的前面和后面效果一样。
        a++或者++a效果一样。
      2. 参与操作使用
        放在操作数的前面:先自增或者自减,再参与操作
        int a = 10;
        int b = ++a;
        放在操作数的后面:先参与操作,再自增或者自减
        int a = 10;
        int b = a++;
  2. 赋值运算符

    • =,+=,-=,*=,/=,%= 等

    • =叫做赋值运算符,也是最基本的赋值运算符
      int x = 10; //把10赋值给int类型的变量x。

    • 扩展的赋值运算符的特点:隐含了自动强制转换。

      //面试题:
      	short s = 1;
      	s = s + 1;
      			
      	short s = 1;
      	s += 1;
      
  3. 比较运算符

    • ==, !=, >, >=, <, <=
    • 无论运算符两端简单还是复杂最终结果是boolean类型。
    • 千万不要把 == 写成了 =
  4. 逻辑运算符

    • &, |, ^, !, &&, ||

    • 逻辑运算符用于连接boolean类型的式子

    • 结论

      &:有false则false
      |:有true则true
      ^:相同则false,不同则true。
          情侣关系。
      !:非true则false,非false则true
      
      &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
      ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
          
      //短路运算
      int c = 5;
      boolean d = (C<4)&&(c++<4);
      System.out.println(c);   //这里结果为5,可见上面&&后面的c++未执行 
      
  5. 位运算符(了解)

    • 示例

      A = 0011 1100;
      B = 0000 1101;
      
      A&B = 0000 1100;   //都取1时,结果为1
      A|B = 0011 1101;   //其中有1时,结果为1
      A^B = 0011 0001;   //相同为0,不同为1
      ~B = 1111 0010;   //取反
      
    • ^的特殊用法

      一个数据针对另一个数据位异或两次,该数不变

    • 除了 &、|、^,位运算符还有左移 << 和右移 >>

      这个效率更高,在计算机底层常用

      << 相当于 *2

      ">>" 相当于 /2

    • 面试题

      a:请实现两个变量的交换
          **采用第三方变量
          **用位异或运算符
          左边a,b,a
          右边a^b
      b:请用最有效率的方式计算出2乘以8的结果
          2<<3
      
  6. 三元运算符

    • 格式:

      比较表达式?表达式1:表达式2;
      
    • 执行流程

      首先计算比较表达式的值,看是true还是false。
      如果是true,表达式1就是结果。
      如果是false,表达式2就是结果。
      
    • 案例

      a:比较两个数据是否相等
      b:获取两个数据中的最大值
      c:获取三个数据中的最大值
      
posted @ 2021-07-07 05:02  野绅士  阅读(35)  评论(0)    收藏  举报