Java基础语法(二)
文章目录
一、标识符
标识符注意点:
- 所有的标识符都应该以字母,美元符,或下划线开始
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议这样使用,也不建议使用拼音,很low.
二、数据类型
(四类八种)强类型语言弱类型语言
public class ShuJuLeiXing{ public static void main(String[] args){//8种数据类型 //整型 byte num2 = 12;// short num3 = 12;//短整型 int num1 = 12;//整形 long num4 = 314159263846L;//长整型类型要在后面加L,以便知道是长整型 //小数型 float num5 = 5.55F;//浮点数小数要在后面加F,以便知道是浮点数 double num6 = 5.777777; //Boolean型 boolean one = true; boolean two = false; System.out.println(num2); System.out.println(num3); System.out.println(num1); System.out.println(num4); System.out.println(num5); System.out.println(num6); System.out.println(one); System.out.println(two); } }
运行结果
12
12
12
314159263846
5.55
5.777777
true
false
Process finished with exit code 0
数据类型扩展
public class FuDianShuTuoZhan { public static void main(String[] args) { //进制 int a = 0b10;//二进制 int x = 10;//十进制 int y = 010;//八进制O int z = 0x10;//十六进制0x System.out.println(a+"-------"+x+"-------"+y+"-------"+z); //浮点数拓展 银行业务怎么表示?钱 //BigDecimal //float 有限 离散 舍入误差 大约 接近但不等于 //double 最好完全使用浮点数进行比较 float b = 0.1f; double c = 1/10; System.out.println(b == c);//false float bb = 211313123f; float cc = bb+1;//接近但 不等于 System.out.println(bb == cc);//true//字符拓展 char num1 = 'a'; char num2 = '中'; System.out.println(num1); System.out.println((int)num1);//强制转换 System.out.println(num2); System.out.println((int)num2);//强制转换 //所有的字符本质还是数字 (97=a 65 =A) //转义字符 \n 换行 \t 制表符 System.out.println("Hello\tWorld"); System.out.println("Hello\nWorld"); //对象 可以从内存的角度思考明知下列出现的结果 String sa = new String("Hello World"); String sb = new String("Hello World"); System.out.println(sa == sb);//false String sc = "Hello World"; String sd = "Hello World"; System.out.println(sc == sd);//true }}
运行结果如下:
2-------10-------8-------16
false
true
a
97
中
20013
Hello World
Hello
World
false
true
Process finished with exit code 0
三、类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低 ------------------------------------->高
byte,short,char——>int——>long——>float——double
运算中,不同类型的数据先转换为同一类型,然后进行运算。
强制类型转换
自动类型转换
public class LeiXingZhuanHuan { public static void main(String[] args) { int a = 128; byte b = (byte) a; //内存溢出 //强制类型转换 (类型)变量名 高——>低 //自动类型转换 低——>高 System.out.println(a); System.out.println(b); /* * 注意点: * 1.不能对布尔值进行转换 * 2.不能把对象类型转换为不相干的类型 * 3.在把高容量转换到低容量的时候,强制转换 * 4.转换的时候可能存在内存溢出,或者精度问题! * */ System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45 //操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; System.out.println(money); int years = 20; int total = money*years;//-1474836480,计算的时候溢出了 long total2 = money*years;//默认是int,转换之前已经存在问题了? long total3 = ((long)money*years);//先把一个数转换为long System.out.println((long)total2); }}
运行结果如下:
128
-128
23
-45
1000000000
-1474836480
Process finished with exit code 0
四、变量
- 变量是什么:就是可以变化的量!
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value][{,varName[=value]}];//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
注意事项:
每个变量名都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class BianLiang { public static void main(String[] args) { int x = 400; int y = 34; System.out.println(x+"---"+y); }}
运行结果如下:
400—34
Process finished with exit code 0
五、变量作用域
类变量实例变量局部变量
public class BianLiangZuoYongYu { static double salary = 100;//类变量 public static void main(String[] args) { int salarys = 12; System.out.println(salarys);//局部变量 System.out.println(salary); }}
运行结果如下:
12
100.0
Process finished with exit code 0
六、变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写如:lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:(),runRun()
七、常量
常量:初始化后不能再改变值!不会变动的值。所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。final 常量名 = 值;final double pI = 3.14;
常量名一般使用大写字符。
public class ChangLiang { static final double PI = 3.1415926;//static 为修饰词放在final前后运行结果都一样 public static void main(String[] args) { final double a = 12.1254; System.out.println(a); }}
运行结果:
12.1254
Process finished with exit code 0
八、运算符
1、运算符:用于运算和操作数据的符号2、分类:算数运算符 + - * %,++,--赋值运算符 =, += ,-=比较运算符:>,=,>,<>>(了解!!!)三元运算符: ?:
九、算数运算符
1、运用做算数运算的符号2、+ - * / %3、+ :加法运算符:(1)表示正数(2)表示算数的加法(3)表示字符串的拼接4、/:除法运算符: (1)如果是两个整数相除,结果还是一个整数(2)如果任意一个操作数是小数,那么结果就是小数5、%:取模运算符、取余运算符:获取两数相除的余数 (1)注意事项:取余的结果的符号只和%前面的操作数的符号有关(2)作用:获取余数;判断是否整除;判断奇偶
class Demo_14_ZiZengZiJian {public static void main(String[] args) {//自增运算符int i = 100;//i++;System.out.println(i);//++ 或者--在变量后面先取值,再做加操作System.out.println(i++);System.out.println(i);int j = 200;//++ 或者 -- 在变量的前面,先运算再取值System.out.println(++j);}}
运行结果:
100
100
101
201
Process finished with exit code 0
十、逻辑运算符
1、用于处理逻辑值的运算符,就是逻辑运算符
2、处理的数据:逻辑值;处理的结果:逻辑值
3、分类:
普通的逻辑运算符:& | ^ !
短路的逻辑运算符:&& ||
4、&:逻辑与。全真为真,否则为假
true & true true
true & false false
false& true false
false& false false
5、|:逻辑或。全假为假,否则为真
true | true true
true | false true
false| true true
false| false false
6、^:逻辑异或。相同为假,不同为真
true ^ true false
true ^ false true
false^ true true
false^ false false
7、!:逻辑非。遇真为假、遇假为真【常用】
!true false
!false true
8、短路逻辑运算符【常用】:逻辑运算符前后的两个表达式中,第一个表达式计算完成之后,一定可以确定整个逻辑表达式的值,那么就不再计算第二个表达式的值。
&&:逻辑短路与,如果第一个表达式计算结果为false,那么第二个表达式的值就不计算了,直接给出false的结果
||:逻辑短路或,如果第一个表达式计算结果为true,那么第二个表达式的值就不需要计算了,直接给出true的结果
总结:短路运算符和非短路运算符的运算规则相同,只不过是效率更高
public class LuoJiYunSuan { public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println(a && b); //逻辑与运算,当两个都为真才为真,反之为假 System.out.println(a || b);//逻辑或运算,其中有一个为真,则为真,反之为假 System.out.println(!(a && b)); System.out.println("------------------------------------"); //基本的逻辑运算符 System.out.println(true & true); System.out.println(false & true); System.out.println(false | true); System.out.println(false ^ true); System.out.println(!true); //短路逻辑运算符 int k = 10; int c=4; boolean d = (k>100) && (c++<12); //boolean b = (k>100) & (a++<12); System.out.println(d + " " + c); int m = 10; int n = 4; boolean bo = (m > 9 ) || (n++ < 12); //boolean bo = (m > 9 ) | (n++ < 12); System.out.println(bo + " " + n); /* A = 0011 1100 B = 0000 1101 A & B = 0000 1100 //逻辑与。全真为真,否则为假 A | B = 0011 1101 //逻辑或。全假为假,否则为真 A ^ B = 0011 0001//逻辑异或 相同为假,不同为真 ~B = 1111 0010 //取反,相同为0,不同为1 */ }}
运行结果:
false
true
true
------------------------------------
true
false
true
true
false
false 4
true 4
Process finished with exit code 0
十一、位移运算符
1、对于数据在内存中的表示,进行按照位来移动,以此达到对数据进行运算的目的。
2、说明:只能操作整数类型的数据,运算结果还是整数
3、罗列:<>
4、<<:左移运算符,每次移动一位,会将原来的数字扩大2倍
5、>>:右移运算符,每次移动一位,会将原来的数字缩小为原来的二分之一
6、总结特点:
运算比直接乘以2或者除以2的效率要高很多
public class WeiYi { public static void main(String[] args) { //位移运算符 System.out.println(24 << 2); //左移运算符,每次移动一位,会将原来的数字扩大2倍 System.out.println(24 >> 2); //右移运算符,每次移动一位,会将原来的数字缩小为原来的二分之一 }}
运行结果:
96
6
Process finished with exit code 0
十二、三元运算符
1、元:可以操作的数据或者表达式
2、三元运算符:同时可以操作三个数据或者表达式的运算符
3、格式:
表达式1 ? 表达式2 : 表达式3
4、说明:
1、表达式1必须是boolean(布尔)类型的表达式,计算的结果只能是true、或者false
2、表达式2和表达式3可以是任意类型的表达式
5、运算流程:
1、计算表达式1的值,要么为true、要么为false
2、如果表达式1计算结果为true,就选择表达式2作为三元表达式的计算结果
3、如果表达式1计算结果为false,就选择表达式3作为三元表达式的计算结果
public class SanYuanYunSuanFu { public static void main(String[] args) { //三元表达式 int i = 10; int j = 20; int f = 20; int k = (i >= j ? (i+f) : (j+f) ); System.out.println(k); System.out.println(""+i+j); //字符串拼接会转换为字符串形式 System.out.println(i+j+""); }}
运行结果为:
40
1020
30
Process finished with exit code 0