Java基础语法
Java数据类型
public class BasicDataElement {
public static void main(String[] args) {
int num1 = 15;
short num2 = 34;
long num3 = 43434L;//整数默认是int类型,L用来表示是long类型
float num4 = 4.5F;//小数默认是double,F用来表示float
double num5 = 5.445154654;
char name = '王';
String place = "Beijing";//String不是关键词,是一个类
boolean flag = false;//Java不允许使用0和非0来代表boolean
//银行业务怎么表示?使用BigDecimal数学工具类,而不用浮点数
//避免使用浮点数来进行比较
float f1 = 0.1F;
double f2 = 1/10;//0.1
System.out.println(f1 == f2);//结果是false,因为浮点数都是近似的
}
}
String不是基本数据类型,而是一个类,但是可以当成基本数据类型来操作,因为Java提供了自动装箱和自动拆箱的机制。
/*String对象提供了自动装箱,不用构造器就可以为对象赋值
*因为Java会自动在对象池中开辟空间保存字符串对象,赋值时只要把对象指向对象池即可
*但是用new String()实例化时会开辟新的空间,将不再使用对象池中的对象
*为了比较字符串对象,建议使用equals()方法
* */
public class StringTest {
public static void main(String[] args) {
String s1 = "hello"; //在对象池中保存了"hello"字符串,以供重复使用
String s2 = "hello"; //s1和s2都指向了对象池里的同一个"hello"字符串
String s3 = new String("hello"); //s3指向的是新开辟的空间
System.out.println(s1 == s2); //true
System.out.println(s2 == s3); //false
System.out.println(s2.equals(s3)); //true
}
}
表示不同进制的数
(1)十进制:正常表示
System.out.println(10);
(2)二进制:0b或0B开头
System.out.println(0B10);
(3)八进制:0开头
System.out.println(010);
(4)十六进制:0x或0X开头
System.out.println(0X10);
类型转换
Java运算符
//一些运算符
import java.sql.SQLOutput;
public class operator {
public static void main(String[] args) {
//java里没有2^3这样的幂运算,必须使用工具类Math.^是位运算异或
double pow = Math.pow(2,3);
System.out.println(pow);
System.out.println(2<<2);//还可以用移位运算
//逻辑运算符 && || !
boolean a = true;
boolean b = false;
System.out.println(a&&b);
System.out.println(a||b);
System.out.println(!(a||b));
//字符串连接符 +。只要左边有一个字符串就把两边连起来
int c = 10;
int d = 20;
System.out.println(c+d);//这里的+是数学运算符
System.out.println(""+c+d);//输出1020,+成为了字符串连接符
System.out.println(c+d+"");//输出30,因为运算顺序从左到右
//唯一的三元运算符,javaEE中常用到
int max = (10<20)?20:10;
System.out.println(max);
}
}
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& “与”,并且的关系,只要表达式中有一个值为false,结果即为false
System.out.println((i > j) & (i > k)); //false & false,输出false
System.out.println((i < j) & (i > k)); //true & false,输出false
System.out.println((i > j) & (i < k)); //false & true,输出false
System.out.println((i < j) & (i < k)); //true & true,输出true
System.out.println("--------");
//| “或”,或者的关系,只要表达式中有一个值为true,结果即为true
System.out.println((i > j) | (i > k)); //false | false,输出false
System.out.println((i < j) | (i > k)); //true | false,输出true
System.out.println((i > j) | (i < k)); //false | true,输出true
System.out.println((i < j) | (i < k)); //true | true,输出true
System.out.println("--------");
//^ “异或”,相同为false,不同为true
System.out.println((i > j) ^ (i > k)); //false ^ false,输出false
System.out.println((i < j) ^ (i > k)); //true ^ false,输出true
System.out.println((i > j) ^ (i < k)); //false ^ true,输出true
System.out.println((i < j) ^ (i < k)); //true ^ true,输出false
System.out.println("--------");
//! “非”,取反
System.out.println((i > j)); //false
System.out.println(!(i > j)); //!false,,输出true
短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
- 逻辑与&,无论左边真假,右边都要执行。
- 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
int x = 3;
int y = 4;
System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算
System.out.println(x); // 4
System.out.println(y); // 5
System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算
System.out.println(x); // 4
System.out.println(y); // 4
数据输入
我们可以通过 Scanner 类来获取用户的输入。使用步骤如下:
1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
import java.util.Scanner;
2、创建Scanner对象。
Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
3、接收数据
int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
流程控制语句
和C语言一样,不过没有goto语句,取而代之的是break标记
aaa:for(int i = 0; i < 10; i ++){
bbb:for(int j = 0; j < 10; j ++){
System.out.println(i+j);
if(i==5&&j==5){
break aaa;
}
}
}
方法
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。
如果在方法中执行了return语句,那么之后的代码将不再执行。如果没有返回值类型,可以直接通过return语句结束方法,此类操作通常与分支判断一起使用。
public void Show(int i){
if(i == 0){
return;//当传入的参数等于0时,结束方法
}else{
System.out.println("参数不等于0");
}
}
方法的重载:指同一类中的方法名称相同,参数类型或个数不同,调用的时候将会按照传递的参数类型和个数不同完成不同方法体的执行。注意不能通过返回值来判定两个方法是否构成重载。
public void Show(int i){
System.out.println("这是整数:"+i);
}
public void Show(double d){
System.out.println("这是浮点数:"+d);
}
也可以实现重载方法返回不同类型的操作,但从标准的开发来讲,建议所有重载后的方法使用同一类型的返回值。