//最好见名知意
public class UserService{
public void login(String username,String password){
}
}
//遵守驼峰命名方式
SystemService UserService CustomerService
类名、接口名:首字母大写,后面每个单词首字母大写
变量名、方法名:首字母大写,后面每个单词首字母大写
长量名:全部大写
4、合法和不合法的标识符
*/
public class IdentifierTest01
//IdentifierTest01是一个类名,名字可以修改
{
//main是一个方法名
public static void main(String[] agrs){
//args是一个变量名
}
//doSome就是方法名
public static void doSome(){
//i就是变量名
int i = 10;
}
}
字面值 关于字面值:
字面值:
10、100、3.14、"abc"、'a'、true、false
字面值就是数据
字面值是java源程序的组成部分之一,包括标识符和关键字他们都是java源程序的组成部分。
数据在现实世界当中是分门别类的,所以数据在计算机编程语言当中也是有类型的:【数据类型】
注意:
java语言当中所有的字符串字面值必须使用双引号括起来,双引号是半角
java语言当中所有的字符型字面值必须使用单引号括起来,单引号是半角
*/
public class ConstTest01
{
public static void main(String[] args){
System.out.println("abc");
System.out.println("你最近过得好吗?");
System.out.println(10);
System.out.println(false);
System.out.println(true);
System.out.println('A');
System.out.println(3.14);
// 编译报错,因为单引号中只能存放单个字符,属于字符型字面值
// System.out.println('ABC');
//Java开发交流君样:593142328
// 100是一个字面值,是一个整数型数值,那么既然是数据存储在内存当中,必定会占用一定的内存空间。
System.out.println(100);
}
}
public class VarTest02
{
public static void main(String[] args)
int i = 100;
System.out.println(i); //100
i = 200;
System.out.println(i); //200
// 以下代码顺序有错误,先声明然后复制再访问
/*
System.out.println(k);
int k = 100;
*/
/*
int i = 90;
System.out.println(i);
*/
}
public class VarTest03
{
//注意: 这里在static不要去掉
static int k = 90;
public static void main(String[] args)
// 变量i的作用域是main方法
// 在整个main方法当中是有效的,可见的,可以访问的
int i = 100;
System.out.println(i): // 可以
System.out.println(k): // 可以
// 以下会编写一个for循环语句
// 这个for循环后面的控制语句的时候详细讲解
for(int a=0;a<10;a++){ //a变量的作用域是整个for循环,for循环结束之后,a变量的内存就释放了
}
// 这里无法访问a变量
// System.out.println(a):
int j; // 作用域是main方法
for (int j=0;j<10;j++){
}
System.out.println(j): // 访问的是main方法中的j变量
}
public static void doSome(String[] args)
// 这里无法访问main方法当中的变量i
// 已经出了i变量的作用域。
// System.out.println(i):
// 可以
System.out.println(k):
}
}
四、关于变量的分类:
根据变量声明的位置分类;
局部变量
在方法体当中声明的变量叫做局部变量
成员变量
在方法体外【类体之内】声明的变量叫做成员变量
在不同的作用域当中,变量名是可以相同的。
在同一个作用域当中,变量名不能重名。
public class VarTest04
{
// 成员变量
int k = 200;
// 主方法:入口
public static void main(String[] args){
// i变量就是局部变量
int i = 10;
// java遵循“就近原则”
System.out.println(i);
}
// 成员变量
int i = 100; // 什么变量
// 类体中不能直接编写java语句【除声明变量之外】
// System.out.println(i):
// doSome方法
public static void doSome(){
// 局部变量
int i = 90;
}
}
public class DataTypeTest01
{
public static void main(String[] args){
// 定义一个char类型的变量,起名c,同时赋值字符'a'
char c = 'a';
System.out.print(c);
// 一个中文占用2个字节,char类型正好是2个字节
// 所以java中的char类型变量可以存储一个中文字符
char x = '国';
System.out.print(x);
// 编译错误
// ab是字符串不能使用单引号括起来
// char y = 'ab';
// "a"是字符串类型
// k变量是char类型
// 类型不兼容,编译错误
char k = "a";
// 声明
char e;
// 赋值
e = "e";
// 再次赋值
System.out.print(e);
}
}
二、关于八种数据类型的默认值
八种基本数据类型的默认值是一切向0看齐。
public class DataTypeTest02
{
// 这里的static必须加,别问。
static int k = 1000;
// 变量还是遵守这个语法:必须先声明,在赋值,才能访问。
// 成员变量没有手动赋值系统会默认赋值【局部变量不会】
static int f; //成员变量
public static void main(String[] args){
/*
int i; //局部变量
System.out.print(i);
*/
System.out.print(k);
System.out.print(f);
}
}
public class DataTypeTest07
{
public static void main(String[] args){
// 编译错误:不兼容的类型
// boolean flag = 1;
//boolean loginSuccess = true;
boolean loginSuccess = false;//vx小助手:xiehuangbao1123 领取资料面试真题
// if语句以后在解释【条件控制语句】
if(loginSuccess){
System.out.println("恭喜你,登录成功");
}else{
System.out.println("对不起,用户名不存在或者密码错误!");
}
}
}
八、关于基本数据类型之间的互相转换:转换规则
1.八种基本数据类型当中出布尔类型之外剩下的7种类型之间都可以互相转换【白嫖资料】
2.小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < long < float < double char <
注:任何浮点类型不管占用多少个字节,都比整数型容量大。char和short可表示的种类数量相同,但是char可以取更大的正整数
3.大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
4.当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量
5.byte,short,char混合运算的时候,各自先转换成int类型在做运算。
6.多种数据类型混合运算,先转换成容量最大的那种类型再做运算。 注意:
byte b = 3; 可以编译通过,3没有超出byte类型取值范围
int i = 10;
byte b = i / 3; 编译报错,编译器只检查语法,不会“运算” i / 3
public class DataTypeTest08
{
public static void main(String[] args){
// 出现错误,1000超出了byte的范围
// byte a = 1000;
// 正确,因为20没有超出byte范围
byte a = 20;
// 变量不能重名
// short a = 1000;
// 正确,因为数值1000没有超出short类型的范围
// 所以赋值正确
short b = 1000;
// 正确,因为默认就是int,并没有超出int范围
int c = 1000;
// 正确,可以自动转换
long d = c;
// 错误,出现精度丢失问题,大类型-->>小类型会出现问题
// int e = d;
// 将long强制转换成int类型
// 因为值1000,没有超出int范围,所以转换是正确的
int e = (int)d;
// 因为java中的运算会转成最大类型
// 而10和3默认为int,所以运算后的最大类型也是int
// 所以是正确的
int f = 10/3; // 3
// 声明10为long类型
long g = 10;
// 出现错误,多个数值在运算过程中,会转换成容量大的类型
// 以下示例最大的类型为double,而h为int,所以就会出现大类型(long)到小类型(int)的转换,将会出现精度丢失问题
// int h = g/3;
// 可以强制转换,因为运算结果没有超出int范围
// int h = (int)g/3;
// 可以采用long类型来接受运算结果
// long h = g/3;
// 出现精度损失问题,以下问题主要是优先级的问题
// 将g转换int,然后又将int类型的g转换成byte,最后byte类型的g和3运算,那么它的运算结果类型就是int,所以int赋值给byte就出现了精度损失问题
// byte h = (byte)(int)g/3;
//vx小助手:xiehuangbao1123 领取资料面试真题
// 正确
// byte h = (byte)(int)(g/3);
// 不能转换,还有因为优先级问题
// byte h = (byte)g/3;
// 可以转换,因为运算结果没有超出byte范围
// byte h = (byte)(g/3);
// 可以转换,因为运算结果没有超出short范围
short h = (short)(g/3);
short i = 10;
// 错误,short和byte运算,首先会转换成int再运算
// 所以运算结果为int,int赋值给short就会出现精度丢失问题
// short k = i + j;
// 可以将运算结果强制转换成short
// short k = (short)(i + j);
// 因为运算结果为int,所以可以采用int类型接手
int k = i + j;
char l = 'a';
System.out.println(l); // a
// 输出结果为97,也就是a的ascii值
System.out.println((byte)l); // 97
int m = l + 100;
// 输出结果为197,取得a的ascii码值,然后与100进行先加运算
System.out.println(m); // 197
}
}