变量
//定义:可以变化的量
//Java是一种强类型语言,每个变量都必须要声明其类型
//java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [+value] [{varName}];
// 数据类型 变量名 = 值 ;可以使用逗号隔开来声明多个同类型变量
/* 每个变量都有类型,可以是基本类型也可以是引用类型
每个变量都必须合法;变量声明是一条完整的语句,因此每个声明都必须以分号结束*/
package java笔记;
public class Demo1 {
public static void main(String[] args) {
//数据类型 变量名 = 值;
//int a,b,c;
//int a=1,b=2,c=3;不提倡;要保证可读性
String name ="niannian";
char x ='X';
double pi = 3.14;
}
}
变量作用域
//类变量;实例变量;局部变量;
public class Variable{
static int allClicks = 0; //类变量
String str = "hello world"; //实例变量
public void method(){
int i = 0; //局部变量
}
}
package java笔记;
public class Demo2 {
//类变量 static(从属于类)
static double salary = 2500;
//属性:变量
//实例变量:作用域在类里面方法外面(从属于对象);如果不自行初始化输出这个类型的默认值
//布尔值:默认是false
//除了基本类型,其余默认值是null
String name;
int age;
//main方法
public static void main(String[] args) {//pvsm
//局部变量:必须声明和初始化值(只在main方法中有效,从属于方法)
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo2();
Demo2 demo2 = new Demo2();
System.out.println(demo2.age);
System.out.println(demo2.name);
//类变量 static
System.out.println(salary);
}
//其他方法
}
常量
//定义:初始化后不改变值;一种特殊的变量
final 常量名 = 值;
final double PI=3.14;//常量名一般使用大写字符
package java笔记;
public class Demo3 {
static final double PI = 3.14;
//修饰符,不存在先后顺序static静态的
final static double radius = 3.0;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
所有变量,方法,类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 lastname LastName
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run(),runRun()
运算符
算术运算符:+ - * / % -- ++
赋值运算符:=
关系运算符: > < >= <= == != instanceof(二元运算符,判断一个引用类型变量所指向的对象是否是一个类(或接口。抽象类,父类)的实例,即左边的对象是不是右边的类的实例)
逻辑运算符: && || ! (与或非)
位运算符 : & | ^ ~ >> << >>>
条件运算符?:
扩展赋值运算符: += -= *= /=
优先级(): 单目乘除为关系,逻辑三目后赋值
-
单目运算符: + - ++ --
-
乘除:算数单目运算符 * 、 % + -
-
为:位移单目运算符 << >>
-
关系: 关系单目运算符 > , <, >= ,<=,== !=
-
逻辑:逻辑单目运算符 && , || ,!=
-
三目:三木单目运算符 A>B?X:Y
-
赋值: =
package operator;
public class Demo1 {
public static void main(String[] args) {
//二元运算符
// ctrl +D :复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);//a/b得到小数,而a,b均为整数类型,如果不强制转换结果会出错为0,自动省略小数点后面的数字
}
}
package operator;
public class Demo2 {
//算术运算符:+ - * 、 % == --
public static void main(String[] args) {
// TODO Auto-generated method stub
long a =123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
int x = 20;
int y = 21;
System.out.println(y % x);//取余或者模运算
System.out.println(a+b+c+d);//如果存在Long则结果输出为long类型,如果不是则为int类型;如果有double 则为double 类型;
//低——>高: byte,char,short->int->long->float->double
System.out.println(b+c+d);
System.out.println(c+d);
}
}
package operator;
public class Demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//关系运算符返回结果:正确 错误 布尔值
//会与if 使用
int a =10;
int b = 20;
int c =21;
System.out.println(c%a);//取余或者模运算
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
package operator;
public class Demo4 {
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
int a =3;
int b=a++;//执行完这行代码后,先给b赋值,再自增
//a++ a = a+1;
// a= a+1
System.out.println(a);
int c=++a;//执行完这行代码前,先自增,再给b赋值
System.out.println(a);
System.out.println(a);
System.out.println(b);
System.out.println(b);
System.out.println(c);
System.out.println(c);
//幂运算 很多运算会使用工具类操作!
//Math类提供很多运算
double pow = Math.pow(3,2);//3^2=9
System.out.println(pow);
String s = "Hello";
int[] t = {1,2};
if(s instanceof String) {
System.out.println("true");
}
if (s instanceof Object) {
System.out.println("true");
}
if (t instanceof int[]) {
System.out.println("true");
}
}
}
package operator;
//逻辑运算符
public class Demo5 {
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a&&b));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:" + (a||b));//逻辑或运算:两个变量都为假,结果才为false
System.out.println("! (a&&b):" + !(a&&b));//如果是真,则为假;如果是假,则为真
System.out.println("------------------");
System.out.println(a&&b);
System.out.println("---------------------------");
//短路运算 b&&a :b为假,就不需要进行下面运算了,即为短路运算
int c =5;
boolean d = (c<5)&&(c++<4);
System.out.println(d);
System.out.println(c);
//短路,只算到c<5 ,下面不执行,所以c=5
boolean e = (c==5)&&(c++ == 4);
System.out.println(e);
System.out.println(c);
//没有短路
}
}
package operator;
public class Demo6 {
public static void main(String[] args) {
/*位运算:二进制
*A = 0011 1100
*B = 0000 1101
*--------------------------------------------
*A&B 0000 1100(两个位都为1结果为1,否则为0)与
*A/B 0011 1101(两个位都为0结果为0,否则为1)或
*A^B 0011 0001(两位相同为0,不相同为1)
*~B 1111 0010 取反
*
*
*问:2*8 怎样运算最快 2*2*2*2
*<<左移 相当于 *2
* 效率极高
*>>右移 相当于 /2
*
*0000 0000 0
*0000 0001 1
*0000 0010 2
*0000 0011 3
*0000 0100 4
*0000 1000 8
*0001 0000 16
*/
}
}
package operator;
public class Demo7 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a = a + b
a-=b;// a = a - b
System.out.println(a);
//字符串连接符 +
System.out.println(a+b);
//问: (""+a+b) 与(a+b+"")有什么区别?
System.out.println(""+a+b); //"" 表示字符串,String类型,在+两侧出现字符串类型 ,会是自动将另一个操作数都转换成字符串类型,再进行链接
System.out.println(a+b+"");//a,b在字符串前面,依旧进行连接,所以结果为30
}
}
package operator;
//三元运算符
public class Demo8 {
public static void main(String[] args) {
// x ? y: z
//如果x==true ,则结果为 y,否则结果为z
int score = 80;
String type = score < 60 ?"不及格":"及格"; //必须掌握
System.out.println(type);
System.out.println("------------------------");
int grade = 50;
String type2= grade < 60 ?"不及格":"及格";
System.out.println(type2);
//if
}
}