详细解释java当中的所有知识点(前言及数据类型及变量)(第一部分)
会将java当中的所有的知识点以及相关的题目进行分享,这是其中的第一部分,用红色字体标注出重点,以及加粗的方式进行提醒
目录
一、Java语言概述
1.Java语言简介
2.语言优势
二、main方法
1.Java程序结构组成
2.运行Java程序
3.注释
4.标识符
硬性规则
建议
5.关键字
三、数据类型与变量
1.字面常量
2.数据类型
3.变量
1.语法
2.整型变量
3.长整型变量
4.短整型变量
5.字节型变量
6.双精度浮点型
神奇事件:
7.单精度浮点数
8.字符型变量
9.布尔型变量
4.类型转换
自动类型转换【隐式】
强制类型转换【显式】
5.类型提升
1.int与long之间(int会被提升为long)
2.byte与byte的运算
总结:
四、字符串类型
1.int转成String(valueOf函数)
2.String转成int(parseInt函数)
总结:
一、Java语言概述
1.Java语言简介
Java是一种优秀的程序设计语言
Java是一个有一系列计算机软件和规范形成的技术体系(该技术体系提供了完整的用于软件开发和跨平台部署的支持环境)
1.语言广泛使用:在TIOBE编程语言社区排行非常靠前,成为了最火的编程语言之一
2.工作领域是非常广泛的:企业级系统;web开发;Android平台应用;大数据平台开发
2.语言优势
1.“Write once,Run anywhere”,一次编译,到处运行
2.语言特性:
a.简单性:相对于C++做了一个减法
b.面向对象:依靠对象之间的交互来完成工作
c.分布式:Java当中有丰富的例程库,用于处理HTTP和FTP之类的TCP/IP协议
d.健壮性:Java当中采用的指针模型可以消除重写内存和毁坏数据的可能性
e.安全性:Java适用于网络/分布式环境:运行时堆栈溢出,破坏自己进程空间之外的内存,未经授权读写文件
f.体系结构中立:Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现
g.可移植性:基本数据类型大小以及有关运算都做了明确的说明(更加方便进行移植)
h.解释性:Java自己维护了一套基于栈结构的指令集,字节码中的文件就是按照自己的指令集来组织的
i.高性能:边解释边执行,使执行效率大幅度提升
j.多线程:带来更好的交互响应和实时行为
k.动态性:可以不断适应不断发展的环境,库当中可以自由添加新方法和实例变量
二、main方法
1.Java程序结构组成
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
最终会打印出“Hello world!”
一个完整的Java程序,由三个部分组成
1.源文件(扩展名:*.java);原文件当中带有类的定义(类:表示一个程序的一个小的组件)
2.类:类当中有一个或者多个方法,方法必须在类的内部进行声明
3.方法:在方法的花括号当中编写方法应该执行的语句
总结:类存在源文件中;方法存在类中;语句存在方法中
2.运行Java程序
Java是一个半编译型、半解释性语言
源文件------>javac编译器------>.class(字节码组成面向JVM文件)------->java虚拟机执行------>JVM会将字节码文件转化为平台能识别
注:运行java之前,必须安装好JDK,JDK当中包含了javac和java工具,java最终是在JVM上运行的
2.JDK、JRE、JVM之间的关系
3.注释
注释分类:
单行注释(//)使用的是最多的
多行注释(/*注释内容*/)
文档注释(/**文档注释*/)
规范:
内容准确:注释与代码一致
篇幅合理;使用中文(根据具体的公司来看)
积极向上
4.标识符
在程序中由用户给类名,方法名,或者变量名所取的名字
硬性规则
标识符中可以包含:字母、数字以及下划线$符等
注:标识符不能以数字开头,也不能是关键字,且严格区分大小写
建议
类名:每个单词首字母大写
方法名:首字母小写,后面的每个单词的首字母大写
变量名:与方法名规则相同
5.关键字
关键字由java语言提前定义好的,有特殊含义的标识符,或称为保留字
权限修饰限定:
private;protected;public
类,函数,变量修饰:
abstract;final;static;synchronized
类与类关系:
extends;implements
实例及引用实例,判断实例:
new;this;super;instanceof
异常处理:
try;catch;finally;throw;throws
包关键字:
package;import
其他关键字:
native;strictfp;transient;volatile;assert
三、数据类型与变量
1.字面常量
System.out.println("Hello world!");其中的“Hello world!”是一个字面常量
字面常量(直接进行打印的这一种)
分类:
1.字符串常量:“12345”;“Hello”
2.整型常量:100;1000
3.浮点数常量:3.14;0.49
4.字符常量:‘A’;‘1’
5.布尔常量:true;false
6.空常量:null
2.数据类型
java中数据类型主要分为两种:基本数据类型和引用数据类型
基本数据类型由四类八种
1.四类:整型,浮点型,字符型,布尔类型
2.八种:
在java中所有的数据类型都是有固定的大小的
注:
不论是在16位系统还是32位系统,int都是占用4个字节,long占用8个字节
整形和浮点型都是带有符号的(正负的意思)
整型默认:int;浮点型默认:double
字符串属于引用类型
进制转化:
1KB=1024Byte;1MB=1024KB;1GB=1024MB;1Byte=8bit
3.变量
对于经常改变的内容,称为变量
数据类型就是用来定义不同种变量的
1.语法
数据类型 变量名 = 初始值;
public static void main(String[] args) {
Byte a = 99;
short b = 9999;
int c = 999999999;
long d = 999999999;
float e = (float) 99.99;
double f = 99.99;
char g = '1';
boolean h = true;
}
2.整型变量
定义:
两种定义方式
public static void main(String[] args) {
//方式一:定义给出初始值
int a = 10;
//方式二:定义时没有;在使用的时候必须要给出初始值
int b;
b = 10;
int c = b;
}
注:1.使用第二种方式,在使用之前没有赋值,编译期间会发生报错
2.定义变量时,不能超出类型的最大值
3.int的包装类为Integer
求int类型的范围方式:
3.长整型变量
定义:
两种定义方式
public static void main(String[] args) {
//方式一:直接进行定义
long a = 10;
//方式二:为区分int与long类型,使用L进行辨别
long b = 10L;
}
第二种方式,除了使用L之外,还可以使用小写的l;但是小写的可能与1不能很好区分
注:1.长整型变量的后面加上L或者l,推荐加L(更加便于区分)
2.长整型不论在哪一个系统都只占用内存8个字节
3.long的包装类型为Long
求long类型的范围方式:
4.短整型变量
定义:
一种定义方式以及求short的方式:
public static void main(String[] args) {
//只有这一种的定义方式
short a = 10;
//求short的大小问题
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
}
注:1.short在任何情况下都是只占内存2个子节的大小
2.short的包装类为Short
5.字节型变量
定义
一种定义方式
以及求byte的大小
public static void main(String[] args) {
//一种定义方式
byte a = 10;
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
}
最终可以将Byte的类型进行打印,求出他的范围的大小
注:1.byte在任何时刻的大小都是占1个字节
2.字节的包装类为Byte
6.双精度浮点型
定义
一种定义方式
public static void main(String[] args) {
//一种定义方式
double a = 3.14;
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
}
神奇事件:
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println("a / b = "+a/b);
double a1 = 1;
double b1 = 2;
System.out.println("a1 / b1 = "+a1/b1);
}
最终打印出来的值是:
a / b = 0
a1 / b1 = 0.5
在java当中int除以int类型的值仍然是int类型
如果想要得到0.5就必须通过double的方式进行计算
注:
1.double在任何情况下斗只占8个字节
2.浮点数与整数在内存当中的存储方式不同,不能单独使用2^n的形式来计算
3.double类型的包装类为Double
4.在存储的时候是一个近似值,不是精确值
7.单精度浮点数
定义
只有一种定义方式
在定义的时候,只有一种定义方式
如果采用下面的方式就会直接发生报错
注:
1.float在java当中只占用4个字节
2.float表示的范围比较小,在工程当中是优先考虑Double
3.float的包装类型为Float
8.字符型变量
定义
只有一种定义方式
public static void main(String[] args) {
//只有一种定义方式
char c1 = 'A';
char a2 = '帅';
}
在java当中char类型是可以存放整形的
注:
1.java当中使用 单引号+单个字母 的形式表示字符字面值
2.java当中使用的是Unicode表示字符,一次一个字符占用两个字节,表示的字符种类会更多,包括中文
3.char的包装类是Character
9.布尔型变量
定义
只有一种定义方式
public static void main(String[] args) {
//只有一种定义方式
boolean a = true;
}
其中boolean类型的取值只有两种:true;false
注:
1.java当中的boolean类型和int类型不能相互进行转化,不存在1=true;0=false的方式
2.java虚拟机规范当中,并没有明确规定boolean占了几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节
3.boolean的包装类是Boolean
4.类型转换
java作为一个强类型编程语言,当不同类型之间的变量相互赋值时,会有比较严格的校验
自动类型转换【隐式】
System.out.println(1024);
System.out.println(3.14);
整型默认情况下是int
浮点型默认情况下是double
特点:数据范围小的转为数据范围大的会自动进行
由数据范围大的转为数据小的情况的时候可能会出现数据丢失的现象,不是很安全
强制类型转换【显式】
注:
1.不同数字类型的变量之间赋值,范围小的可以隐式转化为范围大的
2.范围大的转化为范围小的,需要进行强制类型转化,且可能会发生数据的丢失
3.强制类型转化不一定会成功,不相干的类型是不能进行转化的
5.类型提升
1.int与long之间(int会被提升为long)
会发生数据丢失,则会出现报错
2.byte与byte的运算
出现的是不兼容的情况
总结:
1.不同类型的混合运算,范围小的会提升成为范围大的
2.对于short,byte这种比4个字节小的类型,会先提升为4个字节的int再进行计算
四、字符串类型
1.int转成String(valueOf函数)
public static void main(String[] args) {
int num = 10;// 方法1
String str1 = num + "";// 方法2
String str2 = String.valueOf(num);
}
调用String类下的函数valueOf
2.String转成int(parseInt函数)
public static void main(String[] args) {
String str = "100";
int num = Integer.parseInt(str);
}
调用Integer下的parseInt函数实现之间的转化
总结
希望可以能够共同进步,帮助到大家,帮助到我自己,ヾ(◍°∇°◍)ノ゙