黑马程序员——Java基础语法(1)——关键字、常量、变量、运算符

时间:2023-02-19 09:28:51

---恢复内容开始---

---------android培训、java培训、java学习型技术博客、期待与您交流!---

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Code:
#import <Foundation/Foundation.h>

一、关键字

  java中被赋予特殊含义的单词,一般小写

1、数据类型关键字:

黑马程序员——Java基础语法(1)——关键字、常量、变量、运算符

 

 注:Stirng 是类的一种,不是基本数据类型;

说明:在Java中,整数默认:int  小数默认:double

在运算中。当低类型数据与高类型数据进行计算时,系统自动将表达式中的低类型提升到高类型

在程序中,数据类型需要变换时,可以强制转换:

byte  b=4;

b  = b+4;//报错

b=(byte)(b+4);

思考:那一句编译失败?为什么

byte b1=3,b2=4,b;
b=b1+b2;
(1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
(2)b1和b2是两个变量值,jvm无法判断里面值的大小

但是

b=3+4;
编译时没有问题的,因为编译器有常量优化机制,在编译时已经将3+4的结果赋予b

 

2、定义数据类型的关键字

true(真)  false(假)  null(空)

3、定义流程数据类型值的关键字:

判断:if else  swith case  default

循环:for  while  do while

继续循环:continue

结束循环或选择结果:break

返回:return

结束程序:System.exist(0)

4、定义访问权限的修饰符

private(私有的)  protected(受保护的)  public(共有的)

5、定义类、函数、变量的修饰符

abstract(抽象的)  final(最终的)  static(静态的)  synchronized(同步的)

6、定义类与类(接口)的关键字

extends(继承)  implements(实现)

7、用于定义建立实例及引用实例

new(建立实例)  this(当前引用)  super(父类引用)  instanceof(判断对象类型)

8、异常处理

try{检查异常}catch{捕获异常}finally{最终执行}

9、用于包的关键字

pakage(创建包)  import(导入包)

10、其他

  native(本地)

  strictfp(strict float。精确浮点)

  transient(变量修饰符,用他声明一个实例变量,在对象序列化时不会被序列化)

  volatile(类型修饰符,用于修饰被不同线程访问的修改的变量)

  assert(断言,可以看做是异常处理的一种高级形式,用于捕捉我们代码章做出的架势

注:main不是关键字,却是被虚拟机锁识别的名称

 

二、标识符的规范:由26个字母大小写,数字0~9,_组成

定义合法标识符的规则:

  1、数字不可以开头;

  2、不可以使用关键字;

包名:多字母小写:xxxxyyyyzzzz

类名:XxYyZz

变量名和函数方法名:xxxYyZz

注:常量全大写XXX_YYY_ZZZ

 

3、算术运算符号

*%取余数  

 

*++变量  ——变量  先进行+1或-1的赋值后再执行语句

变量++    变量--  先执行当前语句在进行+1或-1的赋值

 

*+:1)作为数据的符号(正好)

   2)作为加法的运算

  3)作为字符的连接符

 

*+=:加赋值运算符

  如:int x=3,x+=2;就是x=x+2;

面试题:

1     byte b = 5;
2 //            b=b+2;这个错误——应该b=(byte)b+2
3 //            b+=2;可以jvm会自动强转

 

逻辑运算符&、|、&&、||

分别是或,且,或,且的意思

前两个是所有执行完才得出结论,后两个得出结论就不执行了,以后都使用后两个

 

或异^:相反为真,相同为假

 

非!

 

移位运算符:

<<:一个整数项左移动n位就是乘以2的n次幂

>>:一个整数向右移动几位就是除以2的n次幂,高位时0补0,高位时1补1;

>>>:无符号由于无论高位时什么,都补0

 

三元运算符:(条件表达式)?表达式1:表达式2;

条件是true,结果返回是表达式1;

条件是false,结构返回表达式2;

如:

int x=5,y=10,z;

z=x>y?x:y;//返回10

 

二、条件判断语句if,else,else if ,switch和循环语句while,do~while,for 

1、if的总实例,外加一些小知识

 1 //做一个学生不同分数段得到不同评分的系统
 2         BufferedReader bufr=
 3                 new BufferedReader(new InputStreamReader(System.in));
 4         String line = bufr.readLine();
 5         int num = Integer.parseInt(line);
 6         
 7         if(num>80){
 8             if(num>85)
 9                 System.out.println("A");
10             else
11                 System.out.println("B");
12             
13         }else if(num<0||num>100)
14         {
15             System.out.println("写错数据了");
16         }
17         else{
18             System.out.println("不合格");
19         }

2、switch实例

case可以理解为一个入口,当遇到时就进入。如果该case里面没有break;

那么程序会继续执行下一个case的执行语句二不会对case进行判断指定遇到break或语句结束。

String name = "张三";
String gender = "先生";
switch (gender){
case "先生":
    System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");
break;
case "女士":
    System.out.println(name + "是一位" + gender + "逛街购物美容");
break;
default:
    System.out.println(name + "是一位" + gender + "打雌性激素保持美貌容颜");

}

 

3,while和do{}while

  • while和do while的区别:
    • dowhile语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断
    • while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.
    • while(true){}为死循环,一般配合{}里面有阻塞式,或者跳出循环的语句

 

 

4、for(;;){}循环

练习打印99乘法

1 /        打印九九乘法,使用双循环
2         for(int i=1;i<10;i++){
3             System.out.println("\t");
4             for(int j=1;j<=i;j++){                
5                 
6                 System.out.print(i+"*"+j+"="+(i*j)+"\t");            
7             }
8             System.out.println();                
9             }    

注意:continue和break

*这两个语句离开应用范围是没有意义的;

*continue是结束本次循环,继续下一次循环

*break是跳出循环

 

 

 

三、函数的概述和格式

1、*函数也叫做方法,就是定义在类中的具有特定功能的一段独立小程序;

格式:

  修饰符  返回类型  函数名(参数){

    执行语句

    return;

  }

2、特点:

  *定义函数可以将功能代码进行封装,便于对该功能进行复用

  *函数只有被调用才会被执行

  *void表示没有返回,结果不用谢return,但是JVM会自动加return

3、函数的重载

A:在同一类中函数名相同,参数列表不同

  *参数列表可以是类型不同,个数不同,顺序不同

B:特点:与返回值无关,只看参数列表

注:一般与复写做对比,复写是子类继承父类后实现接口后,在子类中复写一个与父类(接口)修饰符,返回值、函数、参数列表相同的函数

 

函数实例练习:

 1 //打印*    函数封装练习        
 2         printX(3);            
 3         }
 4 
 5     private static void printX(int x) {
 6         for(int i=0;i<=x;i++){
 7             System.out.print("\t");
 8             for(int j=0;j<i;j++){
 9                 System.out.print("*"+"\t");
10             }
11             System.out.println();
12         }
13         
14     }
1 //    判断相等与否    
2         int x=3,y=5;
3         boolean pd=boolenX(x,y);            
4         }
5 
6     private static boolean boolenX(int x, int y) {
7         return x==y?true:false;
8         
9     }    
 1 //    判断大小与否    
 2         int x=3,y=5;
 3         int  bigger=boolenX(x,y);            
 4         }
 5 
 6     private static int boolenX(int x, int y) {
 7         if(x==y)
 8             System.out.println("一样大");
 9         return x>y?x:y;
10         
11     }    

 

 1         int x=3,y=5,z=6;
 2         int  bigger=boolenX(x,y,z);        
 3         System.out.print(bigger);
 4         }
 5 
 6     private static int boolenX(int x, int y, int z) {
 7         int bigger=boolenX(x,y);
 8         return bigger>z?bigger:z;
 9     }
10 
11     private static int boolenX(int x, int y) {
12 
13         return x>y?x:y;
14         
15     }    

数值对换的几种方法

 1 //        更换a、b数值的多种方法
 2 //        法1
 3         int temp=a;
 4         a=b;
 5         b=temp;
 6 //        法2
 7         a=a+b;
 8         b=a-b;
 9         a=a-b;
10         
11 //        法3
12         a=a^b;
13         b=a^b;
14         a=a^b;
15         
16 //        法4
17         a=b+(b=a)*0;

 

二进制,八进制,16进制的方法

 1     public static void main(String[] args){
 2 //    进制
 3         
 4     }
 5 //    二进制
 6     public static void toBin(int num){
 7         conver(num,1,1);
 8     }
 9 //    八进制
10     public static void toOct(int num){
11         conver(num,7,3);
12     }
13 //    16进制
14     public static void toHex(int num){
15         conver(num,15,4);
16 //        
17     }
18 private static void conver(int num, int diwei, int yiwei) {
19     if(num==0){
20         System.out.println("num+"+0);
21         return;
22     }
23 //    制表符
24     char[] chs={'1','2','3','4','5','6','7','8','9','a','b','c',
25             'd','e','f'};
26 //    容器八个字符32位
27     char[] arr=new char[32];
28     
29     int pos=arr.length;
30 //    取余的反向打印
31     while(num!=0){
32         arr[--pos]=chs[num&diwei];
33         num>>>=yiwei;        
34     }
35 //    反向打印
36     for(int x=pos;x<arr.length;x++){
37         System.out.print(arr[x]);
38     }
39     System.out.println();
40 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---