数据类型和操作符
public class Course{ //类
int field; // 属性
static int staticField; //静态属性
public static void method(int param1,int param2){ //不叫函数叫方法
int variable1;
int variable2;
}
}
四种变量:
1.属性 field
实例变量 instance variable
2.静态属性 static field
类变量 class variable
3.局部变量 local variable
4.参数 parameter
前两个在类里,后两个在方法里
如如何定义一个变量:
数据类型 变量名(identifier)
1.直接加分号,定义了变量,并且没有初始化
2.=value 定义了变量,并且进行了初始化
命名变量名(包括类名、方法名)一些规则(不遵守编译就会报错):
1.必须以 字母(包括中文) 或者 下划线_ 或者美元符 $ 开头
2.变量名长度可以无限长
3.变量名不可以和java关键字冲突
用于定义访问权限修饰符的关键字private protected public
用于定义类、函数、变量修饰符的关键字abstract final static synchronized
用于定义类与类之间关系的关键字extends implements
用于定义建立实例和引用实例,判断实例的关键字new this super instanceof
用于异常处理的关键字try catch finally throw throws
用于包的关键字package import
其他修饰符关键字native strictfp transient volatile assert
java中有两个未使用的保留字:goto、const
java中有三个特殊含义的单词:null、true、false
JDK1.4后追加了assert关键字;JDK1.5后追加了enum关键字
5.是大小写敏感的。 int java;int Java不同
命名规范:
1.永远不要用美元符和下划线命名(下划线有个特例)
2.使用有意义的名字作为变量名,缩写的歧义
3.不要用中文和拼音
4.类名称 每个单词的首字母都大写的形式
方法名称 单个单词,除第一个单词外,首字母大写
变量名称
常量(不可以修改) 每个字母都大写,用下划线分割 final int COUNT_OF_COURSE = 100;
5.类名称 和 变量名称 大概是个名词
方法名称 大概是个动词
对象:1、状态(属性) 2、行为(方法)
数据类型
-
基本数据类型(primitive data type)
1)数值类型
整型 byte short int long
浮点型 float double
2)布尔类型 boolean
3)字符类型 char
数据类型 | 存储空间大小 | 取值范围 | 默认值 |
boolean | 1位 | true/false |
|
char | 2个字节 | 0x000-0xFFFF | '\u0000' |
byte | 1个字节 | 没有无符号一说,这四种-128到+127 |
|
short | 2个字节 | 有符号 -2^15到2^15-1 |
|
int | 4个字节 | 有符号,确定是四个字节,不随系统变化 |
|
long | 8个字节 | 有符号 |
|
float | 4个字节 | IEEE 754 标准 |
|
double | 8个字节 | IEEE 754 标准 |
|
char 类型里保存的不是一个ASCII编码,而是Unicode编码(编码标准)
ASCII(7位,一个字节即可达到)Unicode(31位,四个字节,用两个字就够存常用字,不常用也可以两个字节麻烦的表示)
中国 0x4e2d 0x56fd
UTF-8(变长编码,支持全世界的字) GB2312/GBK/GB18030
乱码多是编码出错,遇到了就用UTF-8
整型的字面量
100;(int)
100L 100l (long)
进制
十进制 100 100L
十六进制 0xFF 0xFFL
二进制 0b1010 0b101L binary
100(int型的字面量) byte a=100; byte b=233(超过了该类型的范围,不像C语言中发生截断,而是直接报错);
byte 和short可以互相存(大小合适),然而其他类型大转小都会报错
浮点型字面
1.0(double)
1.0F 1.0f(float)
double a = 1E3(-3)1e3(3);科学表示法,大数可加下划线2——2=22
double a=1.0F; //没问题
float b=1.0; //有问题,不允许
里式转换类型:即需要一个大范围的类型,一个小范围类型才可以放进去
强制类型转换(type cast)
long a = 100L;
int b=(int)a;
boolean 字面量 ture/false
char(字符) string(字符串)
char c=‘中’;用单引号
char c=‘\u4e2d’;用unicode转义序列(Unicode escape sequence)
String s ="中国";//用双引号
char的转义字符
\n \t \b \\ \' \"...
String的加法运算
String a = “我爱”; String b = “中国”; a+b结果 我爱中国
public static void add(int a,int b){
System.out.println("a+b的结果是" +a+b);
"a+b的结果是1"+b
“a+b的结果是11”
System.out.println("a+b的结果是" +(a+b));
}
包装类(每个类型有对应的包装类)
public static void learnRange(){
System.out.println("byte型的范围");
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
}
2.引用数据类型(reference data type)
运算符
赋值运算符 =
a 初始化 b 修改值(final加上初始化后则不可修改)
算数运算符 +- * / %
/向下取整除法 5/3=1
%取余数
一元运算符 ++ -- + +10 -10 !逻辑取反
int a = 100; a++;的值100 ;a的值编程101
++a;的值101;a的值变成101
!逻辑取反只能用于boolean类型
int a =10; !a;//C语言合法,java不合法
比较运算符
条件运算符 条件(只允许boolean类型)?结果一:结果2
凡是用到逻辑运算的地方,必须用boolean类型
短路特性 && ||
位运算符 ~ % | ^(异或)
位移运算符
<< >> >>>(不带符号右移)
0b11000<<2==0b11000_00
0b11000<<2==0b110
instanceof 类型判断运算符
对象 instanceof 类 ==true | false