代码改变世界

Java学习笔记,第三章

2017-01-02 20:02  Self_made  阅读(302)  评论(2编辑  收藏  举报

Java基础语法

3.1类型、变量与运算符

3.1.1类型

Java可分为基本类型类类型或参考类型。基本类型主要有

  • 整数:可分为short整数(2字节,-32768 -- 32767),int整数(4字节,-2147483648 -- 2147483647),long整数(8字节,-9223372036854775808 -- 9223372036854775807)。
  • 字节:byte,长度一字节,需要逐字节处理数据时使用,表示-128~127的整数。
  • 浮点数:主要用来存储小数数值,分为float浮点数(4字节)和double(8字节)。float,double精度范围分别为-126 -- 127和-1022 -- 1023。
  • 字符:char用来存储字符符号,JDK 8中Java字符采用Unicode 6.2.0编码,JVM中采用UTF-16 big EndIan,每个字符占2字节,汉字与英文字符都是采用双字节存储。char可表示的Unicode范围0 -- ffff。
  • 布尔:boolean代表true和false;

常用格式控制符号
System.out.printf("%d", arg)输出控制符号:%%表示%,%d以十进制格式输出,%f以十进制浮点格式输出,%o以八进制格式输出,%x以十六进制格式输出,%s字符串格式输出,%c字符符号输出,%h使用Integer.toString(arg.hashCode())来得到输出结果。

3.1.2变量

1、基本规则

  • 变量不可使用特殊字符,不可与Java关键词同名,不可与Java保留字同名。
  • 以小写字母开始,每个单词第一个字母大写,即驼峰式命名法。
  • 方法内部声明的变量是局部变量,变量在未赋初值即没有初始化之前不可以被引用。

2、字面常量

int num1 = 12;  //十进制表示
int num2 = 0xc;  //十六进制表示
int num3 = 014;  //八进制表示   

浮点数也可用科学计数法表示

double num1 = 0.00123;  
double num2 = 1.23e-3;   

字符用'表示

char c1 = 'S';
char c2 = '李';    

转义字符:

\\  ————反斜杠\  
\'  ————单引号  
\"  ————双引号    
\f  ————换页  
\n  ————换行  

3、数字常量表示法

用下划线更清楚表示

int num4 = 1234_5678;
double num5 = 3.1415_9265;  

二进制也可以

int num6 = 0b101010101010;
int num7 = 0b1010_1010_1010;  

3.1.3运算符

1、算术运算

+,-,*,/,%

2、比较、条件运算

System.out.printf("10 >= 5 结果 %b%n", 10>=5);
System.out.printf("10 <= 5 结果 %b%n", 10<=5);
System.out.printf("10 != 5 结果 %b%n", 10!=5);  

对于类类型声明的参考名称来说,两个参考名称使用==比较,是比较两个名称是否参考至同一对象。(字符串是一个对象,比较时不用==,而是equals())
条件运算符,使用方式如下
条件式 ? 成立返回值 : 失败返回值

int score = 59;
System.out.printf("该学生是否及格? %c%n", score >= 60 ? '是':'否');  

3、逻辑运算

&&AND(且),||(或)OR,!(非)NOT。

4、位运算

&(AND),|(OR),^(XOR异或),~(补码,按位取反),<<左移(左边移除去的位被丢弃右边补0),>>右移(右边一处去的位被丢弃,左边补上原来的位),>>>(右移后左边补0)。

5、递增递减运算

6、指定运算符

+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=

3.1.4类型转换

  • 精度转换

    float f1 = 3.14f;
    f2 = (float) 3.14;
    通过以上两种方式可以通过编译。
    程序中写下整数时默认使用不超过int类型的长度2147483647,使用long c = 21_4748_3648L; 可以通过编译。

  • 自动提升类型
    表达式中包含不同类型,运算是以长度最长类型为主。

    short e = 1, g = 2;
    short h = (short) (g + e);

运算整数时如果不大于int,则在int空间计算,int结果无法直接放入short,所以需要强转。

int最大2147483647 + 1会得到-2147483648,即会溢出。

3.2流程控制

3.2.1 if...else条件式

3.2.2 switch条件式

switch() {
	case 整数、字符、字符串或Enum:  
		描述句;
		break;
	case 整数、字符、字符串或Enum:  
		描述句;
		break;
	....
	default:
		描述句;
}  

3.2.3 for循环

for(初始试; 执行结果必须是boolean的重复式; 重复式) {
	描述句;	
}  

第二个区域若没有写就是默认的true。
for(;;) {}表示无穷循环。

3.2.4 while循环

while(条件式){
	描述句;
}  

while又称为前测试循环,可以使用do...while后测试循环,先执行动作在判断要不要重复。

do {
	描述句;
}while(条件式);  

3.2.5 break、continue

  • break在switch主要用来中断下一个case比较,在for,while,do...while中主要用来中断当前循环。

  • continue与break类似,但在循环中只是中断但前循环,回到开头进行下一次循环,不离开循环。

  • break和continue还可以配合标签使用,

     	back : {
          for(int y = 1; y <= 10; y++) {
              if(y == 9) {
                  System.out.println("break");
                  break back;
              }
          } 
          System.out.println("test");
      }  
    

当执行到break back时返回至back标签处之后整个back区块都不执行而跳过。

 	back1 : for(int x = 0; x < 10; x++) {
        back2 : 
        for(int z = 0; z < 10; z++) {
            if (z == 9) {
                continue back2;
            }
        }
        System.out.println("test");
    }  

continue只能设定在for循环之前,可以自由的跳到任意层循环。