java语言基础组成
赋予了特殊含义的单词。
class
在程序中定义的一些名称。比如 类名(单词首字母大写)。由a-z 0-9 _ $组成,数字不可以开头,不可以使用关键字。
注解说明解释程序的文字
作用
1.对程序进行说明
2.调试程序
注意:多行注释中不要嵌套多行注释
//
/* */
/** */ 文档注释,java特有,用java.doc运行,生成一个html文档
举例:
/*
需求:写一个hello world程序,将hello world字样显示屏幕上。
思路:
1.找个编译器
2.用java语言,写个程序
3.这个程序需要运行,并具备显示的功能
步骤:
1.定义一个类,通过class完成
2.要让类运行,需要主方法
3.显示功能可以通过输出语句实现
代码:
测试:javac java
*/
//1.用class定义类
class Demo2
{
//2.类中定义主方法
public static void main(String[] args)
{
System.out.println("hello world");
//3.主方法中定义输出语句
}
}
不能改变的数值
整数常量:正数,负数,0;
小数常量;
布尔型常量,较为稀有,只有两个数值 true false;
字符常量:字母,数字,符号。用‘’括起来,只能放一个(中文,字母,数字);
字符串常量:用“”括起来,内容不限;
null常量,只有一个数值就是null
对于整数:有四种表现形式
二进制
八进制:三个一组,以0开头表示
十六进制:四个一组,以0x开头表示
十进制转为二进制 除以2取余数,倒过来写
二进制转为十进制 乘以2的次幂
8bit=1byte
负数的二进制就是正数的二进制取反+1
负数的二进制最高位都是1(8位数)
最高位数是符号位
二进制位都是1,对应的十进制是-1
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
定义变量的原因:用来不断存放同一类型的常量,并可以重复使用
使用变量注意:变量的作用范围(一对{}之间有效);初始化值
定义变量的格式:
数据类型 变量名=初始化值
注:格式是固定的,记住格式,以不变应万变。
byte取值范围:-128~127,8个二进制位
short:2个8位
int:4个8位
long:8个8位
float:4个字节 单精度
double:8个字节 双精度
char在内存中占两字节
long l=12345678900l;//对于过大的数,加l或者 long long
float f=2.3f;//小数后加f可以表示单精度存储
不同数据类型之间是可以一起运算的,因为“自动类型提升”而提升为空间大的类型,前提是变量都被赋予了值。
比如:
byte b=3;
int x=5;
x=x+b;
System.out.println("x="+x);//
但下面这种情况不能自动类型提升
byte b=3;//右边是一个常量,3在byte范围内,因此可以将3赋予byte类型的b中
b=b+1;//右边是一种变量,1默认为int,所以无法自动提升
System.out.println("b="+b);//所以报错
如果要将上述代码改成正确的,需要用强制类型转换:
byte b=3;//
b=(byte)(b+1);//强制转换
System.out.println("b="+b);//
char ch=97;
System.out.println("ch="+ch);//输出不报错。但结果为“ch=a”,因为对照的是ASCII编码表。
/*
+ - * / %(取余数)
应用:
任何数模以2,结果不是0就是1,用于开关的切换
任何数模以一个数,结果都比后者这个数小(1023%10 结果余3,)
*/
class OperateDemo
{
public static void main(String[] args)
{
int x=2810;
System.out.println("x="x/1000*1000);//运行结果为2000
System.out.println("x="3%-5);//运行结果为3
}
}
/*
++:自增,对原有的数据进行+1
*/
class OperateDemo
{
public static void main(String[] args)
{
int a=3;
//a++;//a=a+1;
//System.out.println("a="+a);//运行结果为4
//++a;//a=a+1;
//System.out.println("a="+a);//运行结果也为4,运算单独存在时,++放左放右是没有区别的
int a=3,b;
b=++a;
System.out.println("a="+a+",b="+b);//结果a=4,b=4
int a=3,b;
b=a++;//先算右边,再算左边。a的值临时被存储,a++,然后临时的值被赋予b;
/*顺序
temp=a;先将a进行临时存储
a=a+1;自增
b=temp;将临时的值赋值给b
*/
System.out.println("a="+a+",b="+b);//结果a=4,b=3
}
}
字符串+ 变成一个更大的字符串
System.out.println("5+5="+5+5);//结果5+5=55
System.out.println("5+5="+(5+5));//结果5+5=10
/*
= += -= /= %=
*/
int a=3;//右边赋给左边
a+=4;//将左右两边的和赋给左边,a=a+4
short s=4;
s=s+5;//编译错误,因为右边加完的值 无法判断该值在short范围内,容易丢失精度
s+=5;//+=是赋值运算符,编译通过,会做自动转换,不丢失精度
比较完的结果要么为true,要么为false
// < > == !=
System.out.println(3>4);//
用来连接boolean型表达式的
&与
|非
^异或 两边不同为true
|非
&&短路与 如果左边的为错误,那么右边的就不用判断了
||短路或
int y=4
y>3&y<6;//true
y>3&&y<6;//true
int y=1
y>3&y<6;//false
y>3&&y<6;//false
注意:
&与&&的区别:
&:无论左边结果是什么,两边都参与计算
&&:当左边为false,右边不参与运算
|与||的区别:
|:两边都参与运算
||:当左边为true,右边不参与运算