JAVA语言基础 第二天
- 2.1 关键字
- 2.2 标识符
- 2.3 注释
- 2.4 常量与变量
- 2.5 运算符
- 2.6 语句
- 2.7 函数
- 2.8 数组
tip:学习任何高级程序语言包含 :
1.表现形式(如何通过基础体现,表示出来)。
2.(这些基础的东西,具体使用肠镜 )是什么时候使用。
这些都是通用的,学习了以后就可以快速了解一门语言。
2.1 关键字
关键字:在java语言中被赋予特殊含义的单词;
特点:关键字的所有字母都是小写
2.2 标识符
- 标识符:程序中自定义的名称。
- 可由字母,数字,下划线_,美元符号$组成。
- Java中严格区分大小写。
- 取名尽量取的有意义的,提高代码的可阅读性。
- 禁止事项:
1.数字不能作为首字开头。
2.不可以使用关键字。
标识符命名规则
- 包:所有字母小写。
eatapple - 对于类:单词的首字母习惯大写,多个单词时每个单词的首字母大写,遵循驼峰命名。
HelloWorld - 变量和函数:只有一个单词时所有字母小写, 多个字母时,除了第一个单词外,第二个单词开始所有首字母大写。
getRecNum() - 常量:所有字母大写。多个单词时单词之间用下划线隔开。
ONE_TWO_THREE
2.3注释
用于注解说明解释程序的说明。便于他人和自己阅读和理解代码,也可以用于调试代码。
高级程序语言一般的注释有单行和多行注释。
- 单行注释:
// 单行注释内容
- 多行注释:
/*
多行注释内容
多行注释内容
*/
文档注释:
/**
文档注释内容
*/
- 单行注释中可以嵌套单行注释和多行注释,
// 注释11 // 注释2 /*注释3*/
- 多行注释可以嵌套单行注释,不能嵌套多行注释,因为开头的 /会寻找最近的 / 结束注释
/*
多行注释内容
// 单行注释内容
多行注释内容
*/
tip:其中文档注释是JAVA特有的注释,可以通过javadoc.exe 提取成说明供其他程序员阅读,降低代码对于程序员的依赖。
- 注释不走字节码,编译时不包含注释(即xxx.class文件中不包含注释)。
- 建议初学者写程序时,先写注释,在写代码。
- 代码仅仅是思想的体现,先有思想在写代码。
初学时,遵循以下流程编写代码;
1.需求:为什么要写此程序。
2.思路:如何完成需求。
3.步骤:完成思路的具体步骤。
4.写代码:使用代码实现思想。
比如:
/**
一.需求:编写用于练习java的小程序 HelloWorld.java
二.思路:
1.定义一个类。因为java程序都是在类中,java程序是以类的形式存在的,而类的形式是一个字节码的最终体现。
2.写主函数。保证此类可以独立运行。
3.为了明显的看到效果,使用输出语句在控制台打印一些字符串。
三.步骤:
1.定义一个class修饰的类,并取一个阅读性较强的类名,提高可读性。
2.写主函数: public static void main(String args[]),此函数是固定的,jvm可以认识,知道从何处开始解析。
3.使用输出语句:System.out.println("Hello World") ,将内容通过输出语句打印到控制台。ln输出语句以后,自动换行。
*/
//四.写代码
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello World");
}
}
- 面试时:必须写注释,显得专业性,提高代码可读性。
2.4变量和常量
- 常量:不能改变数值的量。
- 变量:可以改变数值的量,用于暂存一些数据。
- 概念:
内存中的一个存储区域。
该区域有自己的名称(变量名)和类型(数据类型)。
该区域的数据可以在同一类型范围内不断变化 - 使用变量注意:
变量的作用范围(一对{}之间有效)
初始化值 - 定义变量的格式:
数据类型 变量名 = 初始化值;
注:格式是固定的,记住格式,以不变应万变。 -
按照被声明的地方划分:
局部变量:方法或者语句内部定义的变量。
成员变量:方法外部,类的内部定义的变量。
-
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
Java中定义了4类8种基本数据类型:
逻辑型----------boolean(只能取true或者是false)
文本型----------char
整数型----------byte,short,int,long
浮点型----------float,double
整型数
- Java各整型类型有固定的表数范围和字段长度,其不受操作系统的影响,以保证java程序的可移植性。
整形常量的三种表示形式:
十进制整数: 12,-314
八进制整数:要求以0开头,如:012
十六进制整数:要求0x或者0X开头,如:0x12f
java语言的整形常量默认int型,声明long型可以加“l”或者“L”
如:long num = 1234456768L;
占用空间和范围
类型 | 占用存储空间 | 表数范围 |
byte | 1字节 | - 128 ~ 127 |
short | 2字节 | - 215 ~ 215-1 |
int | 4字节 | - 231 ~ 231-1 |
long | 8字节 | - 263 ~ 263-1 |
字符型
- java字符采用Unicode(全球语言统一编码)编码,每个字符占 2 字节,因而可以用十六进制编码形式表示。
如:
char ch = '\u0061'
//取得字符A的Unicode编码
char ch1='A';
String s=null;
/**
*通过Interger调用toHexString()方法把ch1的值转换为16进制数。
*
*/
s="\\u"+"00"+Integer.toHexString(ch1);
System.out.println("A的Unicode="+s);
浮点型
与整数类型相似,Java浮点类型有固定的表数范围和长度,不受平台的影响。
-表示形式:
十进制:3.14 , 2.561 0.123
科学记数: 3.14E2 (3.14x102)
tip:例如19971400000000=1.99714×10^13。计算器或电脑表达10的的幂是一般是用E或e,也就是1.99714E13=19971400000000。
类型 | 占用空间 | 表数范围 |
float | 4字节 | - 3.403E38 ~ 3.403E38 |
double | 8字节 | - 1.798E308 ~ 1.798E308 |
基本数据类型转换
自动类型转换(也叫隐式类型转换)
- bolean不可以转换为其他数据类型。
- 整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
- 容量小的类型 自动转换为 容量大的类型。
数据类型按容量大小排序:
byte,short,char --> int --> long --> float --> double
byte short char之间不会相互转换,但是三者在计算时(运算) 首先会转换为int型。
强制类型转换(也叫显式类型转换)
- 容量大的类型 转换为 容量小的数据类型时,要加上强制转换符,有可能造成精度降低或者溢出。
如: float f = 12.3f
tip:多种类型的数据混合运算时,系统首先会自动的将所有数据类型转化成容量最大的那一种数据类型,在进行运算。
题目1:
思考:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
/*默认类型int和byte区别?
byte b1=3是int型 ,编译器在编译期间会检查右边数值是否超过byte的表数范围,
如果不超,编译通过,否则报精度丢失。
b=b1+b2 编译失败,因为b1,b2都是变量,编译器不知道具体数值大小,所以会报错。
*/
byte b;
byte b1=3,b2=4;
b=b1+b2;
b=3+4;
System.out.println(b);
/*对于s=n+m可以编译通过;
int是默认类型,即使超过最大范围,也会自动强制转换。
其中Integer.MAX_VALUE是取得int的最大值。
*/
int n=Integer.MAX_VALUE,m=3,s;
s=n+m;
System.out.println(s);
2.5运算符
有下列6种运算符:
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
2.5.1算术运算符:
- 算术运算符的注意问题:
- 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。
5是被模数 2是模数 - 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的结果是?
结果 x=3000 - “+”除字符串相加功能外,还能把非字符串转换成字符串,
例如:System.out.println("5+5="+5+5);//打印结果是?
结果5+5=55
因为“5+5”是字符串,先和第一个5连接---》“5+5=5”在和第二个5连接----》“5+5=55”
2.5.2赋值运算符
- 符号:
= , +=, -=, *=, /=, %= -
示例:
int a,b,c; a=b=c =3;
int a = 3;
a+=5;等同运算a=a+5;
思考:
short s = 3;
s=s+2;
s+=2;有什么区别?
区别:s=s+2 计算结果不会自动转换。
s+=2 底层会进行自动(强制)转换。
详解:s=s+2;1.运算时 s自动转为int型与2相加,计算结果为int型,赋给byte的s时,
编译器提示:不兼容的类型: 从int转换到short可能会有损失。编译失败。
2.s是变量,编译期间,不知道s的具体值,可能会出现精度丢失。s+=2;其实将左右的数值相加,系统进行自动(强制)转换,等效于s=(short)(s+2),编译通过。
简单输入
/*
简单的键盘输入 输出
利用Scanner类
将输入的第一行赋给string
将输入单词到第一个空白符为止的字符串赋给string
将输入的数字赋给变量
记得引入 util.Scanner
*/
import java.util.Scanner;
public class KeyInputOut
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
//将输入的第一行取出来,赋给str
String str=scan.nextLine();
//将输入的数字赋给变量
//int num =scan.nextInt();
//将输入单词到第一个空白符为止的字符串赋给string
//String str2=scan.next();
}
}
- 简单的不断接受输入单词
/*
需求:从控制台不断接受输入的单词,
当单词是exit时,停止接受输入,退出程序
思路:1.定义一个类,StringDemo
2,引入工具类util。可以使用Scanner类的,主要功能是简化文本扫描。获取控制台输入;
3.定义一个String类,值为exit ,用于结束程序的扫描。
*/
import java.util.*;
public class StringDemo
{
public static void main(String[] args)
{
//控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象
Scanner scan = new Scanner(System.in);
//String equ="exit"; //创建一个对象“exit”
/*创建两个对象 new 调用String的构造方法时,
被调用的构造器方法接受的参数也是一个String对象,这个对象正是"exit" */
String equ=new String("exit");
while(scan.hasNext())
{
//将输入的单词到第一个空白符为止取给String
String ss= new String(scan.next());
if(ss.equals(equ))
{break;} //跳出循环
System.out.println(ss);
}
}
}