java基础学习笔记1

java学习笔记1 java入门学习笔记,持续更新,非常完整 阅读详情

java基础学习笔记1

1.java语言特点

面向对象的语言

健壮性

提供程序运行的解释环境

2.核心机制

JAVA虚拟机

自己写的java文件,通过编译器 编译成 字节码class文件

然后通过虚拟机一行一行解释执行

所以java是解释型语言

垃圾收集器

每隔一段时间回收一次。

3.Helloworld
public class HelloWorld{
public static void main(String[] args){
System.out.println("helloufose");
}
}

javac编译这个文件,java运行编译后的文件.

问题:找不到或无法加载主类

解决:在运行的时候不能带.class

4.基础语法
程序执行过程

编译好后,全部装载到内存里面,找到main方法,开始执行。

把内存分为四部分

代码区:存放代码

数据区:存放静态变量,字符串常量

栈:存放局部变量

堆:动态申请内存,new出来的东西

标识符

不能以数字开头,不能使用关键字,不能使用空格.

特殊字符只能用_或者$,其他字符一律不能使用.

区分大小写.

举例:

image-20200926165855035

关键字

image-20200926165944048

常量

整型常量:123

实型常量:123.4

字符常量:‘a’

逻辑常量:false true

字符串常量:“hello中国”

变量

先声明,再赋值。

按声明的位置划分:

局部变量:方法里面声明的变量

成员变量:class里面声明的变量

数据类型

基本数据类型

4类8种:

整数型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

引用数据类型:

class,interface,数组

字符

java采用unicode编码,每个字符占2个字节。

国标码:gbk或者gb2312

各个国家有各个国家的编码,unicode统一了全球编码。

java使用unicode的utf-16.

\可以转义。

整数类型

byte 1字节 范围: -128~127

short 2字节 范围:类似上面计算出来

int 4字节 范围:类似上面计算出来

long 8字节 范围:类似上面计算出来

8进制要用0开头,16进制用0x开头

long类型赋值时必须加在最后加L或者l。

浮点型

float 4字节 范围:类似上面计算出来

double 8字节 范围:类似上面计算出来

默认为double,所以在晟声明float时必须在最后加上F或者f。

基本数据类型之间的转换

byte,short,char->int->long->float->double

byte,short,char之间不会互相转换,他们三者在计算时首先回转换为int类型。

实数常量(如:1.2)默认为double。
整数常量(如:123)默认为int。

小心!从大到小的转换存在溢出问题!

例如:

double c2= 1e200;
float f2=(float)c2;
System.out.println(f2);
//打印Infinity
//表示溢出

例如:

float a1=1.73f;
long a2=(long)a1;
System.out.println(a2);//打印1

long a=1000;没问题,没超出。类型为long。

long a=88888888888888888;有问题,超出范围。

long a=88888888888888888L;应该加L。

两个char相加,首先会把他们俩转成int相加,结果是int。如果强制转化,则再把加后的int转为char。

– ++

int a=11;

int b=a++; // b等于11 赋值结束后,a=12.

&& & || |

&&如果前面不成立,就不在计算后面的了。

&前后两个都要计算

三目运算
int a=1;
System.out.println(a==1?"男":"女");

可以用在打印语句里面!

if else

注意:else{} 最好加上大括号,不加只运行其后的一句。

循环

for(表达式1;表达式2;表达式3){

语句;

}

执行过程:表达式1–表达式2—语句—表达式3,再循环回去


while(表达式){语句}

执行过程:表达式–语句


do{语句}while(表达式);

执行过程:语句–表达式 注意最后的分号!


break:

for(int i=0;i<5;i++){
	if(i==2){break;}
	System.out.println(i);
}
	//打印01

continue:

for(int i=0;i<5;i++){
	if(i==2){continue;}
	System.out.println(i);
}
	//打印0134

switch(){
case xx:

…

case xx:

…

defalut:

…

}

一定要和break一起使用!!不然会一路case下来。

xx只能是int类型!!

defalut是上面都不是才运行。可以省略!

5.基本概念
引用类型

除了那8个基础类型,其他的所有变量都是引用类型。

引用类型占2块内存。

类是静态的概念,存在代码区。

对象是new出来的,在堆区。

类里面的方法只有一份,执行时才占用内存。

构造方法

使用场景:

Person a= new Person();

后面这个Person();就是构造函数。

定义位置:

与类名相同,没有void,没有返回值。

public class Person {
    String name;
    int age;
    
    //下面这个就是构造函数,他不是方法!
    Person(String n,int a) {
         name = n;
         age = a;
     }
}
内存解析
public class Person {
    String name;
    int age;
	//此处省略了setter和getter
    
    //下面有三种试图改变name的方法
    public static void change(Person a) {
        a.setName("wdcwec");
    }
    public static void change2(Person a) {
        a = new Person("funcname", 77);
    }
    public static void change3(String newname) {
        newname = "dwjcwfbefbwe";
    }

    //主函数
        public static void main(String[] args) {
        Person a = new Person("dcwe", 12);
        change2(a);
        System.out.println(a.getName());//并没修改成功

        change3(a.getName());
        System.out.println(a.getName());//并没修改成功

        change(a);
        System.out.println(a.getName());//修改成功

    }
}


具体内存分析过程查看视频:

https://www.bilibili.com/video/BV1Gs411G7TY?p=34

其实就是声明变量时,在栈里面声明,

然后new出东西来,放在堆里面,

然后这个变量指向这个new出来的东西,也就是从栈里面指向堆。

更复杂的内存分析(坐标Point求距离的例子):

https://www.bilibili.com/video/BV1Gs411G7TY?p=38

重载

函数名字必须相同,参数个数不同,参数类型不同。

不要求返回类型!!没有半点关系!!!

构造方法重载

注意,构造函数不写时,默认有个Perosn(){}

如果手动写了构造函数,默认的就不存在了。

构造函数也可以重载。

this

image-20200926214433918

在构造函数传入参数重名时会用到。

static

staic成员变量只有一份。也就是说,每个地方改了它,它都生效:

public class Person {

    static int statu = 99;

    public static void main(String[] args) {
        Person.statu = 100;
        test();//打印100
    }
    public static void test() {
        System.out.println(Person.statu);
    }
}

static成员可以通过类名.访问:

public class Person {
    static int statu = 99;
    public static void main(String[] args) {
        System.out.println(Person.statu);
    }
}

static方法中不能访问非static成员:

直接报错:

image-20200926215131167

package

只有java.lang不需要引入,直接使用!里面有常用的String,System,Thread,Integer等等。

自己写的类,如果要相互使用:

使用全类名:

image-20200926221156319

使用import:

image-20200926221247762

使用package:

image-20200926221405356

打包自己的类 成jar:

jar -cvf test.jar *.*

-c创建新的存档 -v生成详细输出到标准输出上 -f指定存档文件名

这些可以jar -h查看

test.jar 自己的命名

继承

Java只支持单继承!

访问控制符

image-20200926222817344

假如我有个类:

image-20200926224611317

在同一个包,另一个类下继承这个类:

image-20200926225156441

在不同包,不同类下,继承这个类:

image-20200926225548888

就在这个类中的类:

image-20200926225842705

重写

场景:

在子类中,继承父类,重写父类方法

要求:

相同方法名称、参数列表、返回类型、访问权限不能更严格

image-20200926231004193

Java学习笔记 - 1.1 本章为Java学习的入门准备 阅读详情

相关推荐

Mac用户解决WPS中的俄语显示红线问题(WPS添加外语拼写检查)

我所使用的WPS版本:AppleStore 下载的 MacOs版 3.3.0 首先,对于 在访达-应用程序中,找到WPS,右键-点击“显示包内容” 然后按照下图的索引目录(Contents\Resource\office6\dicts\spellcheck),最后进入一个叫“spellcheck”的文件夹 最后将下载好的字典包(例如上图中的 en_US就代表美式英语;ru_RU就代表俄语) 关于字典包资源下载,我在网上找到一个Google云盘,里面包含了法语,德语,西语,意大利语,葡萄牙.

qq_48159150的博客 7900

JAVA 核心技术卷1学习笔记(1)

JAVA 核心技术卷1学习笔记(1) 总体概述

jiayue's BLOG 196

OpenGL纹理贴图

OpenGL纹理1. 基本概念2. 纹理环绕方式3. 纹理过滤3.1 GL_NEAREST3.2 GL_LINEAR3.3 多级渐远纹理 (Mipmap)4. 纹理加载与创建4.1 纹理加载4.2 纹理创建4.3 纹理的使用 1. 基本概念 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来表示物体的细节特征,希望绘制一个有足够多细节的物体,当然可以用足够多的顶点颜色来描述,但是无疑也增加了许多额外的开销;另一种办法就是使用纹理。 学习之前先展示一张实现的纹理图以更好理解纹理! 还是这张图为了将纹

牵LV小猪精的博客 8930

Alice的Java学习笔记1—《Java基础入门》

一、Java基础: 1.历史: Java是1990年是SUN公司 (sun microsystems)开发的内部项目 名为OAK ,在1994年内部改名为JAVA,在1995年开始推行,Java是一门高级编程语言 在2009年,SUN公司被Oracle收购了(花费74亿美元) 2.Java严格意义上有三个版本: J2SE:SE(Standard Edition)是基础版 ,核心代码,用于Java小程序:结算系统、桌面游戏、桌面软件。 J2ME:ME是移动版,现在已经不用了,用于半智能手机 ,被安

Alice的学习笔记 486

sid图像数据_遥感影像数据

影像数据基本概念影像数据是由卫星或飞机上的成像系统获得的影像,多为遥感影像数据。影像数据的每个像元都有一个值,表示传感器探测到像素对应地面面积上目标物的电磁辐射强度,也叫亮度值、灰度值。SuperMap支持的影像数据格式有:*.img、*.tif、*.tiff、*.bmp、*.jpg、*.png、*.gif、*.raw、*.sid等。计算机以二进制记录数据,所以其量化的等级以二进制来划分,即2n。...

weixin_39534395的博客 1627

十、Teigha.Net示例的源代码下载链接,以及英文的chm说明文件和相关案例

目录官方案例demo下载Teigha.net 英文版手册下载Teigha.net Entity实体中文翻译Teigha4.0 解决闪烁问题demo下载Teigha4.0 收录demo案例类似CAD看图王软件无AutoCAD环境下操作显示CAD文件的功能源码,整个示例模块源码 官方案例demo下载 在之前找到的官方案例3_03版本中包含32位与64位dll 其中的chm的说明文件内容也不完全,后面有更为详细的英文版的chm; 示例项目中,主要包括一个winfrom程序与控制台程序,OdWriteExMgd

... 3520

Java基础学习笔记1

这是我的第一篇博客,记录我学习Java的笔记。是跟着视频学习是用typora手打的,现在把它存到这里方便以后自己查阅。后面还会坚持更新后面的学习笔记。 第一章 前言 1.1 Java语言概述 什么是Java语言 Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级编程语言。所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人类需要的功能。 Java语言发展史 1995年Sun公司发布了Java 1.0版本 1997年发

wu15632548808的博客 591

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

JavaEE学习笔记1——Java基础

Java笔记1-Java基础

vermouth_1412的博客 195

1. 迈进 SAP UI5 开发世界的第一步 - Hello World

SAP UI5 是一个用于开发企业级 Web 应用的前端框架,基于 HTML 和 JavaScript. 作为教程的第一步,我们需要了解最基础的 HTML 知识。 请大家在电脑上任意新建一个文件夹,将其命名,比如我取的名称为 Walkthrough. 进入 Walkthrough 文件夹,再新建一个文件夹名叫 01,代表本教程的第一个步骤。 进入 01 文件夹,新建一个 webapp 文件夹。这个名称是 web 应用约定俗成所使用的,大家都倾向于用这个名称,当然你要是想用其他名称也没有问题。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 9008

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6846

java学习笔记1 基础

Java方法(变量)修饰符的使用顺序权限修饰符包关键字thisstaticfinalinstanceof注释标识符比较运算符逻辑运算符位运算符函数定义特点主函数重载重写(覆写)重写equals和hashCode覆写与重载的区别构造函数数组定义数组中的数组Java内存分配之堆、栈和常量池匿名对象封装代码块单例设计模式继承一个对象的实例化过程抽象类接口接口与抽象类多态多态时成员的特点内部类匿名内部类(...

qq_43132512的博客 1406

机器学习项目实战案例数据集

本专栏整理了《机器学习项目实战案例》,内包含了各种不同的机器学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 3641

Java学习笔记1

JDK 的全称(Java Development Kit Java 开发工具包) JDK = JRE + java 的开发工具[java, javac,javadoc,javap 等]JDK 是提供给Java 开发人员使用的,其中包含了java 的开发工具,也包括了JRE。JRE(Java Runtime Environment Java 运行环境) JRE = JVM + Java 的核心类库[类]

Wi11iam_Lee的博客 1252

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java学习笔记2024/1/30

知识点: 流程控制语句

berry的博客 668

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java学习笔记1 基础语法

Java学习笔记1 基础语法 注释、标识符、关键字 数据类型 类型转换 变量、常量 运算符 包机制、JavaDoc

小喾苦的博客 314

Java学习笔记1——编程基础

Java学习笔记1——编程基础

2401_88591507的博客 1110

尚学堂JAVA基础学习笔记_1/2

尚学堂JAVA基础学习笔记_1/2 文章目录尚学堂JAVA基础学习笔记_1/2写在前面第1章 JAVA入门第2章 数据类型和运算符第3章 控制语句第4章 Java面向对象基础1. 面向对象基础2. 面向对象的内存分析3. 构造方法4. 垃圾回收机制(Garbage Collection)5. this关键字6. static 关键字7. 静态初始化块8. 参数传值机制9. 包第5章 Java面向对...

李英俊小朋友 2701

Java后端学习笔记1

【代码】Java后端学习笔记1。

demononez的博客 1851
上一篇: 安装maven,配置镜像,在idea中使用
下一篇: java基础学习笔记2
UFOO2
博客等级 码龄6年 7粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值