//adf 单行 /* aadf 多行 adsfadf */
像void main public 这种固定的单词 有特殊含义的 编写时会变色 不能用作类名,变量名方法名
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
public class Hello { public static void main(String[] args) { string name="周京成"; System.out.println("Hello World!123"); } }
Hello是类名 前面是关键字class
main是方法名 前面是关键字void
name是变量名 前面是关键字string
以字母(A-z),美元符号($),或者下划线(_)开始
首字母之后可以是字母(A-z),美元符号($),下划线(_),数字
不能使用关键字作为变量名或方法名
标识符是大小写敏感的
合法标识符:age,$as,_ad23
非法标识符:12as,-as
不建议使用中文或拼音命名
整数类型
byte 占1个字节 1Byte=8bit 0-255 二进制8位
范围:-128-127
short 占2个字节 范围:-32768-32767
int 占4个字节 范围:差不多正负10位数 2开头
long 占8个字节 范围:差不多正负20位数 9开头
浮点类型
float 占4个字节
double 占8个字节
字符类型
char 占2个字节
boolean类型 占1个字节 只有true和false两个
类 class
接口 interface
数组 a[28]
String 是 引用类型
整数拓展
public class Hello { public static void main(String[] args) { //整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x int i = 10; int i2 = 010;//八进制0 int i3 = 0xB;//十六进制0x System.out.println(i); System.out.println(i2); System.out.println(i3); //总结:想要输入八进制的数字 就在数字前添加0 } } //结果:10 8 11 //解析:八进制10就是一个两位数 是逢8近1的结果
浮点数
//浮点数 不能算钱 银行业务 可以用BigDecimal 数学工具类 //float double 是有限的 离散的 会舍入误差 不是精确的数 接近但不等于 float f = 0.1f;//0.1 double d = 1.0 / 10;//0.1 System.out.println(f == d);//false //f==d 是一个比较 如果两个相等就true 否则false float d1 = 2323232323232323232f; float d2 = d1 + 1; System.out.println(d1 == d2);//true //结果: false true "This is a question"
字符
//字符拓展 System.out.println("---------------------"); char c1 = 'A'; char c2 = '中'; System.out.println(c1+" "+(int)c1);//字符型强制转化为整型 System.out.println(c2+" "+(int)c2); //所有的字符本质还是数字 不同的编码会有不同的结果 UTF-8 Unicode 一个字符占两个字节 //U0000 UFFFF char c3 ='\u0061'; System.out.println(c3); //结果: A 65 中 20013 a
转义字符
符号 | 字符含义 |
---|---|
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\0 | 空字符 (0x0) |
\s | 空格 (0x20) |
\t | 制表符 |
" | 双引号 |
' | 单引号 |
\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |
System.out.println("\"This is a question\"");//把双引号打出来 //结果: "This is a question"
字符串
String sa =new String("hello world"); String sb =new String("hello world"); System.out.println(sa==sb); String sc="hello world"; String sd="hello world"; System.out.println(sc==sd); //结果: false true
涉及到对象 和 内存
布尔类型
boolean flag = true; if (flag==true){}//新手 if (flag){}//老手 //Less is More! 代码要精简易懂 两者都是一样的
低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double
低转高要强制 高转低是默认
数据类型转换必须满足如下规则:
不能对boolean类型进行类型转换。
不能把对象类型转换成不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
转换过程中可能导致溢出或损失精度,例如:
int i =128; byte b = (byte)i;//结果位-128 是错误的 float f1 = 12.2f; int fi = (int)f1; System.out.println(fi);//结果位12
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
//操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 int money = 10_0000_0000;//这里的下划线不被执行 只是方便看 System.out.println(money); int years = 20; int total = money * years; System.out.println(total);//结果:-1474836480 错误 出现溢出 long total2 = money * years; System.out.println(total2); //结果:-1474836480 还是错误 先算等号右边(乘法) 再算左边(默认int转long) // 在右边是int类型 转换之前 已经溢出了 long total3 = money*((long)years); System.out.println(total3);//结果:20000000000 正确 //等号最右边是years 先把years从int转为long // 然后long类型的years和int类型的money计算 默认是long类型
定义:可以变化的量
Java变量是程序中最基本的储存单元,其要素包括变量,变量类型和作用域
int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 //并不建议这样做 根据代码可读性 分开写更好 int a=3; int b=2; int c=9;
Java语言支持的变量类型有:
类变量:独立于方法之外的变量,用 static 修饰。
实例变量:独立于方法之外的变量,不过没有 static 修饰。
局部变量:类的方法中的变量。
public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部变量 } }
public class Demo4 {//class 类 里面除了可以定义方法 例如main方法 还可以定义属性 属性就是变量 //类变量 static static double salary = 2500; //属性:变量 //实例变量 方法外面 类的里面 从属于对象;如果不自行初始化,其值是这个类型的默认值 //整型默认0 浮动型默认0.0 布尔型默认false 其他都是null String name; int age; //main方法 public static void main(String[] args) { //局部变量 在方法里 只作用在方法里 必须声明和初始化值 int i = 10;//如果i 未初始化值未10 就会报错 System.out.println(i);//结果:10 //变量类型 变量名字 = new Demo4 Demo4 Demo4=new Demo4(); System.out.println(Demo4.age);//结果:0 age没有初始化 所以输出的是int类型的默认值0 //类变量 类里面 方法外 前面是static System.out.println(salary);//结果:2500 } //其他方法 public void add(){ } }
变量的命名规范
所有变量,方法,类名:见名知意
类成员变量:x首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写 lastName
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线 MAX_VALUE
类名:首字母大写和驼峰原则 Man,GoodMan
方法名:首字母小写和驼峰原则 run(),eatFood()
Constant 定义:初始化(initialize)后不能再改变的值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,再程序中不允许改变。
final 变量名 = 值; final double PI = 3.14;
常量名一般使用大写字符。
//修饰符,不存在先后顺序 final static double PI = 3.14; public static void main(String[] args) { System.out.println(PI); }