java速成----一篇博文搞定基础

Java三十天速成(java进阶篇) 线程和进程都是计算机中的执行单元,但它们有一些重要的区别。进程是一个正在运行的程序的实例。它包括程序代码、数据和执行状态。每个进程都有自己的内存空间和系统资源,如文件句柄、网络连接和进程优先级。进程之间是相互独立的,它们不能直接访问彼此的内存空间和资源。线程是进程中的一个执行单元。一个进程可以包含多个线程,每个线程都可以独立执行不同的任务。线程共享进程的内存空间和系统资源,因此它们可以更快地通信和协作。线程之间的切换比进程之间的切换更快,因为线程不需要切换内存空间和系统资源。 阅读详情

本文适合于已经有c/c++基础的同学看

一  基本知识

1 数据类型

类似于c/c++


对于long类型常量书写时,要在数字后面加上L或者l。0L
    对于float类型常量书写时,要在小数点后面加上F或者f。0.0F
    对于double类型常量书写时,要在小数点后面加上D或者d。 0.0D

数据类型之间的转换
Java中也有隐式转换(Java则叫做自动转换)和显式转换(Java则叫做强制转换)。自动转换由编译器实现,强制转换则由用户编程实现,再由编译器执行。

自动转换的规则:低级数据类型 ==》 高级数据类型;所占字节数低的数据类型 ==》 所占字节数高的数据类型
例如:byte short int long(整数类型) ==》 float double(浮点数类型)
      byte short(8字节和16字节) ==》int(32字节)
      byte short int(8字节,16字节和32字节) ==》 long(64字节)
      float(32字节) ==》 double(64字节)
      char(16字节) ==》 int(32字节)
注:整数类型中的long,虽然占64个字节,但是却能自动转换成float类型(32字节)。因此,我认为,在自动转换的过程中,先考虑数据类型的等级高低,再考虑数据类型的所占字节数。

再注:从简单数据类型图中不难看出,各数据类型的长度均为固定值,这使得Java能够在不同的平台上运行相同的Java程序时不用修改代码,提高了程序的可移植特性。
 

2  头文件

(1)类似于c++的命名空间或者是头文件

在JAVA中叫做包(package)。Java的核心包中,我们常用的有这样5种:
(1)java.lang , 封装了所有编写java程序所需要的基本类,包括Object、Class、System等。其中,Object类是所有类的根类,任何类都是继承该类而建立的;Class类是由编译器动态生成对象的一个伴随每一个类的特殊类;System类是一个final类,主要提供标准I/O和对系统环境信息的访问等,这个类不能被实例化。
(2)java.awt , 窗口工具包,提供操作图形用户界面的基本功能。
(3)java.applet , 封装Applet类的包,提供Applet执行时需要的类。
(4)java.io , 封装I/O操作的包。
(5)java.util , 提供使用程序类以及集合类等常用的工具类。


3 程序结构

首先,是package语句,用来指定源文件所在的包。

然后,是public classDefinitiom,也就是公共类,用来指定源文件的类名,这个类名要与源文件名相同,可有0个或1个。
再然后,是classDefinition,也就是一般类,可以有若干个,也可以没有。
注:一个java源文件中,最多只能有一个public类,且必须与文件名相同。

我们的第一个程序:

import java.lang.*;
import java.io.*;

class matrix  //一般类 
{     
    void luoyang1()
   {   } 
}

public class Matrixkey //public类,类名要与文件名相同
{     
     public static void main(String args[])
     {
        System.out.println("很高兴认识你,我是Matrixkey");
      }
}


4 Java的解释执行

在系统运行Java程序时,Java编译器将Java程序(*.java文件)转化为字节码(*.class文件),在运行时,解释器将编译得到的字节码进行解释执行。
Java语言一个源程序可以含有多个类(public类最多一个),每个类编译都生成一个字节码文件。也就是说,有几个类,就有几个字节码文件。
这就是,我们在执行一个Java程序时要先用javac *.java将Java程序转化为字节码的原因。
注:Java区分大小写,因此上面的程序中,public类的类名:Matrixke,那么这个java程序的文件名必须为:Matrixkey.java


5 输入输出 

输出使用println方法。println方法的使用方法如下:

System.out.println( x );

 System是java.lang.*包中的类,out是System类的一静态属性,而println()是out属性的一个静态方法。该方法用于打印后再换行,可以打印基本类型的数据以及字符串等,'+' 在字符串中代表将字符串相互连接。

        int x = 4772;
        /* 输出一个字符m */
        System.out.println(m);  
       
        * 输出一个数字4772 */

        System.out.println("变量x等于"+x); //或者直接System.out.println(x);
     
        /* 输出一个字符串matrixkey */

        System.out.println("matrixkey");

        /* 输出汉字落阳*/
        
System.out.println("落阳");
   

println方法打印后自动换行,因此,下面2条代码输出结果是一致的

int x = 100;
System.out.println(x);
System.out.print(x + "\n");

注意:"+"号用来连接字符串是有点麻烦的! 例如:
System.out.println(1+2+"3"); 
Sysrem.out.println("1"+2+3); 
'+'号优先级别,从左到右 
所以打印结果是这样的:
33(先做1+2 变成字符串"3" 连接后面的"3",所以打印33) 
123(先把"1"和2连接成为"12",在连接3就变成"123")


6 运算符和流程控制

C/C++类似,注意switch不能做实数的判断


二 类  

1 概念

类作为JAVA程序的基本要素,由成员变量(即属性)和成员方法组成,必须先定义在使用。
类声明格式:[修饰符] class 类名 [extends 父类名] [implements 类实现的接口列表]
(1)修饰符用于确定类的访问控制权限(public和friendly)以及类型(abstract和final)
(2)类名是合法的标识符,并且首字母大写
(3)保留字extends指明声明的类所继承的父类
(4)[ ]里的内容可选

/* JAVA中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrix extends Matrixkey

/* C#中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrixk : Matrixkey

类体格式:class 类名 {成员变量 成员方法}
其中成员变量定义的格式为:<修饰符> <类型> <变量名称>
        成员方法定义的格式为:<修饰符> <返回值类型> <方法名称> ( [ <参数表> ] )
(1)成员变量和成员方法可以通过public private protected等修饰符控制访问权限
(2)java中,方式是通过值传递参数,而不是通过地址,因此方法不可以改变参数的值
例:

public class Matrixkey  //类声明
 { public int a;
    public double b;        //成员变量的声明
    
    static void Min(double c)  //成员方法的声明 
 }

类成员的修饰符有两种
访问限定符:public  可以被外部类访问
                        protected  可以被同一个包中的类以及该类的子类访问
                        private  只能在该类内部被访问
                      
  default  可以被同一个包中的类访问
非访问限定符:静态修饰符 static
                            最终修饰符  final
       抽象修饰符 abstract  syncronized

2 类的继承

在java语言中,类继承是通过extends保留字实现的,格式为:

 class Subclass extends Superclass {...}

(1) 用extends指明新定义的子类(Subclass)的父类(Superclass),就在两个类之间建立了继承的关系
(2)子类可以从父类继承所有非private的属性和方法作为自己的成员
(3)若子类成员变量的名字 和 父类成员变量的名字 相同,则子类成员隐藏父类成员
(4)若子类成员方法 与 父类成员方法的名字,返回值类型,参数表都相同,则子类方式是父类方法的重写
(5)方法重写时注意:子类方法的访问权限要高于父类

子类方法的访问权限比父类方法的访问权限要高,一般用Super关键字来访问父类的方法和变量,但是父类的对象不能直接访问子类的方法和变量


3  数组

定义一维数组的格式:<类型> <数组名> [ ]; 或者 <类型> [ ] <数组名>;
因此,int A [ ]; int [ ] A ; 两者是相同的
(1)<类型>可以是简单或者复杂数据类型
(2)进行数组定义时,不分配内存,因此不要求给出其元素的个数
(3)数组分配内存通过new操作符或静态初始化实现
创建一维数组的格式:<数组名> = new <类型> [ <数组大小> ];
                                          A = new int [3];
定义的同时创建:<类型> [ ] 数组名 = new <类型> [ <数组大小> ];
                                 int [ ] A = new int [3];
初始化数组:对已定义的数组元素赋值,有动态和静态两种方式
(1)当初始化元素数目较少,采用静态初始化
            int A[ ];
            A[0] = 1; A[1] = 2;A[2] = 3;
(2)对简单类型,定义数组的同时,用new操作符进行初始化
           int [ ] A = new int [3]{1,2,3};
(3)当初始化元素数目较多,可以利用循环语句对数组元素动态初始化

多维数组
定义的格式:<类型> <数组名> [ ] [ ];  或者 <类型> [ ] [ ] <数组名>;
初始化:在定义的同时对数组元素进行赋值(静态)
                可以按顺序直接对每一维分配内存或从最高维开始对每一维分配内存(动态)

数组操作
(1)方法arraycopy()用来进行数组的拷贝
(2)ArrayList类用来动态调整数组的大小  


4 字符串的表示

(1)用String类表示字符串,String类的对象表示的是固定长度的字符串
(2)用StringBuffer类表示字符串,StringBuffer类的每个对象都是长度可变的字符串
字符串的操作
(1)对String的修改
String类提供了concat() replace() substring()方法分别实现字符串的连接,替换,取子串的操作;“+”运算符也可以用来连接字符串。
(2)对StringBuffer的修改
 StringBuffer类表示的是可变长度的字符串,使用它,就可以方便地在字符串中插入或在字符串尾追加字符。相应的方法是:insert(),setCharAt(),append()。
(3)判断两个字符串是否相等,使用equals()方法

三  异常处理 

参考类似c/c++。
对于try和catch子句的排列方式,下列哪个是正确的?
A。 子类异常在前,父类异常在后
B。 父类异常在前,子类异常在后
C。 只能有子类异常
D。 父类异常和子类异常不能同时出现在同一个try程序段内
解析:在java语言中,在捕获父类异常时对其子类异常也捕获了,根据try与catch的匹配原则,尽量使用一个父类去捕获其所有子类的异常,而父类和子类异常是可以同时出现的。
答案:A


以上内容总结自:http://www.matrixkey.com.cn/blog/default.asp?CateID=7&distype=list

http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/JavaGossip.htm





21天Java开发速成篇-Java从入门到大师01快速入门 阅读详情

相关推荐

嵌入式系统STM32速成复习与环境搭建全流程指南

嵌入式系统是软硬件结合的核心技术,在期末考试、专升本及考研复试中备受关注,而STM32系列芯片更是课堂教学与工程实践的主流平台。学习难点往往不在知识点本身,而在于缺乏清晰的复习路径与可用的开发环境。从ARM Cortex-M架构、GPIO配置、中断机制到定时器与串口通信,掌握基础原理是构建知识骨架的关键。结合标准库与HAL库的工程实践,详解Keil MDK与STM32CubeMX环境搭建流程、ST-Link烧录调试技巧及常见报错排查方法,能够帮助初学者快速跑通LED流水灯等经典实验。基于“先全局、再实操、后

weixin_34384557的博客 372

Java三十天速成(java基础篇)

Java基础

qq_64519337的博客 4345

java速成java速成

java速成java速成java速成java速成java速成java速成java速成java速成java速成

Java基础

最新Java路线图谱 第一章 初识Java入门基础 文章目录最新Java路线图谱前言1、我们为什么学Java1.1、Java是什么?1.2、为什么选择Java1.3、Java主要特性2、关于Java那些事3、Java基础3.1、标识符和关键字3.2、数据类型3.2.1基本类型(primitive type)3.2.2引用类型(reference type)3.3、什么是字节3.4、类型转换3.5、变量、常量、作用域、命名规范3.6、运算符3.6.1、自增自减运算符3.6.2、幂运算 2^3 2*2

m0_59709514的博客 1万+

java编程21天速成!!.pdf

在Java中有3种方法表示整数 –十进制(0~9):不需要任何解释 •int i = 99; –八进制(0~7):在数的前面放置一个0(零) •int six = 06; //值为6 •int nine = 011; //值为9 –十六进制(0~9,a~f):在数前放置0x或者0X •int x = 0x0001; •int y = 0Xb; •int z = 0x7FFff;

红外避障模块介绍

该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接回输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5v。该模块测距离2~~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;1.VCC外接3.3v-5v电压(可以直接与5v单片机和3.3v单片机相连).

weixin_46251230的博客 2万+

java速成书_java速成----一篇博文搞定基础

本文适合于已经有c/c++基础的同学看一 基本知识1 数据类型类似于c/c++对于long类型常量书写时,要在数字后面加上L或者l。0L对于float类型常量书写时,要在小数点后面加上F或者f。0.0F对于double类型常量书写时,要在小数点后面加上D或者d。 0.0D数据类型之间的转换Java中也有隐式转换(Java则叫做自动转换)和显式转换(Java则叫做强制转换)。自动转换由编译器实现,...

weixin_42492215的博客 426

拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。

/保存的文件个数这里之所以需要用到委托,直接更新textbox文本中的内容,以及复制picturebox的image会提示不是从齐创建的线程调用。

morsth的博客 4813

java学习攻略

最近需要速成java,制定一个学习计划。 1基本语法 一篇博文搞定:http://blog.youkuaiyun.com/crazyhacking/article/details/8144622 2多线程 3网络通信socket编程 non block socket 4 设计模式 不会的可以查阅jdk手册 先从java的基础学起吧,既然楼主学过c++,jav

crazyhacking的专栏 1898

ASF-YOLO:一种基于注意尺度序列融合的细胞实例分割YOLO模型

随着样本制备技术和显微成像技术的快速发展,细胞图像的定量处理和分析在医学、细胞生物学等领域发挥着重要作用。基于卷积神经网络(CNN),可以通过神经网络训练学习不同细胞图像的特征信息,具有很强的泛化性能。两阶段的R-CNN系列[1,2,3]及其一阶段变体[4,5]是实例分割任务的经典CNN基础框架。在最近的研究中,You Only Look Once(YOLO)系列[6,7,8,9]已经成为实时实例分割中速度最快、最准确的模型之一。

m0_47867638的博客 9793

扣子(coze)实战|手把手教你搭建AI换装自动化工作流

摘要:本文介绍了使用Coze平台搭建AI换装工作流的详细教程。工作流包含模特图片上传、服装替换、任务提交和智能轮询等模块,通过change_model插件实现异步换装处理,并内置30秒循环查询机制。该工具支持自定义API密钥对接不同AI服务商,目前已上线共享空间并提供会员服务(59.8元/年)和VIP课程(499元/年),包含100+智能体和实战案例资源。完整体验地址见文中链接。

yueyehuguang的博客 1843

ie浏览器java插件下载,分分钟搞定!

8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步方式 写个生产者消费者模型,要求多线程环境下 为什么要用synchronized?原理?效率? 算法: 二叉树,打印所有根结点到叶节点路径和为k的路径。 反问 先别走,二面面试官马上来 8.1

m0_57983312的博客 2144

Visual Tracker Benchamark傻瓜式教程(二)

问题  1 1  在调用main.m跑TRE和SRE时,因为会生成相应的.mat数据文件,如果跑完以后发现自己算法生成的.mat文件有问题,那么要把该文件删除,待找到错误原因后,重新生成相应的.mat文件。因为程序中写的是如果已经存在了.mat文件,例如已经存在car4_STC.mat文件,即使该文件中的数据有错误,但是重新跑时会默认该文件中的数据写完,不会重新写入数据 问题  2  b

mingbujingren的专栏 9928

诸神缄默不语-个人技术博文与视频目录

诸神缄默不语的优快云博文目录

诸神缄默不语的博客 1万+

NVIDIA GPU任务调度全景:从Block分配到Warp发射

GPU并行计算的核心是任务调度,而CUDA kernel在GPU上的执行并非简单的一次性操作,而是经过从CPU命令队列到硬件前端,再到GigaThread引擎和Warp Scheduler的多层协同。理解这一过程,是性能优化的基础。Warp作为硬件调度的基本单位,其状态切换与延迟隐藏能力直接决定计算单元的利用率;而Occupancy作为衡量SM上活跃Warp池大小的指标,也并非越高越好,需要结合访存模式与资源占用综合判断。对于多任务并发场景,Stream优先级、计算抢占、MIG硬件隔离与MPS软件共享等机制

weixin_32612263的博客 270

RK3588, 绘制中文OSD,实现左右对齐

基于RK3588,实现中文OSD, 上下左右对齐。

J。 661

shiro框架_半·傻瓜式速成入门_不含spring等框架集成,纯原生Java的应用

博主是一个刚步入北漂的低级码农,具体就不多说了,开车。 能知道shiro,看到此篇文章的,估计绝大多数都是像我一样被老大安排开发权限那一块的功能的搬砖萌新。 google、百度了半天,看了大量shiro的入门教程。随后带着一脸懵逼... 开发环境是spring全家桶系列还好,如果像我一样,开发环境完全是其他底层(我们是netty)的,基本上就GG了。 毕竟我只需要shiro的后台的某一些功...

巴休特的风之剑 363

微信小程序 - 最新详细实现调起手机摄像头拍摄身份证人像面和国徽面取景框功能,在拍照相机上增加身份证证件照的轮廓或自定义文字,支持替换扫描拍摄辅助线图片及文本,小程序实现拍照身份证时带取景轮廓框拍摄!

微信小程序,身份证,证件照,人像,证件照提示框模板,vue身份证拍照框,摄像机相机里有引导内容,取景框拍摄,微信小程序实现拍照界面自定义实现,自拍人相框拍摄,取景框,户口簿取景框,画布指定区域生成图片,微信小程序身份证正反面拍照如何加入辅助图片引导照片,身份证取景框拍摄,服务器,上传,正反面,调起手机摄像头: 拍摄身份证的正反面,自定义身份证取景框,在相机上绘制 “身份证轮廓“ 与提示文字,拍摄身份证时出现人像框怎么实现,在相机上增加图片和文字,微信小程序怎么给调起的相机加入自定义图片,小程序实现给相机上面

🏆 前端领域优质创作者 3403

想搞定大厂面试官?springboot分布式事务解决方案

8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步方式 写个生产者消费者模型,要求多线程环境下 为什么要用synchronized?原理?效率? 算法: 二叉树,打印所有根结点到叶节点路径和为k的路径。 反问 先别走,二面面试官马上来 8.1

m0_56146626的博客 184

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java代码实现斐波那契数列,纯干货

8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步方式 写个生产者消费者模型,要求多线程环境下 为什么要用synchronized?原理?效率? 算法: 二叉树,打印所有根结点到叶节点路径和为k的路径。 反问 先别走,二面面试官马上来 8.1

m0_56824583的博客 384

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

GitHub标星8k!2021大厂Java知识点总结+面试题解析

前言 Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本。它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式宣言中陈述的反应式原则为基础。几天前小编从朋友那边嫖来Spring5秘籍手册+知识导图,经过自己的梳理才发现,这完全就是真香现场!我爱了!咱今天就来挖掘真香现场——Spring5 8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 ja

m0_57699613的博客 342

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python零基础入门:从环境配置到第一个程序

编程入门的第一步往往不是语法,而是搭建一套可用的开发环境。理解Python解释器、PATH路径等基础概念,能帮助你避开环境配置中的常见陷阱,让学习过程更顺畅。掌握环境搭建与编辑器配置后,print、变量、input等基本语法便有了实际应用场景。Python在爬虫、数据分析、自动化办公等领域应用广泛,零基础学习者通过需求驱动的方式,可以更快建立编程思维。本文围绕Python零基础入门,梳理环境配置、编辑器选择、第一个程序到后续学习路线,为初学者提供一条不走弯路的实践路径。

weixin_31315567的博客 281

Nginx速成实战:从安装配置到反向代理与负载均衡

Nginx作为高性能HTTP服务器和反向代理服务器,是后端与运维工程师处理流量分发、服务部署的基石。理解其核心原理——通过配置文件中的server块与location块匹配请求并进行转发,配合upstream指令实现负载均衡,是掌握它的关键。其技术价值在于用简洁的配置即可解决高并发、跨域、动静分离等真实工程问题。在实际应用场景中,从部署Vue静态项目到代理多个后端服务,从配置HTTPS证书到Docker容器化挂载多项目,Nginx都扮演着统一流量入口的角色。本文从安装启动与配置文件拆解出发,自然过渡到反向代

weixin_34198453的博客 131

优快云、51CTO、慕课网深度对比:IT在线学习平台怎么选?

在线IT培训平台众多,如何选择适合自己的学习路径?无论是编程初学者、转行求职者还是在职开发者,都会面临平台定位差异带来的困惑。技术学习本质上需要“搜索-速成-体系”三种能力的结合:优快云以技术社区见长,提供海量博客与零散课程,适合查资料、解决报错;51CTO偏向企业内训风格,主打实用速成,适合快速上手具体工具;慕课网则更像线上编程学校,按职业路径编排体系化课程,适合零基础系统学习。理解三者的底层逻辑,才能根据自身场景做出理性选择,避免盲目囤课和知识碎片化。本文从平台定位、课程质量、收费模式、适合人群等维度

weixin_33947521的博客 313
上一篇: C++对象内存布局2---进阶篇-----C++ 对象的内存布局(下)
下一篇: 倒排索引--lucene
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值