Java变量和类型

 

//行注释

/*

块注释

 

*/

 

1、public -> 公共的

2、class -> 定义类,结构体的高配版本

      后边 -> 类名。    文件名

       在一个.java文件里面,只能有一个public修饰的类,类名一定要和文件名一样

3、class{类体(属性 方法)}

4、main函数 -> 方法

5、public static

面试问题:为什么main方法被static修饰?

6、static:静态的。

7、String[] args;   //定义数组---->字符串数组(string为字符串类型)

     C:int arr[10];      Java:int[]  arr=……

8、main函数参数意义

9、System.out.println("Hello bit!");

      "Hello bit!"    :字符串

       System.out.println   ----->printf();

       println():输出并且换行

       print():输出但不换行

 

Windows   GBK进行编码

Linux         UTF8进行编码

10、程序中加入中文在cmd中输入javac -encoding UTF-8 文件名.java  进行编码

命令行后面输入的为命令行参数

 

11、数组名.length  ------>数组的长度

 

12、一个类生成一个.class文件


变量

 

1、 int   整形变量

         4个字节

         体现了跨平台的特性,有符号的 ,没有无符号的说法;

            Integer是int的包装类。

         (int:简单类型->内置类型)

public class JAVA1226{
	public static void main(String[] args){
		int a = 10;
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE);
	}
}

2、long类型 长整型变量

8个字节

public class JAVA1226{
	public static void main(String[] args){
                long a = 10L;
		System.out.println(a); 	
		System.out.println(Long.MAX_VALUE); 	
		System.out.println(Long.MIN_VALUE); 	
        }
}

3、double类型 双精度浮点型

8个字节

同理:

 注意:      在底层,double组织数据的方式和整形不一样

public class JAVA1226{
	public static void main(String[] args){

		double a = 1.1;
		double b = 1.1;
		System.out.println(a*b);
		
	}
}
		

 

4、float类型 单精度类型

4个字节

同样遵守 IEEE 754 标准 . 由于表示的数据精度范围较小 , 一般在工程上用到浮点数都
优先考虑 double, 不太推荐使用 float
 

5、char字符类型

char  两个字节 ,16位字符  取值范围为 0~65535, 不表示负数只能表示字符

注意:

1)Java 中使用 单引号 + 单个字母 的形式表示字符字面值 .
2) 计算机中的字符本质上是一个整数 . C 语言中使用 ASCII 表示字符 , Java 中使用 Unicode 表示字符 . 因此一
个字符占用两个字节 , 表示的字符种类更多 , 包括中文 .
public class test{
	public static void main(String[] args){
		
		char ch1 = 'A';
		char ch2 = '张';

		System.out.println(ch1);
		System.out.println(ch2);	
	}
}

 

(Unicode码表,图片来源:百度百科)

6、byte类型 字节类型

byte对应C语言的char类型,取值范围为-128~127

public class test{
	public static void main(String[] args){
		byte b = 130;
		System.out.println(b);	
	}
}

注意:与C语言不同,赋值超过取值范围,Java会报错,此规则适用于上述所有类型

 

7、short类型 短整型

两个字节,16位字符,取值范围

-2^15~(2^15)-1

-32768~ +32767

8、boolean类型 布尔类型

boolean value = ture;
System.out.println(value);

注意:

1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示ture,0表示false这样的说法。

3.boolean类型有些JVM的实现是占1个字节,有些事占1个比特位,没有明确规定。

错误示例:

boolean value = true;
System.out.println(value + 1);

 出现报错
 
9、字符串类型变量(重点)
基本语法:
String 变量名 = "初始值";
String name = "zhangsan";
String name2 = "zhaosi";
System.out.print(name);
System.out.println(name2);

 

注意:

1、Java使用双引号+若干字符的方式表示字符串字面值。

2、和上面类型不同,String不是基本类型,而是引用类型

3、字符串中的一些特定的不太方便直接表示的字符需要进行转义。

转义字符示例:

//创建一个字符串 My name is "张大宝"
String name = "My name is \"张大宝\";
常见的转义字符
\n    换行
\t     水平制表符
\'     单引号
\"     双引号
\\     反斜杠
 
字符串的+操作,表示字符串的拼接:
 
public class test{
	
	public static void main(String[] args){
		
	String a = "hello";
	String b = "world";
	String c = a + b;
	System.out.println(c);
    }
)
执行结果:
 
 
同时可以用字符串和整数进行拼接:
public static void main(String[] args){
	String str = "result = ";
	int a = 10;
	int b = 20;
	String result = str + a +b;
	System.out.println(result);

执行结果:

同时我们可以用System.out.println打印多个字符串:

        int a = 10;
	int b = 20;
	System.out.println("a=" + a + ",b=" + b);

执行结果:

10、变量的作用域

即该变量能生效的范围,一般是变量定义所在的代码块(一个{}内)

class Test { 
 public static void main(String[] args) { 
     { 
         int x = 10; 
         System.out.println(x); // 编译通过; 
     } 
     System.out.println(x); // 编译失败, 找不到变量 x. 
   } 
}

11、变量的命名规则

硬性规则:

1、一个变量名只能包含数字、字母和下划线。

2、数字不能开头。

3、变量名大小写是敏感的,即不可以互相替代,例如:num和Num是两个不同的变量。

软性规则:

1、变量名要具有描述性,能了解变量的含义。

2、变量名不宜使用拼音(并不绝对)。

3、变量名推荐使用名词。

4、变量名明明是推荐使用小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其它单词首字母应当大学。

小驼峰命名示例:

int maxValue = 100;
String studentName = "张三";

12、常量

常量指的是类型不能发生改变

常量主要有以下两种体现形式:

1.字面值常量

10int 字面值常量(十进制)
010int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8
0x10int 字面值常量(十六进制) 由数字 0x 开头. 0x10 也就是十进制的 16
10Llong 字面值常量. 也可以写作 10l (小写的L)
1.0double 字面值常量. 也可以写作 1.0d 或者 1.0D
1.5e2double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2
1.0ffloat 字面值常量, 也可以写作 1.0F
trueboolen 字面值常量, 同样的还有 false
'a' char 字面值常量, 单引号中只能有一个字符
"abc"
String 字面值常量 , 双引号中可以有多个字符 .
2.final关键子修饰的常量
final int a = 10; 
a = 20; // 编译出错. 提示 无法为最为最终变量a分配值

常量不能在程序运行中发生修改

 

12、理解类型转换

Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验。

例:

int 和long/double相互赋值

int a = 10; 
long b = 20; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; // 编译通过. 
int a = 10; 
double b = 1.0; 
a = b; // 编译出错, 提示可能会损失精度. 
b = a; //编译通过

long和double表示的范围更大,不能赋值给int

可以将int赋值给double和long,但是不能将double赋值给int

结论:不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型,反之则不行

因为会损失精度。

byte a = 100; // 编译通过
byte b = 256; // 编译报错, 提示 从int转换到byte可能会有损失

注意:byte表示的数据范围是-128 ~ +127,256超出范围所以不能赋值

结论:使用字面值常量赋值的时候,Java会自动进行校验,判定赋值是否合理

 

使用强制类型进行转换

格式:

范围小的类型 范围小的的变量名 = (范围小的类型) 原本范围大的数据

 

int a = 0; 
double b = 10.5; 
a = (int)b;

 

int a = 10;
boolean b =false;
b = (boolean)a;

 

编译结果

结论:使用(类型)的方式可以将double类型强制转换成int,但是

1、强制类型转换可能会导致精度丢失。

2、强制类型转换不是一定能成功,互不相干的类型无法转换。

 

13、理解数值提升

int 和 long混合运算

int a = 10;
long b = 20;
int c = a + b;
long d = a + b;

结论:当int和long混合运算的时候,int会提升成long,得到的结果仍是long类型,需要使用long类型的变量来接收结果,如果非要用int来接收结果,就需要使用强制类型转换。

 

byte和byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);

结论:相同类型出现编译报错,是因为a和b虽然都是byte类型,但是计算a+b时会将a+b都提升为int类型计算,得出的结果也就是int,这时赋值给c,所以会出现编译报错。

由于计算机CPU通常都是以4个字节为单位读写数据,为了硬件上实现方便,类似byte和short这种低于4个字节的类型都会提升为4个字节的int去计算。

正确的写法:

此时编译通过,结果为30

提升类型总结:

1、对于不同类型的混合运算,范围小的会提升为范围大的。

2、byte / short / char 这三种类型都可以发生数学运算,在运算的时候,都会被提升为 int 类型

3、boolean 类型不能发生强制类型转换

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值