JAVA入门之基本语法(一)
最近开始复习JAVA语言为找工作做准备,方便以后再次复习或者用到的时候回顾。先是从JAVA的基本语法学起,因为有c和c++语言的基础知识铺垫,所以这部分的笔记会比较粗略,毕竟语言都是贯通的嘛~
1.变量
1.1变量的使用
java定义变量的格式:数据类型 变量名 = 变量值 说明: 1.变量必须先声明,后使用 2.变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了 3.不可以在同一个作用域内定义同名的变量
1.2变量的数据类型
1.2.1整数类型:byte、short、int、long
java各整数类型有固有的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性 java的整型常量默认为int型,声明long型常量须后加“l”或“L” java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
类型 占用存储空间 表数范围 byte 1字节=8bit位 -128~127 short 2字节
−
2
15
-2^{15}
− 2 1 5 ~
2
15
−
1
2^{15}-1
2 1 5 − 1 int 4字节
−
2
31
-2^{31}
− 2 3 1 ~
2
31
−
1
2^{31}-1
2 3 1 − 1 long 8字节
−
2
63
-2^{63}
− 2 6 3 ~
2
63
−
1
2^{63}-1
2 6 3 − 1
1.2.2浮点类型:float、double
Java的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
类型 占用存储空间 表数范围 单精度float 4字节 -3.403E38~3.403E38 双精度double 8字节 -1.798E308~1.798E308
1.2.3字符类型:char
char型数据用来表示通常意义上“字符"(2字节) Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符 字符型变量的三种表现形式: 1.字符常量是用单引号(’’)括起来的单个字符,内部只能写一个字符 2.Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量 3.直接使用Unicode值表示字符型常量char类型是可以进行运算的。因为它有对应的Unicode码
1.2.4字符类型:boolean
只能取两个值之一:true、false 常常在条件判断、循环结构中使用
1.3基本数据类型之间的运算规则
这里只讨论7种基本数据类型变量间的运算。不包含boolean类型。
1.3.1自动类型提升
当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。注意:此时的容量大小指的是,表示数的范围的大和小。比如:float容量大于long容量。 byte 、char 、short–>int–>long–>float–>double 特别的,当byte、char、short三种类型的变量做运算时,结果为int型
1.3.2强制类型转换(自动类型提升运算的逆运算)
需要使用强制符:( ) 注意点:强制类型转换,可能会导致精度损失
class VariableTest3 {
public static void main ( Stringp[ ] args ) {
double d1 = 12.9 ;
int i1 = ( int) d1;
System. out. println ( i1) ;
long l1 = 123 ;
short s2 = ( short) l1;
int i2 = 128 ;
byte b = ( byte) i2;
System. out. println ( b) ;
}
}
整型常量,默认类型为int型号;浮点型常量,默认类型为double型。
class VariableTest4 {
public static void main ( Stringp[ ] args ) {
byte b = 12 ;
byte b1 = b + 1 ;
float f1 = b + 12.3 ;
}
}
1.4 String类型变量的使用
String属于引用数据类型,翻译为:字符串 声明String类型变量时,使用一对“ ” String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+ 运算结果仍然是String类型
class StringTest1 {
public static void main ( Stringp[ ] args ) {
char c = 'a' ;
int num = 10 ;
String str = "hello" ;
System. out. println ( c + num + str) ;
System. out. println ( c + str + num) ;
System. out. println ( c + ( num + str) ) ;
System. out. println ( ( c + num) + str) ;
System. out. println ( str + num + c) ;
System. out. println ( "* *" ) ;
System. out. println ( '*' + '\t' + '*' ) ;
System. out. println ( '*' + "\t" + '*' ) ;
System. out. println ( '*' + '\t' + "*" ) ;
System. out. println ( '*' + ( '\t' + "*" ) ) ;
}
}
2.关于进制
所有数字在计算机底层都以二进制形式存在 对于整数,有4种表示方式: 1.二进制(binary):0,1,满2进1。以0b或0B开头 2.十进制(decimal):0-9,满10进1 3.八进制(octal):0-7,满8进1。以数字0开头表示 4.十六进制(hex):0-9及A-F,满16进1。以0x或0X开头表示。此处的A-F不区分大小写。Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位 二进制的整数有如下三种形式: 1.原码:直接将一个数值换成二进制数。最高位是符号位 2.负数的反码:是对原码按位取反,只是最高位(符号位)确定为1 3.负数的补码:其反码加1计算机以二进制补码的形式保存所有的整数 1.正数的原码、反码、补码都相同 2.负数的补码是其反码+1十进制—>二进制:除2取余的逆,其余进制之间的转换,自寻百度,非常简单
3.运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等等 Java中主要有:算术运算符、赋值运算符、比较运算符(关系运算符)、逻辑运算符、位运算符、三元运算符
3.1 算数运算符、赋值运算符以及比较运算符:
运算符 运算 范例 结果 + 正号 +3 3 - 负号 b=4;-b -4 + 加 5+5 10 - 减 6-4 2 * 乘 b=4;-b -4 / 除 b=4;-b -4 % 取模(取余) b=4;-b -4 ++ 自增(前):先运算后取值 a=2;b=++a; a=3;b=3 ++ 自增(后):先取值后运算 a=2;b=a++; a=3;b=2 - - 自减(前):先运算后取值 a=2;b=- -a; a=1;b=1 - - 自减(后):先取值后运算 a=2;b=a- -; a=1;b=2 + 字符串连接 “he”+“llo” “hello” == 相等于 4==3 false != 不等于 4!=3 true < 小于 4<3 false > 大于 4>3 true <= 小于等于 4<=3 false >= 大于等于 4>=3 true instanceof 检查是否是类的对象 “hello” instanceof String true
3.2 逻辑运算符:(逻辑运算符操作都是boolean类型的变量)
A B A&B A&&B A|B A||B !A A^B true true true true true true false false true false false false true true false true false true false false true true true true false false false false false false true false
3.3 位运算符:(位运算是直接对整数的二进制的运算)
位运算符操作的都是整型的数据 <<:在一定范围内,每向左移1位,相当于 * 2 >>:在一定范围内,每向右移1位,相当于 / 2 面试题:最高效方式的计算2*8?===> 2<<3 或 8<<1
运算符 运算 范例 << 左移 3<<2 = 12 --> 32 2=12 >> 右移 3>>1 = 1 --> 3/2=1 >>> 无符号右移 3>>>1= 1 --> 3/2=1 & 与运算 6&3 = 2 | 或运算 6|3 = 7 ^ 异或运算 6^3 = 5 ~ 取反运算 ~6 = -7
运算符 细节 << 空位补0,被移除的高位丢弃,空缺位补0 >> 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1 >>> 被移位二进制最高位无论是0或是1,空缺位都用0补 & 二进制位进行&运算,只有1&1时结果是1,否则是0 | 二进制位进行|运算,只有0|0结果是0,否则是1 ^ 相同二进制位进行^运算,结果是0;1^1=0,0^0=0;不相同二进制位进^运算结果是1,1^0=1,0^1=1 ~ 正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反
3.4 三元运算符:
结构:(条件表达式)?表达式1 : 表达式2 说明: 1.条件表达式的结果为boolean类型 2.根据条件表达式真或假,决定执行表达式1,还是表达式2。如果表达式为true,则执行表达式1;如果表达式为false,则执行表达式2 3.条件表达式1和表达式2的结果是一致的 4.三元运算符可以嵌套使用 5.凡是可以使用三元运算符的地方,都可以改写成if-else,反之不成立 6.既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符
double num = ( m > n) ? 2 : 1.0 ;
String maxStr = ( m > n) ? "m大" : ( ( m== n) ? "m和n相等" : "n大" ) ;
System. out. println ( maxStr) ;
4.程序流程控制
4.1 顺序结构:
4.2 分支结构:
根据条件,选择性地执行某段代码 有if-else和switch-case两种分支语句
4.3 循环结构:
根据循环条件,重复性地执行某段代码 有while、do…while、for三种循环语句 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
最后希望大家多多关注我、支持我一下~~,我会持续更新关于JAVA语言的知识和大家一起分享的。