java学习第一天
java学习第一天
前言:初来乍到,我是一个刚刚接触java不久的初学者,能在博客中记录我学习到的点点滴滴,我想这对我的成长将会起到非常重要的作用,如果文中出现错误,请一定提醒我。好的,那我们开始吧!
基础知识
1. 字节
字节是我们常见的计算机中最小存储单元,计算机存储任何数据,都是以字节存储的
8个bit(比特、二进制位)表示一个字节,写成1byte或1B
8 bit = 1B
2. Java跨平台原理
编译之后会生成与平台无关的字节码文件
依赖不同平台的虚拟机(JVM)
JVM不跨平台
3. 配置环境变量
PATH变量用于指定Java开发工具的位置
“javac不是内部或者外部命令”,原因是path配置错误
从java5开始CLASSPATH默认就是当前路径,一般情况下不需要指定
4. Java基本语法
一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类。若源文件中包括了public类,源文件必须和该public类同名。
一个源文件中包含N个Java类时,成功编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件,且字节码文件名和其对应的类名相同。
若一个类必须运行,则必须拥有main方法,因为main方法是程序的入口.
5. 编程建议
一个Java源文件只定义一个类,不同的类使用不同的源文件定义;
将每个源文件中单独定义的类都定义成public的;
保持Java源文件的主文件名与源文件中的类名一致;
常量和字面量
1. 常量分类:
字面量常量:常见的
定义的final变量
public class ConstDemo{
public static void main(String[] args){
System.out.println("111");//必须使用双引号
System.out.println(111);//报错
}
}
2. 引入变量
public class StepInVarDemo{
public static void main(String[] args){
int x = 11;
int y = 12;
System.out.println(x + y);
x = 10;//可以被重复使用
y = 1;
System.out.println(x + y);
}
}
3. 变量操作
定义
赋值(初始化)
在声明变量的时候,,并做初始化
4. 变量的分类:
变量根据定义的位置不同,分为两大类
成员变量(字段)
局部变量
public class VarDemo{
int age = 17;//成员作用域、字段,直接定义在类中{}中的变量(方法外)
public static void main(String[] args){
int age = 18;//局部作用域,定义在方法中的变量
}
}
public class VarDemo{
static int age = 17;//现在定义的成员变量都是用static修饰
public static void main(String[] args){
System.out.println(age);
}
}
5. 变量的作用域
public class VarDemo2{
public static void main(String[] args){
System.out.println(a);
int a = 11;//错误:找不到符号
}
}
6. 变量的使用规则
变量必须先声明,并且初始化后才能使用
同一作用域内变量名不能重复定义
数据类型
-
javac的优化
byte,short,char直接赋值时,只要不超过范围,javac有一个隐式强转byte,short,char,如果两个常量相加,不超过范围即可
如果运算时有变量参与,那么首先要提升int,再手动强转
1. 数据类型
boolean类型:
该类型只能是true或false,表示真或假
不可以使用0或非0的整数来代替false和true
任何数相互比较都为true
long类型:
java语言的整型常量默认是int,声明long类型变量后面建议使用大写的L
float类型:
一个浮点数的字面量默认是double类型,声明float类型在常量后必须加上f或F
public class DecimalDemo{
public static void main(String[] args){
float a = 3.1F;//必须加上
System.out.println(a);
}
}
java里只有浮点数的变量才可以接受科学计数法
float和double都不能精确的表示小数,BigDecimal类型可以表示任意精度的数据
char类型
占两个字节,可以表示一个汉字
两种表示形式:
public class CharDemo{
public static void main(String[] args){
char a = 'A';//直接使用单个字符
char A = 65;//ASCll
a = 97;
System.out.println(a);
}
}
引用类型默认初始值都是null
String
是一个类,表示字符串,N个字符连接在一起,必须使用双引号
字符串拼接:字符串和任意数据类型相连接,结果都是字符串类型
2. 基本数据类型转换
在8大基本数据类型中,boolean不参与转换,不是数值类型
自动类型转换,隐式类型转换(把小的转换为大的)
public class TypeConvertDemo
{
public static void main(String[] args){
byte b1 = 5;//我们一般的直接把byte,short,char直接赋给int类型
int i1 = b1;
double d1 = i1;
System.out.println(d1);
}
}
强制类型转换,显式类型转换(把大的转小)
public class TypeConvertDemo2
{
public static void main(String[] args){
float f1 = (float)3.14;
System.out.println(f1);
byte s1 = 125;//整数常量,编译器发现是在该范围内,底层偷偷转换了
System.out.println(s1);
}
}
表达式类型中的自动提升
所有的byte、short、char类型自动提升为int类型
整个表达式的最终结果类型被提升到表达式中类型最高的类型
public class TypeConvertDemo3
{
public static void main(String[] args){
char a = 'A' + 1;
System.out.println(a);
System.out.println('A' + 1);
byte b1 = 25;
b1 = b1 + 3;//int b2 = b1 + 3 b1 += 3 自带隐式类型转换
System.out.println(b1);//错误: 不兼容的类型: 从int转换到byte可能会有损失
}
}
3. 算术运算符
public class ArithmeticOperatorsDemo
{
public static void main(String[] args){
char a = 'A' + 'B';
System.out.println(a);
System.out.println('A' + 'B');
System.out.println("aaaaa" + "bbbbb");
System.out.println(9876 / 1000 * 1000);//整数在使用除号操作时,得到的结果仍为整数(小数部分忽略)
System.out.println(100 / 0);// / by zero 异常会导致程序中断
System.out.println(100.0 / 0);//Infinity
System.out.println(0.0 / 0.0);//NaN
}
}
无穷大和NaN都属于double类型,但是所有正无穷大都是相等的,所有负无穷大也是相等的
4. ++&&--的问题
public class ArithmeticOperatorsDemo2
{
public static void main(String[] args){
int a1 = 5;
int b1 = ++a1;//表示a变量自身先加1,再运算
System.out.println(a1 + "," + b1);
int a2 = 5;
int b2 = a2++;//表示a变量自身先加1,把递增1之前的原始值拿去做运算
System.out.println(a2 + "," + b2);
}
}
不管是a++还是++a,其结果a都加1,影响的是赋值的另一边
练习:
public class ArithmeticOperatorsDemo3
{
public static void main(String[] args){
int i = 5;
i++;
System.out.println(i);
++i;
System.out.println(i);
System.out.println("----------------------");
int a = ++i;
System.out.println(a);
System.out.println(i);
int b = i++;
System.out.println(b);
System.out.println(i);
}
}

浙公网安备 33010602011771号