1、注释、标识符、关键字
注释
-
单行注释
//可以注释一行文字
-
多行注释
/* 可以注释
多段文字 */
-
JavaDoc:文档注释
/**开头
*/结尾
其中每一段开头会有一个*
即:
/**
*/
标识符
关键字
注:取名不能与以上单词相同,即:不能public class class
Java所有的组成部分都需要名字。类名、变量名以及方法名都被统称为标识符
标识符注意点
- 所有的标识符都应以字母,美元符($)、或下划线(_)开始
- 首字母之后可以是字母、美元符、下划线或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
2、数据类型
强类型语言
变量使用要求严格,所有变量必须先定义后使用
弱类型语言
使用较无严格要求
Java的数据类型分为两大类
//八大基本数据类型
//整数
int num1=10;
byte num2=20;
shrt num3=30;
long num4=30L; //long类型要在数字后面加个L
//小数:浮点数
float num5=50.1F;//float类型要在数字后面加个F
double num6=3.1415926535897932;
//字符
char name='A';
//字符串,String不是关键字,是类
//String namea="字符串"
//布尔值:是非
boolean flag=true;
boolean flag=false;
public class demo{
public static void main(String[] args) {
//整数拓展:进制:二进制0b 十进制 八进制0 十六进制0x
int num=10;
int i1=010;//八进制0
int i2=0x10;//十六进制0x
System.out.println(num);
System.out.println(i1);
System.out.println(i2);
//============
//浮点数拓展
//BigDecimal 数学工具类(可用于计算)
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好不要使用浮点数进行比较
float f=0.1f;//0.1
double d=1.0/10;//0.1
System.out.println(f==d);//false
float d1=23131313f;
float d2=d1+1;
System.out.println(d1==d2);//true
//====================
//字符拓展
char c1='a';
char c2='中';
System.out.println(c1);//a
System.out.println((int)c1);//强制转换 97
System.out.println(c2);//中
System.out.println((int)c2);//强制转换 20013
//所有的字符本质还是数字
//============
//布尔值拓展
boolean flag=true;
if(flag==true){}
if(flage){}//默认==true
//两者相同
}
}
3、类型转换
public class demo01{
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//内存溢出
double c=i;
//强制转换 (类型)变量名 高--低
//自动转换 低--高
System.out.println(i);
System.out.println(b);
System.out.println(c);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内容溢出,或者精度问题
*/
}
}
public class demo02{
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total);//计算溢出,结果值有问题
long total2=money*((long)years);//先把一个数转化为long
System.out.println(total2);
}
}
4、常量、变量
变量
type varName [=value][{,varName[=value]}];
//数据类型 变量名=值; 可以使用逗号隔开来声明多个同类型变量
public class demo{
public static void main(String[] args) {
String a="hello";
int num=10;
System.out.println(a);
System.out.println(num);
}
}
注:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
public class Variable{
static int allClicks=0;//类变量
String str="hello world";//实例变量
public void method(){
int i=0;//局部变量
}
}
public class demo03{
//类变量 static
static double salary=2500;
//属性:变量
//实例变量:从属于对象;如果不自行初始化,这个类型的默认值
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i=10;
System.out.println(i);
//变量类型 变量名字=new demo03()
demo03 mo=new demo03();
System.out.println(mo.age);
System.out.println(mo.name);
System.out.println(salary);
}
}
常量
初始化后不能再改变的值
final 常量名=值
常量名一般使用大写字符
public class demo04{
//为修饰符,不存在先后顺序
static final double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
5、运算符
二元运算符
public class demo05{
//二元运算符
public static void main(String[] args) {
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);
long e=1231231321321L;
int f=123;
short g=10;
byte h=8;
System.out.println(e+f+g+h);//有一个为long结果即为long
System.out.println(f+g+h);//没long的时候结果都为int
System.out.println(g+h);//没long的时候结果都为int
}
}
关系运算符
public class demo06{
public static void main(String[] args) {
//关系运算符返回结果:正确 错误 (布尔值)
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);
}
}
自增自减运算符
public class demo07{
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
int a=3;
int b=a++;//执行这行代码吼,先给b赋值,再自增
//a=a+1
System.out.println(a);
int c=++a;//执行完这行代码后,先自增,再给c复制
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算
double pow= Math.pow(3,2);
System.out.println(pow);
}
}
逻辑运算
public class demo08{
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));//两个变量有一个为真结果就为true
System.out.println("!(a&&b):"+!(a&&b));//如果是假则为true
//短路运算
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);//输出为5
//c<4为false,不执行后面c++<4
}
}
位运算(与二进制相关)
public class demo09{
public static void main(String[] args) {
/*
A= 0011 1100
B= 0000 1101
A&B=0000 1100 对应位都为1则为1
A|B=0011 1101 对应位都为0则为0
A^B=0011 0001 如果对应位相同则为0
~B=1111 0010 取反0
<< 左移 *2
>> 右移 /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 1000 8
效率高
*/
System.out.println(2<<3);//输出值为16
}
}
public class demo10{
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);//1020
System.out.println(a+b+"");//30
}
}
三元运算符
public class demo11{
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score=80;
String type= score <60 ? "不及格":"及格";
System.out.println(type);
}
}