Java基础有那些?_第2页回答

2021-08-05 14:10发布

21条回答
tiu
2楼 · 2021-08-13 16:35

 1、Java语言的优点:
1)Java是纯面向对象语言
2)与平台无关性,一次编译到处运行
3)Java提供了狠多内置类库
4)提供了对web应用的支持
5)具有较好的安全性(数组边界检测、Bytecode检测)和健壮性(强制型机制、垃圾回收器、异常处理)
6)去除c++难以理解的一些特性(头文件 指针 运算符重载 多重继承)
2、java与c++的异同:
1)Java为解释型语言,c++为编译型语言,java会慢但是跨平台
2)Jave为纯面向对象,c++既面向对象又能面向过程。Jave无全局变量和全局函数
3)Java没有指针,更安全
4)Java不支持多继承但是有接口概念
5)Java不需人工分配管理内存(申请 释放),提供垃圾回收器自动回收。当堆栈或静态存储区没有对这个对象的引用时,就会被回收。没有析构函数,但是有finalize()方法。
6)Java没有运算符重载,没有预处理功能。
3、public static void main(String [] args)是程序的入口。
4、java可有多个main()文件,但只有与文件名相同的用public修饰的类的main()才能作为程序的入口。注:有且仅有一个类被public修饰并与文件同名。
5、静态快在main函数之前执行。初始化执行顺序:父静态变量 父静态代码块 子静态代码变量 子静态代码块 父非静态变量 父非静态代码块 父类构造函数 子非静态变量 子非静态代码块 子类构造函数
6、构造函数:
1)与类同名,无返回值
2)可以有多个,根据参数不同
3)总是伴随new操作一起调用
4)主要用来初始化对象
5)不能被继承
6)可用super来显示调用父类构造函数
7、浅复制仅仅复制考虑的对象,不复制它引用的对象。深复制两者都复制
8、面向对象和面向过程有什么不同:
1)面向对象是用符合常规思维的方式去处理客观世界的问题,面向过程是则重以事件为中心,模块化。
2)面向对象是使计算机世界向客观世界靠拢,使问题的处理更清晰。面向过程是清晰准确表达过程的模块,把客观世界的问题抽象成计算机可以处理的过程。
9、面向对象的特征和优点:抽象 继承 封装 多态有较高的开发效率,代码可重用。较高的可维护性,代码更清晰明了。
10、java只支持单根继承,extends继承是 is a 关系,组合是 has a关系。
在java语言中能用到组合的尽量不要用继承。

灰机带翅膀
3楼 · 2021-08-15 16:01

一、数据类型


1.整数:byte,short,int,long  分别对应1,2,4,8字节长度


数据的范围和写法 与 C++一致


byte a=1;

int b=2;

注意:java中是没有unsigned类型  这个需要和C++区别  也就是说Java中的数都是有符号的


2.浮点数:double ,float  

这个与c++基本一致  ,区别在于 float 常量的语法更加严格一些 。


在java中 float a=1.235f;   如果没有后边的f就会报错


在C++中 float b=1.235;  如果没有后边的f   编译器会发出警告  ,说 double 截断成 float ,并没有报错。因为在c++中 浮点常量默认为double ,如果希望是float,则需要加f。


3.布尔类型:boolean  有两个字面常量true ,false


注意:java中boolean类型与int类型是不可以通用的!boolean就是它,不是c++中所谓的0与非0;


二、表达式


1.算术表达式   略  与c++一致;


2.关系表达式  写法与c++一致,需要注意的还是boolean问题   其运算结果不是0也不是1;


3.条件表达式  cond? expr1:expr2; 写法同c++,需要注意的还是boolean问题  cond必须是boolean;


4.逻辑表达式  同c++;


三、语句


java语句和c++语句基本一致  ,需要注意的还是 boolean问题

1.if

2.for

3.while

4.switch

四、类的基本特性

1.类的语法

在Java中类是很简单的 ,与c++也略有区别

区别【1】成员变量   每个变量前  加访问控制  。

【2】成员函数  每个函数前 同样加访问控制

【3】可以直接给成员变量赋值初始化

2.类的构造函数

【1】与类同名

【2】无返回值

【3】可以重载


我的网名不再改
4楼 · 2021-08-17 10:07

1、JVM、JRE和JDK的区别:


JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。


java语言是跨平台,jvm不是跨平台的。


JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。


JDK(Java Development Kit):java的开发工具,包括jre+开发工具


2、环境变量path和classpath的作用是什么?


(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,


用于指定DOS窗口命令的路径。


(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。


3、变量有什么用?为什么要定义变量?什么时候用?


答:变量的作用:用来存储数据。


为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用


4、&和&&的区别?


答:(1)&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;


只能操作boolean类型数据;


(2)&不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数。


5、标示符命名规则:


由数字(0-9),大小写英文字母,以及_和$组成。


不能以数字开头。


不能使用关键字来自定义命名。


6、数据类型:


(1)基本数据类型(4类8种):


整数类型:byte、short、int、long


浮点数类型:float、double


字符类型:char


布尔类型:boolean(ture false)


(2)引用数据类型:



接口


数组


7、类型转换


精度从高到低  double  float  long  int  short(char)  byte


(1)自动类型转换  将一个低精度---高精度


(2)强制类型转换  将一个高精度---低精度(精度会下降)


8、java语言的三种技术架构


J2EE:企业版


是为开发企业环境下的应用程序提供的一套解决方案。


该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。


J2SE:标准版


是为开发普通桌面和商务应用程序提供的解决方案。


该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。


比如Java版的扫雷。


J2ME:小型版


是为开发电子消费产品和嵌入式设备提供的解决方案。


该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。


9、java的跨平台性:


通过Java语言编写的应用程序在不同的系统平台上都可以运行。


跨平台的原因:


只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。


由JVM来负责Java程序在该系统中的运行。


10、有符号数据的表示法(次重点)


原码,反码(原码取反),补码(反码+1)。


11、函数


定义:函数就是定义在类中的具有特定功能的一段独立小程序。


特点:


定义函数可以将功能代码进行封装


便于对该功能进行复用


函数只有被调用才会被执行


函数的出现提高了代码的复用性


对于函数没有具体返回值的情况,返回值类型用关键字void表示,


那么该函数中的return语句如果在最后一行可以省略不写。


函数的应用两个明确:


明确要定义的功能最后的结果是什么?


明确在定义该功能的过程中,是否需要未知内容参与运算


12、重载:


概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。


特点:与返回值类型无关,只看参数列表(参数类型以及参数个数)。


好处:方便于阅读,优化了程序设计。


13、数组:


概念:同一种数据类型的集合。


好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。


14、内存结构:


栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。


堆内存:数组和对象,通过new建立的实例都存放在堆内存中。


方法区:静态成员、构造函数、常量池、线程池


本地方法区:window系统占用


计算机基础知识,数据结构,数据库,前端页面

哈哈哈哈哈哈嗝
6楼 · 2021-08-20 11:03

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的。
  二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半ArrayList,Vector, LinkedList的存储性能和特性。
  ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
  就HashMap与HashTable主要从三方面来说.
  一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一实现
  二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
  三.值:只有HashMap允许在一个集合中有一个null键和在一个集合中有多个null值
  Hashtable是HashMap的同步版本;HashMap允许有null值和一个null键,但是,Hashtable不允许有任何内容为null。Hashtable类的对象必须覆盖Object类的hashCode()和equals()方法关于其他集合类型。
  一.ArrayList 提供快速遍历和快速访问。现在设计了新的 RandomAccess 接口,它指出这种列表支持快速随机访问。Vector也实现了RandomAccess 接口。
  二.遍历HashSet与HashMap时,其顺序是未知的(但添加删除快)。LinkedHashSet和LinkedHashSet是按照元素的插入的顺序遍历的(遍历快)。
  三.TreeSet和TreeMap将保证元素按照元素的自然顺序进行排列。也可以使用一个用户自己实现的比较规则。
  四、HashSet有一个散列表支持它。它为基本操作提供固定时间性能。TreeSet它确保了排序集将按元素升序,根据自然顺序排序。

隔壁街道小胖子
7楼 · 2021-08-21 17:20

AVA有三个大的方向(J2se,J2me,J2ee),走不同的方向可能学的技术和要花费的时间可能有所不同。我是搞web方向的(J2ee),我学Java除了以前一些简单的C语言语法外,没有太多的编程基础,我以前一直认为编程要有很强的数学和英语功底,现在看来这也不是必需,只要有一定的逻辑思维能力和掌握一些常见的计算机词汇,还需要具备一定的自学能力,因为软件开发工作是需要不断学习的。

其次,我想说下我的学习过程,我在网上下载了JAVA教学视频,将Java基础从头到尾看了一遍,将上面的代码基本上跟着敲了一遍,然后我把Java基础的书看了一遍,一本书看完包括上面的习题大概做一遍差不多一个月。这时你对Java的语法和基本知识应该都有比较充分的认识和了解了。

然后,再做一些小项目,跟着视频上的步骤做,最好能自己独立再写写,能写多少是多少。一般网上比较新的免费的项目库很不好找,因为项目库是需要实时更新以保证适合市场需要的,而它的升级和更新是需要钱的,所以去报一个培训中心利用它强大的项目库进行实战操作是个很好的选择。

操作一段时间之后,你对Java已经有了一定的感觉,就要开始选择你的发展方向了。我选择了J2ee,如果你也是想走这条路,你可以接着看关于J2ee的视频,先是html+Js+css,然后Jsp+serverlet,再看struts+spring+hibernate等一些框架。同时可以看一些大的培训机构的关于设计模式的视频,最好是IT牛人录制的,当然数据库也得学下,然后加上做项目的经验累积,半年就差不多可以出去工作了。


是年糕麻麻啊
8楼 · 2021-08-23 14:54

Javase,计算机基础知识,数据结构,数据库,前端页面等等。

希希
9楼 · 2021-08-25 08:43

JavaEE基础中包含的知识点有:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性。
JavaWeb开发中包含的知识点有:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX、在线医疗系统。
Java高级框架中包含的知识点有:SpringMVC、MyBatis 、Spring、MySQL高级、Linux&Redis&Nginx、Maven 、中公MIS权限系统。
大型微服务分布式项目实战:SpringBoot、SpringCloud、Git 、Dubbo、Zookeeper、AngularJS、Spring Security、BCrypt加密、FastDFS、分布式事务处理、Redis Cluster、Solr、SolrCloud、Freemarker 、JMS 、短信发送平台、SSO解决方案、CORS、Twitter的Snowflake、SpringTask 、Maven Profile、MongoDB简介、MyCat、Docker、Jenkins、东易买大型电商实战、东易众筹。

相关问题推荐

  • 回答 2

    Statement的execute(String query)方法用来执行任意的SQL查询,如果查询的结果是一个ResultSet,这个方法就返回true。如果结果不是ResultSet,比如insert或者update查询,它就会返回false。我们可以通过它的getResultSet方法来获取ResultSet,或者通过getUpda...

  • 回答 22

    忙的时候项目期肯定要加班 但是每天加班应该还不至于

  • 回答 108
    已采纳

    虽然Java人才越来越多,但是人才缺口也是很大的,我国对JAVA工程师的需求是所有软件工程师当中需求大的,达到全部需求量的60%-70%,所以Java市场在短时间内不可能饱和。其次,Java市场不断变化,人才需求也会不断增加。马云说过,未来的制造业要的不是石油,...

  • 回答 5
    已采纳

    工信部证书含金量较高。工信部是国务院的下属结构,具有发放资质、证书的资格。其所发放的证书具有较强的权威性,在全国范围内收到认可,含金量通常都比较高。 工信部证书,其含义也就是工信部颁发并承认的某项技能证书,是具有法律效力的,并且是国家认可的...

  • 回答 70
    已采纳

    学Java好不好找工作?看学完Java后能做些什么吧。一、大数据技术Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java 的 HBase和Accumulo以及ElasticSearchas。但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮...

  • 回答 16
    已采纳

    就是java的基础知识啊,比如Java 集合框架;Java 多线程;线程的五种状态;Java 虚拟机;MySQL (InnoDB);Spring 相关;计算机网络;MQ 消息队列诸如此类

  • 回答 12

    #{}和${}这两个语法是为了动态传递参数而存在的,是Mybatis实现动态SQL的基础,总体上他们的作用是一致的(为了动态传参),但是在编译过程、是否自动加单引号、安全性、使用场景等方面有很多不同,下面详细比较两者间的区别:1.#{} 是 占位符 :动态解析 ...

  • 回答 62

    没问题的,专科学历也能学习Java开发的,主要看自己感不感兴趣,只要认真学,市面上的培训机构不少都是零基础课程,能跟得上,或是自己先找些资料学习一下。

  • 回答 4

    1、反射对单例模式的破坏采用反射的方式另辟蹊径实例了该类,导致程序中会存在不止一个实例。解决方案其思想就是采用一个全局变量,来标记是否已经实例化过了,如果已经实例化过了,第 二次实例化的时候,抛出异常2、clone()对单例模式的破坏当需要实现单例的...

  • 回答 5

     优点: 一、实例控制  单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 二、灵活性  因为类控制了实例化过程,所以类可以灵活更改实例化过程。 缺点: 一、开销  虽然数量很少,但如果每次对象请求引用时都要...

  • 回答 4

    这个主要是看你数组的长度是多少, 比如之前写过的一个程序有个数组存的是各个客户端的ip地址:string clientIp[4]={XXX, xxx, xxx, xxx};这个时候如果想把hash值对应到上面四个地址的话,就应该对4取余,这个时候p就应该为4...

  • 回答 6

     哈希表的大小 · 关键字的分布情况 · 记录的查找频率 1.直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)。...

  • 回答 6

    哈希表的大小取决于一组质数,原因是在hash函数中,你要用这些质数来做模运算(%)。而分析发现,如果不是用质数来做模运算的话,很多生活中的数据分布,会集中在某些点上。所以这里最后采用了质数做模的除数。 因为用质数做了模的除数,自然存储空间的大小也用质数了...

  • 回答 2

    是啊,哈希函数的设计至关重要,好的哈希函数会尽可能地保证计算简单和散列地址分布均匀,但是,我们需要清楚的是,数组是一块连续的固定长度的内存空间

  • 回答 3

     解码查表优化算法,seo优化

  • 回答 5

    1.对对象元素中的关键字(对象中的特有数据),进行哈希算法的运算,并得出一个具体的算法值,这个值 称为哈希值。2.哈希值就是这个元素的位置。3.如果哈希值出现冲突,再次判断这个关键字对应的对象是否相同。如果对象相同,就不存储,因为元素重复。如果对象不同,就...

没有解决我的问题,去提问