Java学习日记-2
day02
1,打开DOS命令窗口,执行java HelloWorld,执行原理?
*java.exe命令会启动JVM
*JVM启动之后会启动类加载器ClassLoader
*ClassLoader会在硬盘的某个位置搜索HelloWorld.class字节码文件
*找到该文件就执行,找不到就报错
疑问:ClassLoader是在哪个位置上搜索HelloWorld.class字节码文件的?
*默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件。
*当然,可以配置环境变量,指定操作系统去加载字节码文件
*classpat环境变量属于java语言中的环境变量,不属于Windows操作系统。
*classpath是给ClassLoader类加载器指路的
*设置环境变量:classpath=....
-打开DOS命令窗口任意位置,都可以执行:java HelloWorld
*classpath环境变量没有配置的话,类加载器只去指定的路径中加载文件。当classpath设置以后类加载器则只去设置的路径加载文件
*综上所述,环境变量classpath没有配置,<这样类加载器会自动从当前路径下加载class字节码文件,所以每次执行.class文件时要先在DOS命令窗口切换到.class字节码文件所在的路径下。然后运行。
*classpath=. [就是当前路径]
注意:..上级目录;.当前目录。
2,关于java语言中的注释:
*什么是注释?作用是什么?
-出现在java源程序中,对java源代码的解释与说明。
-注释不会被编译到.class字节码文件当中
-一个好的开发习惯应该是多编写注释.这样的程序的可读性增强。
*注释有:
-单行注释
//
-多行注释
/*
*/
-javadoc注释
/**
* xx
* xx
*/
注意:Javadoc注释是专业注释,这种注释信息会被javadoc.exe工具解析提取并生成帮助文档
3,
4,public class和class的区别:
-一个java源文件当中可以定义多个class。
-一个java源文件当中不一定有public class。
-一个class会对应一个.class字节码文件
-一个源文件定义公开的类只能有一个而且其名称必须与文件名称相同
-每一个class当中都可以编写main方法,都可以设定程序的入口,想要执行b.class中的main方法:java b;想执行x.class中的main方法:java x
-注意:当在命令窗口中执行java Hello,那么要求Hello.class中必须要有主方法
5,总结第一章的内容:
*理解java的加载与执行
*能够自己搭建java的开发环境
*能够自己编写HelloWorld程序,编译并运行
*掌握环境变量path,classpath的原理,以及如何去配置
*java中的注释
*public class与class的区别
第一章结束
第二章开始
1,标识符
/*
关于java语言当中的标识符
1.设么是标识符?
-凡是在java源程序中有权利自己命名的单词是标识符
-标识符在editplus中为黑色;在sublime中为橙色。
-标识符可以标识的元素
*类名
*方法名
*变量名
*接口名
*常量名
2.标识符的命名规则?【不按照这个规则来,编译器会报错,这是语法】
*一个合法的标识符只能由数字,字母,下划线,美元符号组成,不能含有其他符号
*不能以数字开头
*严格区分大小写
*关键字不能做标识符【public,class】
*理论上无长度限制,最好不要太长
3.标识符的命名规范?【规范只是一种规范不是语法,不遵守规范编译器不会报错,】
*最好见名知意
public class UserService{
public viod login(String username,String password){
}
}
*遵守驼峰命名方式
SystemService
UserServiece
CustomerService
*类名,接口名:首字母大写,后面每个单词首字母大写
*变量名,方法名:首字母小写,后面每个单词首字母大写
*常量名:全部大写
*/
public class Identifiertest01//IdentifierTest01是一个类名
{ //main是一个方法名
public static void main(String[] args){//args是一个变量名
}
//dosome就是方法名
public static void dosome(){
int i=10;//i就是变量名
}
}
2,关键字
/*
关于java语言中的关键字:
*什么是关键字?
-SUN在开发java语言的时候,提前指定好的一些具有特定含义的字符序列。
-在语言当中具有特殊含义的单词,这些单词构成了java程序的骨架,这些单词是需要死记硬背的补鞥随意编写【包括大小写】
*关键字在java中全部小写
*常见的关键字:
public
class
static
void
if
for
which
do
default
byte
short
int
long
float
double
boolean
char
private
protected
switch
true
false
throw
throws
try
catch
.....
*提醒:关键字不需要单独拿出来记忆,编写程序的过程中记忆
*/
public class KeyWordsTest01
{
public static void main(String[] args){
}
}
3,字面值
/*
*关于字面值:
-10
-3.14
-"abc"
-"a"
-true,false[editplus显示为棕色;sublime显示为紫色]
*字面值就是数据。
*字面值是java源程序的组成部分之一。包括标识符和关键字他们都是java源程序的促成部分
*数据在现实世界当中是分门别类的,所以数据在计算机编程语言当中也是有类型的:
-10,100 是整数型
-3014 属于浮点型
-true,false 布尔型
-"abc","中国人" 属于字符串型
-'a','你' 属于字符型
*注意:
所有字符串型字面值必须使用双引号括起来
所有字符型字面值必须使用单引号括起来
*/
public class constTest01
{
public static void main(String[] args){
1+1=2
System.out.println(“abc”);
System.out.println(“你最近过得怎么样”);
System.out.println(10);
System.out.println(100);
System.out.println(false);
System.out.println(‘A’);
System.out.println(3.14);
//System.out.println('abc')//编译报错,因为单引号只能放字符
System.out.println(3.14);
System.out.println(3.14);
System.out.println(3.14);
System.out.println(3.14);
//3.14是一个字面值,是一个整数型的数值,那么既然是数据,就储存在内存当中,必然会占用一定的内存空间
}
}
4,变量
一,
/*
关于java语言中的变量:
1,什么是变量?
*变量本质上来说是内存中的一块空间,这块空间中有数据类型,名称,有字面值。
*变量是内存中储存数据的最基本的单元。
2,数据类型:
*不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间。
*数据类型是指导程序运行阶段应该分配多大的内存空间。
3,变量要求:变量中储存的具体数据必须和变量的数据类型一致,否则会报错
4,声明/定义变量的语法格式:
*数据类型 变量名;
-数据类型:
int
-变量:
只要是合法的标识符就行。首字母小写,后面每个单词首字母大写
-例如:
int i;
int age;
int length;
int size;
int num;
其中int是数据类型【整数】
-变量名声明之后怎么赋值?
语法格式:
变量名=字面值;
*字面值的数据类型必须和变量的数据类型一致
*=是一个运算符,叫做赋值运算符,赋值运算符先运算等号右边的表达式,表达式执行结束以后结果赋值给左边的变量。
-声明和赋值可以一起完成。
int i=10;
-变量赋值以后,可以重新赋值,变量值可以变化:
int i=10
i=20;
i=100;
System.out.println(i);//i=100
int i=10;
System.out.println(i);//10
i=20;
System.out.println(i);//20
i=100;
System.out.println(i);//100
-有了变量的概念以后,内存空间的到了重复的使用
int i;
System.out.println(i);
....
.....
System.out.println(i)//可以重复访问
-访问方式:
*读取变量中保存的具体数据//get
*修改变量中保存的具体数据//set
i=20;//set
System.out.println(i);//get
-变量在一行上可以声明多个
int a,b,c;
-java中的变量必须先声明,再赋值,才能访问。
int 1;程序执行到这里,内存空间还没有开辟出来,变量i并没有初始化。所以没有赋值之前是无法访问的。
*/
public class VarTest
{
public static void main(String[] args){
//声明一个int变量,起名i
int i;
Syetem.out.println(i);
//一行上可以声明多个变量
//int a,b,c = 300;
//ab尚未初始化,c赋值300;编译错误。
}
}
二,
/*
关于java语言中的变量,。使用所有的基础语法开发系统业务。
1,在方法体中的java源代码,是遵守自上而下的顺序依次执行的。逐次执行。
必须要第二行代码执行完成以后,第三行代码才能开始执行。
2,在同一个作用域当中,变量名不能重名,但是可以重新复制。
3,
*/
public class VarTest02
{
public static void main(String[] args){
int i=100;
System.out.println(i);
i=200;
System.out.println(i);
/*
System.out.println(k);
反了,先声明然后复制再访问
k=1
*/
}
}
三,
/*
关于java中的变量
变量的作用域
1,什么是作用域?
作用域是表述变量的作用范围
在什么范围之内可以访问
2,一句话:出了大括号就不认识。
*/
public class VarTest03
{
static int k=90;//类体中的变量声明在方法体中可以访问
//这个k可以再方法体中访问。
public static void main(String[] args){
int i=1;//变量i的作用域是main方法
//在整个方法中是有效的,可见,出了这个方法无效
//下面编写一个for循环
for(int a=0;a<10;a++){//变量的作用域是整个for循环,离开for循环无法访问,for循环结束以后a变量的内存就是释放了
//这里无法访问i
}
int j ;
for(j=0;j<10;j++){
//这里的j可以在外部访问
}
}
public static void doSome(){
//System.out.println(i);//这里已经出了变量i的作用域
//无法访问
}
}
四,
/*
关于变量的分类:
根据变量声明的位置分类:
*局部变量:
-在方法体内声明的变量
*成员变量
-方法体外,类体之内声明的变量。
*/
public class VarTest04
{
int k=200;//成员变量
//主方法,入口
public static void main(String[] args){
int i=3;//局部变量
System.out.println(i);//就近原则
int j=90;//局部变量
System.out.println(j);
}
int i=100; //成员变量
//System.out.println(i);//错误类体中不能直接编写java语句,除了声明变量之外
//类体里没有上下顺序
public static void doSome(){
int i=90;//局部变量
System.out.println(i);
}
}
//同一个作用域,不能同名
//后面两个i作用域不同于第一个,所以可以同名
5,数据类型
/*
关于java中的数据类型
1,数据类型作用是什么?
程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
数据类型的作用是指导JVM在运行程序时给该数据类型的数据分配多大的空间。
2,java中的数据分为两种:
*基本数据类型
*引用数据类型
3,基本数据类型:
*基本数据类型包括四大类八小种:
第一类:整数型(byte,short,int,long)
第二类:浮点型(float,double)
第三类:布尔型(boolean)
第四类:字符型(char)//都是关键字
4,字符串"abc"不属于基本数据类型,属于引用数据类型。字符属于基本数据类型
*字符串使用双引号"abc"
*字符使用单引号'a'
5,八种基本数据类型各自占用空间大小是:
基本数据类型 占用空间大小[单位:字节]
------------------------------------------
byte 1
short 2
int 4
long 8
float 4
double 8
boolean 1
char 2
6,计算机在任何情况下都只能识别二进制。例如:只认识0110001110
[现代计算机底层采用交流电的方式,接通和断开就两种状态,计算机只识别0或1,其他不认识]
7,什么是二进制
*数据的一种表现形式。满二进一
例如:0 1 10 11 100 101 110 111 1000 1001
0 1 2 3 4 5 6 7 8 9
8,字节[byte]
1 byte = 8 bit [一个字节=八个比特位]
一个比特位代表一个二进制位 0/1
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 TB = 1024*1024*1024*1024*8 bit
9,整数类型当中byte类型,占用一个字节,所以byte类型的数据占用8个比特位。那么byte类型的取值范围。
*关于java中的数字类型,数字有正负之分,所以在数字的二进制位当中有一个二进制位被称为符号位
并且这个符号位在所有二进制的最左边,0表示正数,1表示负数。
*byte类型最大值:01111111
10, 二进制与十进制之间的转换规则?
11,计算机只认识二进制,那么计算机是怎么表示现实世界当中的文字呢?
*八种基本数据类型当中byte,shout,int ,long,float,double,boolean这七种数据类型计算机在表示的时候比较容易,因为底层都是数字
*但是字符并不好表示
为了让计算机可以表示现实世界中的文字我们需要人为进行干涉,需要人负责提前制定好文字和二进制之间的对照关系。这种关系被称为字符编码
*最先出现的字符编码是ASCII编码
'a'-->97 [01100001]
'A'-->65
'0'-->48
'a'--(按照ASCII解码)-->01100001
01100001--(按照ASCII编码)-->'a'
编码和解码的时候必须要采用同一套编码
不采用同一套编码,出现乱码
*
*/