Java基础语法学习
1. 注释
-
单行注释:
//单行注释
-
多行注释:
/*多行注释 多行注释 多行注释 多行注释 */
2. 关键字与标识符
-
关键字:
-
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符
标识符注意点
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary、#abc
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
3. 数据类型
-
Java是强类型语言
-
Java的数据类型分为两大类
-
(八大)基本类型(primitive type)
-
引用类型(reference type)
//八大基本类型 //整数 byte num1 = 10; short num2 = 20; int num3 = 30;//最常用 long num4 = 40L;//Long类型要在数字后面加个L //浮点数 float num5 = 50.1F;//float类型要在数字后面加个F double num6 = 3.1415926; //字符 char name = 'A'; //字符串,String不是关键字,是类 //String name2 = "张三"; //布尔值:是非 boolean flag = true; //boolean flag = false;
-
数据类型扩展
-
整数扩展:进制
0b二进制:
int i = 0b10; System.out.println(i);//输出为2
0八进制:
int i = 010; System.out.println(i);//输出为8
0x十六进制:
int i = 0x10; System.out.println(i);//输出为16
-
浮点数扩展:
float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d);//输出为false
float d1 = 12343233232f; float d2 = d1 + 1; System.out.println(d1==d2);//输出为true
-
字符拓展:强制转换
char c = "A"; System.out.println((int)c);//输出为97
-
转义字符
// \t 制表符 // \n 换行
-
String扩展
String sa = new String(original:"hello world"); String sb = new String(original:"hello world"); System.out.println("sa==sb"); //false,因为是对象,从内存分析
-
布尔值扩展
boolean flag = true; if (flag == true){} //新手 if (flag){} //老手 //Less is More! 代码要精简易读
4. 类型转换
-
运算中,不同类型的数据西安转化为同一类型,然后进行计算。
-
强制类型转换:高-->低
int i = 10; byte b = (byte)i;
-
自动类型转换:低-->高
int i = 10; double b = i;
-
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题
int i = 128; byte b = (byte)i; //输出为-128,内存溢出
System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45
//操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000; int years = 20; int total = money*years; //-1474836480,计算的时候溢出了 long total2 = money*years; //默认是int,转换之前已经存在问题了 long total3 = money*((long)years); //先把一个数转换为long
-
5. 变量、常量、作用域
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明变量。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varname [=value][{,varName[=value]}]; //数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。(不推荐)
-
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
//int a=1,b=2,c=3;(不推荐,程序可读性差) int a=1; int b=2; int c=3; String name = "zhang"; char x = 'X'; double pi = 3.14;
-
变量作用域
-
类变量
-
实例变量
-
局部变量
public class Variable{ static int allClicks=0; //类变量:写在方法外面,前面加static String str="hello world"; //实例变量:写在方法外面 public void method(){ int i = 0; //局部变量:写在方法里面 } }
import java.sql.SQLOutput; public class 变量 {//这里类的名字最好用英文,我写错了 //类变量 static static double salary = 2500; //属性:变量 //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0 //布尔值:默认是false //除了基本类型,其余的默认值都是null; String name; int age; //main方法 public static void main(String[] args) { //局部变量;必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = new 变量类型(); 变量 变量 = new 变量(); System.out.println(变量.age); System.out.println(变量.name); //类变量 static System.out.println(salary); } //其他方法 public void add(){ } }
常量
-
常量:初始化后不能再改变值!不会变动的值。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
//final 常量名=值; final double PI = 3.14;
-
常量名一般使用大写字符。
public class 常量 { //修饰符,不存在先后顺序 static final double PI = 3.14; //final static double PI = 3.14; public static void main(String[] args) { System.out.println(PI); } }
变量的命名规则
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:润(),runRun()
6. 基本运算符
- 算数运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
自增自减运算符
- ++ --是一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
System.out.println(a); //输出4
System.out.println(b); //输出3
int c = ++a; //执行完这行代码后,先自增,再给b赋值
System.out.println(a); //输出5
System.out.println(c); //输出5
初识Math类
-
幂运算
double pow = Math.pow(3,2); System.out.println(pow); //3^2=9
-
很多运算,我们会使用一些工具类来操作!
逻辑运算符
-
&&:逻辑与运算:两个变量都为真,结果才为true。
-
||:逻辑或运算:两个变量有一个为真,则结果才为true。
-
!:逻辑非运算:如果是真,则变成假;如果是假,则变成真
-
短路运算:
int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d); //因为c<4已经是false了,所以就不用进行接下来的计算了
位运算符
/*
A = 0011 1100
B = 0000 1101
-------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
*/
/*
2*8 = 16 计算机怎么做算得快
=2*(2*2*2)
效率极高!!
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
扩展赋值运算符
-
a+=b --> a = a+b
a-=b --> a = a - b
-
字符串连接符 +
int a = 10; int b = 20; System.out.println(""+a+b); //输出为1020 System.out.println(a+b+""); //输出位30
条件运算符
-
三元运算符
-
x ? y : z
如果x==true,则结果为y,否则结果为z
int score = 80; String type = score<60 ? "不及格" : "及格"; System.out.println(type);
7. 包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。(相当于文件夹)
-
包语句的语法格式为
package pkg1[.pkg2[.pkg3...]];
-
一般利用公司域名倒置作为包名;
com.baidu.www
com.baidu.wenku
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能。
import package1[.package2...].(classname|*);