从零开始学习JAVA(入门基础)
博主从零开始学习JAVA(入门基础)
1、搭建JAVA开发环境
卸载JDK(未安装的请忽略)
- 将JDK的安装目录删除
- 删除JAVA_HOME以及CLASS_PATH 环境变量
- 删除PATH下与JAVA_HOME以及CLASS_PATH有关的环境变量
安装JDK
- 去Oracle官网下载JDK或者去一些国内镜像网站下载JDK安装文件
- 将JDK安装到本机中
- 新增环境变量JAVA_HOME,指定路径为JDK的安装目录
- 更新环境变量PATH,加入%JAVA_HOME\bin%、以及%JAVA_HOME\jre\bin%
- 打开电脑DOS命令窗口,输入java -version以及javac命令判断java环境是否安装完毕
2、编程语言中,何为编译型与解释型
编译型
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。可以理解为有一个解释器,将所有的源代码编译成了硬件可以执行的机械码并直接执行,运行期间无需再次编译(速度快)
解释型
使用专门的解释器对源代码逐行编译成特定的硬件可执行的机械码并且直接执行
3、第一个JAVA应用程序
// 在dos命令行执行 javac HelloJava.java
// 执行 java HelloJava
// 输出结果:Hello JAVA
public class HelloJava{
public static void main(String[] args){
System.out.println("Hello JAVA");
}
}
4、JAVA之中的关键字有哪些
abstract assert boolean break byte case
catch char class const continue default
do double else enum extends final finally
float for goto if implements import instanceof
int interface long native new package private
protected public return short static strictfp
super switch synchronized this throw throws
transient try void volatile while
5、注释的使用
// 这是一个单行注释
/*
这是一个多行注释,我是第一行
这是一个多行注释,我是第二行
*/
/**
这是一个DOC文档注释
*/
6、标识符的定义规则
//JAVA中定义的标识符只能是 字母[a-z][A-Z]、下划线_、美元符号$ 开头
// 正确实例
int name;
int Name;
String _str;
String $str;
// 错误示例
int *1;
int #1;
7、基础数据类型规则
JAVA的8个基础数据类型
/**
位bit是计算机最小的存储单位
1个字节byte 占据8位,也就是1byte = 8bit
*/
// 整数类型
byte 占据1个字节,范围为2^7 到 (2^7)-1
short 占据2个字节
int 占据4个字节
long 占据8个字节
// 浮点类型
float 占据4个字节
double 占据8个字节
// 字符类型
char 占据2个字节
// 布尔类型,值只有true或false
boolean 占据1位
数据类型面试题
- 银行金额需要使用什么数据类型
BigDecimal 类来存储金额 - 为什么浮点数不能用来计算金额
因为不够精确,会损失精度
基础数据类型转换规则
- 自动转换规则
向上转型,意思就是精度小的会向着精度大的进行转型,long与double进行运算后结果为double。 - 强制转换规则
// 在需要强制转换的变量前加入小括号 (数据类型)[变量名]
// 只有向下转型时需要使用强制转换(意思就是精度大的转换为精度小的需要强制转换)
// 强制转换时要注意丢失精度问题
long long1 = 10;
int int1 = (int)a1;
变量、常量、作用域
// 局部变量的作用域仅限于当前方法
// 成员变量只有创建了该类的实例才能使用
// 类变量用类即可调用,作用于当前类
// 使用了final修饰的变量就会变成一个常量
// 变量,顾名思义,可以被多次重新赋值的一个值
算数运算符
自增自减运算符
int a = 10;
int b = a++; // 先赋值再加1,值为10,该行结束后a为11
int c = ++a; // 先加1再复制,值为12
与或非运算符
// 与 &&,两个都为true才为true, && 为断路与,只要左边为false,右边则不进行判断了
// 或 ||,两个都为false才为false,否则为true
// 非 ! ,将false取反为true,将true取反为false
位运算符 & | ^ ~ << >> >>>
& | ^ ~
/*
计算机底层在运算时,会将其转换为补码形式
1、正数的补码等于它的原码
2、负数的补码等于它的原码 (取反 +1) , 而负数的补码转换为原码的时候则需要 (-1 取反)也就是逆运算
3、补码与原码之间的转换时,最高位符号位不用取反
4、使用~进行取反的时候,符号也要取反
5、左移右移时记住一点细节,5>>3 = 5/(2^3) ,5<<3 = 5*(2^3)
*/
// 位运算的应用1:判断奇数偶数,一个数 &1,如果结果为1则是奇数,否则为偶数
int num = 10;
String result = (num & 1)==0 ? "偶数" : "奇数";
/*
位运算的应用2:使用异或^完成两个数之间的值交换
原理:一个数异或自己,再异或一个其他的数,就会变成那个其他的数,例如: 5 ^ 5 ^ 8 = 8,因为5^5之后结果得0,所以再^8时结果为8
两个数字a与b进行交换,a = a^a^b,b = b^b^a;可以看到一个规则,其中两个等式右边都有一个 a ^ b
*/
int a = 10;
int b = 20;
// 由于等式右边都有一个a ^ b
a = a ^ b;
// a 等于了 a^b时,b只需要用自己 ^ 一次a 就可以得到a的值
b = b ^ a;
// 而这个时候 a只需要再^一次自己当初的值即可得到b的值,自己的当初的值已经赋值给了b,所以再^ 一次b即可
a = a ^ b;
System.out.println("这时a的值等于:" + a + " b的值等于:" + b);
javadoc生成java文档
@author 作者名
@version 版本号
@since 指明最早使用的jdk版本
@parram 参数名
@return 返回值
@throws 所抛出的异常
生成javadoc时,需要使用的命令: javadoc -encoding utf-8 -charset utf-8
流程控制
switch
// switch语句中只能编写byte、short、int、char,在jdk1.7时可以使用String
递归思想
递归就是方法自己调用自己,但是递归调用的空间复杂度较高,容易出现栈溢出
例如使用递归编写一个可以计算出阶乘的
public int factorial(int baseNum) {
if (baseNum == 1){
return 1;
}else {
return baseNum * factorial(baseNum - 1);
}
}
java内存 栈、堆、方法区、常量池
栈
- 存放对象的引用(地址)
- 存放基本类型的变量(包括值)
堆
- 存放new出来的对象及数组
方法区
- 存放所有的class文件
- 存放static修饰的方法及其变量
数组的三种初始化及基本特点
静态初始化
int[] arr1 = {1,2,3,4};
String[] arr2 = {new String("s1"),new String("s2")};
动态初始化(包含默认初始化,及对应的数据类型的默认值)
int[] arr2 = new int[10];
数组的基本特点
- 数组长度一旦确定就不能够改变
- 数组只能是固定类型,不能为混合类型(数组中的每个元素都必须为相同类型)
- 数组中的元素可以是基本类型,也可以是引用类型
- 数组创建出的对象存放在堆中,引用存放在栈中
- 并且数组本身即为一个对象
关于二维数组的理解
可以理解为一个数组里装了多个一维数组
数组的选择排序与冒泡排序
// 冒泡排序
public static void bubbleSort(int[] arr) {
// 确定循环次数
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[i] < arr[j]){
// 交换
arr[i] = arr[j] ^ arr[i];
arr[j] = arr[j] ^ arr[i];
arr[i] = arr[j] ^ arr[i];
}
}
}
}
// 选择排序
public static void selectSort(int[] arr) {
// 确定循环次数
for (int i = 0; i < arr.length - 1; i++) {
// 每次循环都需要得到一个最大或最小的值
for (int j = i + 1; j < arr.length; j++) {
if(arr[i] < arr[j]){
// 交换
arr[i] = arr[j] ^ arr[i];
arr[j] = arr[j] ^ arr[i];
arr[i] = arr[j] ^ arr[i];
}
}
}
}
权限修饰符
权限修饰符 本类 当前包 不同包下的子类 不同包
private √
default(默认) √ √
protected √ √ √
public √ √ √ √
多态中、方法的编译看左边,运行看右边,变量的编译与运行都看左边
记住一点,static修饰的方法不能被重写,所以调用static修饰的方法,编译运行都看左边,而变量无法被重写,所以编译运行也都看左边
public class A {
public static void main(String[] args) {
Father father = new Son();
System.out.println(father.a);
System.out.println(father.b);
father.show();
father.staticShow2();
}
}
class Father{
int a = 10;
static int b = 20;
public void show(){
System.out.println("父类的成员方法");
}
public static void staticShow2(){
System.out.println("父类的静态方法");
}
}
class Son extends Father{
int a = 100;
static int b = 200;
@Override
public void show(){
System.out.println("子类的成员方法");
}
public static void staticShow2(){
System.out.println("子类的静态方法");
}
}
super关键字与this关键字的区别
super
- super 调用父类的构造方法,必须放在构造方法的第一行
- super 必须只能出现在子类的成员方法或者构造方法中
- super和this不能同时调用构造方法!(因为会初始化多次,数据不安全)
this 与 super的区别
- this为当前对象的引用
- super为父类对象的引用
从零开始学习JAVA(入门基础)的更多相关文章
- 从零开始学习java一般需要多长时间?
从零开始学习java一般需要多长时间? 其实学java一般要多久?因人而异,例如一个零基础的小白自学java,每天学习8个小时来算,而且在有学习资料的基础上,每天学习,从零到找到工作,起码要半年起步, ...
- 零基础怎么学Java?Java的运行机制是什么?Java入门基础!
Java语言是当前流行的一种程序设计语言,因其安全性.平台无关性.性能优异等特点,受到广大编程爱好者的喜爱. 想学习Java语言的同学对于Java的运行机制是必须要了解的!! 计算机高级语言的类型主要 ...
- Java入门基础,必读!Java单行、多行和文档注释!
在编写Java的过程中,我们需要对一些程序进行注释.除了方便自己阅读之外,我们还需要为他人更好地理解我们的程序.因此,我们需要对一些程序进行注释,这些注释可以是编程思想,也可以是程序的作用,可以说是J ...
- Java入门基础(类)
类 在Java中表示自定义的数据类型,一个class可以是若干基本类型的组合. public class Student { public String id;//学号 public String n ...
- Java入门基础(变量、操作符与表达式)
Java入门基础 1. 第一个程序 2.变量(命名.运算.整数/小数/字符串.布尔类型) 3.操作符与表达式(算术/逻辑/关系/赋值/自增/类型转换操作符) HelloWorld! public cl ...
- Java入门基础知识点总结(详细篇)
Java入门基础知识点总结(详细篇)~~~~~目录 1.1 图解 1.1.1 Java基础知识点 1.1.2 Java基础语法的相关内容 1.2 关键字 1.3 标识符 1.3.1 标识符概念 1.3 ...
- 学习java之基础语法(三)
学习java之基础语法(三) java运算符 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运 ...
- 学习java之基础语法(一)
学习java之基础语法(一) 基本语法 编写 Java 程序时,应注意以下几点: 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的. 类名:对于所有的类来说 ...
- JAVA入门基础及流程控制
JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...
随机推荐
- excel VBA数组运用
Sub a()Dim i人数 As Integer'定义变量Dim i考试成绩() As Integer'定义数组Dim i As Integer'定义变量i人数 = InputBox("输 ...
- NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
业精于勤,荒于嬉:行成于思,毁于随. 一.MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free , 2 ...
- .NET Core 对象池的使用
昨天在『.NET 大牛之路』技术群和大家聊到了对象池的话题,今天展开详细讲讲这个知识点. 池这个概念大家都很熟悉,比如我们经常听到数据库连接池和线程池.它是一种基于使用预先分配资源集合的性能优化思想. ...
- CSS经典布局——圣杯布局与双飞翼布局
一.圣杯布局和双飞翼布局的目的 实现三栏布局,中间一栏最先加载和渲染 两侧内容固定,中间内容随着宽度自适应 一般用于PC网 二.圣杯布局的实现 技术要点: 设置最小宽度min-width 使用floa ...
- 资源:Git快速下载路径
Git快速下载地址: 地址:https://npm.taobao.org/mirrors/git-for-windows/
- vim下出现^M怎么解决
将window下的文本文件上传到linux上,在读取数据文件时,在每一行数据后会出现^M字符. 为什么会出现这种情况呢: 因为windows.linux.os系统的换行符标准不同: 先了解下概念, ...
- 如何用jmeter监控内存,CPU(1)
要jmeter的运行环境配置好就可以: 打开这个小工具的步骤很简单,如果你已经配置好了Jmeter运行的环境,那么你也就不用去做其他的配置,直接 点击:开始-->运行-->输入cmd--& ...
- .Net5 IdentityServer4下SqlServer和Mysql数据迁移
1.概念 以下概念从官网整理的,我也是看官网一步一步学习的 官网地址 https://identityserver4.readthedocs.io/en/latest/index.html 1.1 I ...
- fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化 在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串 ...
- Js中的防抖与节流函数
1.何为防抖与节流函数呢? 1.防抖(debounce):通过setTimeout方式,在一定的时间间隔内,将多次触发的事件转化为一次触发.也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于 ...