Java语法基础

1.常用的dos命令提示符

ipconfig 查看自己的ip 地址cd 改变路径notepad 打开文件盘号: 进入盘符

cd.. 退到上一级目录

cd / 返回根目录

dir命令: 列出当前目录下的文件以及文件夹

cls命令: 清空屏幕

exit命令: 退出dos命令行

mspaint: 打开画图板

notepad: 打开记事本

calc: 打开

2.Java的相关名词

2.1JDK

Java Development Kit,Java开发环境。

包含了JRE、Java核心类库、开发工具包(编译器+调试工具)

2.2JRE

Java Runtime Environment,Java运行环境。

包含JVM和解释器,完整的Java运行环境

2.3JVM

Java Virtual Machine,Java虚拟机。

使用软件在不同操作系统中,模拟相同的环境(java实现跨平台的根本原因)

3.开发工具总结

J2EE---Java 2 Platform Enterprise Edition Java 2 企业版)
J2SE---Java 2 Platform , Standard Edition ( Java 2 标准版 - 我们要使用的版本)
J2ME---Java 2Platform Micro Edition( Java 2 袖珍版) JVM ---Java Virtual Machine Java 虚拟机) JDK---Java
Development Kit Java 开发工具包)
JSDK---Java Server Development Kit Java 服务器开
发工具包)
JDBC---Java DataBase Connectivity Java 数据库连接)

4.Java的特点

面向对象

Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有

很好的支持。为了简单起见,Java 只支持类之间的单继承,但是可以使用接口来实现多继

承。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

平台无关性

平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any

Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是

Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。

Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需

生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。

简单性

Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来

说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使

用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。解释执行

Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上

运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类

在连接阶段被载入到运行环境中。

多线程

Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创

建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的

run() 方法,要执行的方法就写在 run() 方法体内。

分布式

Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程

接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM

机制也是开发分布式应用的重要手段。

健壮性

Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃

是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。

高性能

Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java

的运行速度也越来越高。

安全性

Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了

Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分

配不同的名字空间以防替代本地的同名类,并包含安全管理机制。

3.1一个简单的说明

代码

//1.注释:对代码解释说明,不需要进行编译
//注释分成三种形式
//第一种:单行注释
/*
第二种:多行注释
*/

/**
第三种:文档注释
*/
//2.我们把java赋予了特殊含义的单词称为关键字
//3.class表示类,后面跟的是类名
//在java中是以类为工作单位,我们通过让类与类之间产生关系来实现功能。
//{}表示工作范围,在类后面表示类的工作范围。
//一个类对应一个.class文件,class文件名字默认与类名一直,在程序中一个类只会生成一个.class文件
// 一个.java文件中可以有多个类,但是主类只有一个,而且这个类名默认与.java文件一致
//8.如果类Hello前面没有写public修饰,类名与.java名字可以不一致,一旦类名前面加了public,就必须让类名与.java名字一致
//9.一个.java文件中只能有一个被public修饰的类。
//10.synchronized 同步
//11.Comparable  接口:进行比较  Comparator 接口,进行比较,比较器
//12. instanceof 用于多态
//13:extends 描述继承  imolements 描述类与接口的关系,实现的意思
// final 最终的   absteac.. 抽象的
class Hello{
    //4.这里是一个方法:有一些功能的一段代码
    //main方法是一个特殊的方法,是程序的入口
    //public:表示修饰类容的可见范围,public表示任意位置都可见,其他几种:private 私有的,protected 受保护的 default: 默认的
    
    //void 无返回值
    //main后面的()是参数
    public static void main(String[] args){
        //循环打印HelloWord
        int i=0;
        for(i=0;i<=7;i++){
        System.out.println("hello world");
        /*
        print():只打印不换行,()必须写内容
        println():打印的同时换行,()中可以不写,只表示换行
        printf():格式化输出
        Java中""表示字符串,‘’表示字符;
        */
        }
        System.out.print("helloworld");
        System.out.printf("姓名: %s 年龄: %d" ,"张三",5);
    }
}

3.2Java的执行流程

step1 Java 源程序 ( 文件 ): 是一个后缀名是 .java 的文件,里面写的是 java 代码
编写 java 的源代码 —— 给人看的
计算机只认识 0 1
step2 :将源代码进行编译:使用 javac 命令 , 得到后缀名是 .class 的文件
使用管理员身份打开终端 ( 在桌面左下角输入 cmd 或者命令提示符 )
命令: javac XXX.java
生成一个字节码文件:二进制文件 —— 给机器看的
step3 :解释执行字节码文件
继续执行下面的命令 , 得到 helloworld
命令: java XXX

附:因为JVM的存在,xxx.class文件能够在Java虚拟机内运行,与平台无关。这也是Java能够跨平台的原因

4.进制的运算

4.1进制的分类

在程序中,常用的进制可以分为以下几种:
二进制: 以数字 0-1 来表示每一个自然数,逢 2 1
八进制: 以数字 0-7 来表示每一个自然数,逢 8 1
十进制: 以数字 0-9 来表示每一个自然数,逢 10 1
十六进制: 以数字 0-9 a-f 来表示每一个自然数,逢 16 1
二进制 : 0, 1, 10, 11, 100, 101, 110, 111, 1000, ...
八进制 : 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, ...
十进制: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
十六进制 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, ...

4.2进制的表示

同一个自然数,用不同的进制表示的话,结果可能是不一样的。例如,数字 10 ,如果是二进
制,表示数字 2 ; 如果是八进制,表示数字 8 ;如果是十进制,表示数字 10 ;如果是十六进
制,表示数字 16 。 因此,不同的进制,需要有不同的标识,来区分不同的进制。
二进制:
0b 作为开头,表示一个二进制的数字,例如: 0b10 0b1001...
八进制:
0 作为开头,表示一个八进制的数字,例如: 010 027...
十进制: 没有以任何其他的内容作为开头,表示一个十进制的数字,例如: 123 29...
十六进制: 0x 作为开头,表示一个十六进制的数字,例如: 0x1001 0x8FC3...

4.3进制的转换

十进制转其他进制
辗转相除法: 用数字除进制,再用商除进制,一直到商为零结束,最后将每一步得到的余数
倒着连接以来,就是这个数字的指定的进制表示形式。
其他进制转十进制
每一位的数字乘进制的位数 -1 次方,再将所有的结果累加到一起。
二进制与八进制 , 十六进制的相互转换
每一个八进制位可以等价替换成三个二进制位。
注意 :
1. 划分从右到左进行 , 如果二进制数的左边不够三位 , 直接在高位补零凑齐三位
2. 当八进制数转成二进制数时 , 将上述过程反转 , 有一点要记住 , 每一个八进制的数必须对应三
位二进制位 , 如果八进制数在转化时得到的二进制数不够三位 , 直接在最左边用零补齐 .
每一个十六进制位可以等价替换成四个二进制位。
跟二进制与八进制的转化规则类似

5.原反补

1) 原码: 一个数字的二进制表示形式, 前面的计算二进制表示形式, 得到的就是原码。
2) 反码 : 正数的反码与原码相同; 负数的反码是原码符号位不变, 其他位按位取反。
3) 补码 : 正数的补码与原码相同; 负数的补码是反码 + 1

补码运算

在计算机中, 所有的数据存储和运算, 都是以 补码 的形式进行的。 因此, 在进行数据运算
的时候, 将数据计算出补码, 再进行运算。

6.Java语法基础

6.1标识符

程序的运行, 其实就是若干数据的运算。 每一个数据都需要有一个唯一标识来表示。 这个用
来表示内存中的某一个数据的表示形式, 就是一个标识符。
定义 :Java 对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
类似数学中的代数。
x = 10;
y = 20;
在进行 x + y 的时候, 我们知道其实计算的是 10 + 20 。 因此此时 x 就代表了数字 10 y
就代表了数字 20
这里的 x y 就是标识符
6.1.1标识符的命名规则
在标识符的命名中, 应该遵循以下命名的规则:
1. 由字母(含英、中、日、俄等)、数字、下划线( _ )和美元符号( $ 音: dollar )组
成。
2. 不能以数字作为开头。
3. 区分大小写。
4. 长度无限制。(一般不要超过 15 个字符)
5. 不能与系统关键字或者保留字重名。
6.1.2标识符的命名规范
在实际开发中, 遵循了标识符的命名规则的情况下, 有些标识符是可以随意命名的。 比如如
下的标识符 :
a1, a2, a3, a4, a5, a6, a7 但是, 这样的标识符, 在实际使用过程中, 可读性极差。 在使用的时候, 基本很难理解这 个标识符想要表示什么数据。 因此标识符的命名, 在遵循命名规则的同时, 还需要遵循一些
命名的规范。
标识符的命名规范, 首先需要遵循 望文知意 , 即一个标识符的命名, 应该一眼能够看出来
想表示什么含义。 例如 :
name : 表示姓名
age: 表示年龄
gender: 表示性别
但是, 在遵循了望文知意的基础上, 有些标识符的命名会比较长。 例如 :
ageofperson: 人的年龄
countofstudent: 学生的数量
这样的标识符, 可读性也不高, 因为无法很快的分隔开每一个单词。 所以, 在此基础上,
还需要在遵循驼峰命名法 : 第一个单词首字母小写,剩下的单词首字母大写 ( 小驼峰 )
ageOfPerson
6.1.3总结 :
1. 标识符命名习惯:见名知意。墙裂建议使用英文单词。 studentName teacherAgeTable
2. 驼峰式命名 :
大驼峰命名法: 每一个单词的首字母都大写。
适用类型 : 类名 , 接口名
小驼峰命名法: 首字母小写,如果多个单词组成,第一个单词首字母小写,剩下的单词
首字母大写
适用类型 : 变量名,方法名,参数名
举例 :
大驼峰命名法 : AgeOfPerson CountOfStudent
小驼峰命名法 : ageOfPerson countOfStudent
备注 :
后续的课程中, 如果没有特殊说明, 默认使用小驼峰命名法。

6.2关键字、保留字

关键字: Java 中有一些赋予特定的含义,有专门用途的字符序列称为关键字( keyword )。全
部为小写
比如 public class static void main  try catch 等
保留字:没有定义用途,但保留备用的字符序列。比如 :goto const

6.3常量,变量

6.3.1概念
在程序中, 使用标识符表示程序中的某个数据。
如果某个数据在程序运行的过程中, 值是可以改变的, 这样的数据被称为是 变量
如果某个数据在程序运行的过程中, 值是不可以改变的, 这样的数据被称为是 常量
6.3.2变量
其实是内存中的一小块区域,使用变量名来访问这块区域。因此,每一个变量使用前必须要
先申请 ( 声明 ) ,然后必须进行赋值 ( 填充内容 ) ,才能使用,变量中存储的数据就是常量。
6.3.3 注意事项
局部变量或者局部常量, 在使用的时候一定要有值。 如果某一个局部变量或者局部常量没有
值, 这个变量或者常量将无法使用。
局部变量 : 定义在某一个局部代码段中的变量, 例如定一个方法中的变量

数据类型

class Demo2{
	public static void main(String[] args){
		byte b = 3;
		short s= 4;
		int i=5;
		long l = 100l; //在数据的最后添加一个l表示long型
		//默认整型类型是int型
		System.out.println(34);
		
		//浮点型-小数
		//浮点型默认是double型,如果想表示float型,在数据后面加f
		float f = 5.5f;
		double d = 3.4;
		System.out.println("f:"+f+"    d:"+d);//+号的链接功能,任何与字符串进行加号链接都会被转化成字符串型
		
		
		//boolean型
		//boolean只有两个值ture/flase
		//我们认为只占一个字节
		//注意与C的区别,在c中0表示flase,非0表示ture,但是在Java只有ture/false
		boolean b1 = true;
		
		//字符型
		//'表示字符 ""表示字符串
		char c = 'a';
		//char c1 = 'aa'; 错误,''只能放一个字符
		System.out.println("c="+c);
		
		//常用的ASCLL a 97   A 65   0 48
		System.out.println("c的ASCLL:"+(int)c);
		System.out.println("97的字母是:"+(char)97);
		//我们通常认为char型的大小是两个字节,这是根据java的内部编码unicode决定的
		// 常用的中文编码格式
		// GBK 中文  一个汉字2个字节
		// UTF8 日本的(国标) 一个汉字三个字节
		// unicode 内部编码 一个汉字两个字节
		// ASCLL 不支持中文
		// ISO8859-1 欧洲标准 不支持中文
		// 编码 :将字符串转成二进制形式数据的过程
		// 解码:将二进制数据转成字符串的过程
		//乱码:编码与解码过程中使用字符集不一致,造成显示错误
		
		
		// 转译字符
		// \表示转义字符
		// 第一种:将普通含义的字母转成特殊含义
		// \n 换行 \t 制表  \r  \s  \d
		char cl = '\n' //表示换行
		// 第二种:将特殊含义的符号转成普通含义
		//我想打印 "hellworld"
		System.out.println("\"hellworld\"");
		// \' \\
	}
}
class Demo3{
	public static void main(String[] args){
		byte b = 127;  // 定义一个byte型的变量b并且赋值成127
		/*
		赋值:给变量单独赋值
		初始化:本质也是赋值,不过只有当声明的同时完成赋值才叫初始化
		*/
		int i = 34;
		int j = 128;
		i = b;   
		System.out.println("i:"+i);
		System.out.println("b:"+b);
		/*
		b = j;
		System.out.println("j:",+j);
		System.out.println("b:",+b); //报错:精度丢失 数据溢出。
		*/
		//当用户想强制转换时,可以采用强转--在数据面前+(转后的变量)
		b = (byte)j;
		System.out.println("转换后的b:"+b);
		
		//数据类型转换的标准:以数据类型表示数的范围大小确定,范围越大等级越高,反正越小。
		// 整型中:由低到高 byte short  int  long
		//浮点型:'从低到高 float double
		long maxLong = Long.MAX_VALUE;
		float maxFloat = Float.MAX_VALUE;
		System.out.println("long:"+maxLong);
		System.out.println("folat:"+maxFloat);
		System.out.println("差值:"+(maxFloat-maxLong));
		//结论:等级高低:从低到高 byte short  int  long float double
		//有char型的排序: char int long float double 
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值