注意这里介绍的JAVA基础是指你对C语言已经比较熟练或者有一定基础了,再学习如下这知识就会比较快。

1.JAVA也是从MAIN开始执行,但是要先定义类,文件名要与类名一致并且类名首字母要大写,同时JAVA没有include,

它不需要包含,当需要用一些额外类库的时候,需要使用import来导入,对于导入的如果不是静态的对象,还需要先创建再对象实例化才能使用。当然如果不使用额外的类库则不需要导入。

但是比如系统提供的一些类库(不需要导入),如system.out.println是静态对象,所以这个直接这么使用就可以打印

开发环境建议使用ubuntu下的,例如编译直接输入:javac hello.java

执行直接输入:java hello(是使用JAVA虚拟机来得以执行的)

2.数据类型比较:

JAVA的基本类型多了boolean,byte,其中bool和byte占用字节数一致但是取值范围不一样,其中bool取值范围只有true/false,

char使用2字节,因为JAVA使用unicode (c 一个字节)

引用包括:数组,类,接口,null

3.注释的方式是一样的

4.souceinsight是ASCII,java编译的是使用UTF8解析的,而si中写汉字是ASCII,所以utf解析不了ASCII,就编译错误,解决方法要不不用汉字,要么使用UE把文件编码格式转换一下

5. JAVA中没有malloc函数,没有指针,如果想类似使用MALLOC的方式就是类似的使用数组的方式,所以在JAVA里面定义malloc和定义数组是一样的:

java中使用char s[]=new char[100]都是在堆中分配出地址然后给地址到栈中的变量。

C中的数组定义的空间和指向的地址和普通变量一样都是在任务栈中的。

JAVA中所有的数组都是引用数据类型,没有指针,称为引用,变量里面的值是一个地址某一堆空间的地址。

java其他定义数组的方式int p2[]={1,2,3}(数组常量只能在初始化操作中使用)这个是静态分配这句话在C中数据都是放在栈里,

java左边是栈,右边是堆,所以java中的数组都是放在堆里面的,栈里面是一个存储有 指向堆空间的地址的变量

java中的数组永远是引用数据类型,就是数组的空间永远是在堆里面的

6.定义一个字符串,java中的字符串是一个类定义一个字符串不能使用C语言的方式

c方式:char sh2[]="avvc",还是在栈里,一般除了malloc都是在栈里

java定义方式String shr="avb"

(所谓引用数据类型(和指针类似)就是变量所指向的空间所引用的空间在堆里,变量(存储地址)在栈里)

c中程序(main)退出会free,但一直执行main的话就要free,不然会一直泄露,或者一直分配。

java会自动释放,当指向的变量等于NULL时,就是没有东西引用堆空间里,java中垃圾回收机制就会把这块空间释放掉。所以不用让p=null就可以了。

当有两个变量指向的时候,即p2=p1=...,时,这两个都等于null才会释放。

7.数据类型转换:

java中3.14是double类型,转换方式:

float f=(float)3.14;//强制转换

float f2=3.14f;//自动转换,发生在小范围数据类型转换为大数据类型的时候

short s=1;

s=s+1;出错,数字一般都是int类型,同时参加运算,对于byte,short来说,为了保证精度,会自动转换为int,再把int赋值给short当然会出错。

short s2=1;

所以s=s+s2也是出错的,要加强制转换才行。

8.运算符,表达式,语句和c基本完全一致,

9.c中的函数,java称为方法,

java方法:

格式:public static int add(int x,inty){

}多了public static

其中加public 关键字的意思是这个一个可由外部调用的方法,方法前面加static 表示在不创建任何对象的时候都可以调用它(调用方式:类名.方法),

同时如果在字段(数据成员)前面加static ,表示这个字段对于同一个类所创建各个对象来说都只有一份空间,不加static则是每个对象都有一个存储空间。

10.java重载,函数名(返回值类型)一致,参数不一样就可以重载,调用的话是调用对应参数的方法(调用的是实参与形参一致的),

当修改返回类型是无法重载的,因为不知道你想要什么样的结果。

11.java函数参数传递,传值无法改变只能传地址,c中使用指针,java没有指针使用类似传数组名的方式实现,例如:

int p[]=new int[1];

p[0]=123;

fun2(p);//传地址进去

System.out.println("fun2: "+p[0]);//格式化打印前面使用空格,后面分隔使用+号

public static void fun2(int[] p){

p[0]=200;//修改指向的地址的内容为200;

}

12.java编程规范:

类名首字母大写后面每个单词首字母也大写

方法名第一个单词全小写后面每个单词的首字母都大写

Java之基础20160806的更多相关文章

  1. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  2. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  3. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  4. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  5. java IO基础操作

    java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...

  6. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  7. [转]Java多线程干货系列—(一)Java多线程基础

    Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...

  8. Java 入门基础

    第零章 开始学习Java 1.Java基础最重要 Java学习中,Java的基础.Java面向对象是最关键的,而一些像框架技术等都是建立在基础之上东西. 多多处理问题,积累处理问题的能力. Java框 ...

  9. Java多线程基础:进程和线程之由来

    转载: Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够 ...

随机推荐

  1. 【UGUI】 (一)------- 放大镜

    在许多游戏或应用中,我们常常看到放大镜的身影,而在Unity里面,制作一个简易的放大镜是非常简单的.    一. 创建一个3DObject 创建一个Cube或者 Cylinder,这里为了更像放大镜一 ...

  2. JavaFX学习笔记——ControlsFX控件集学习——ToggleSwitch和BreadCrumbBar例子

    ToggleSwitch ToggleSwitch ts = new ToggleSwitch("开"); 效果 BreadCrumbBar BreadCrumbBar<St ...

  3. 解决Sublime Text 3中文显示乱码(tab中文方块)问题

    博客分类:  Sublime   一.文本出现中文乱码问题 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: P ...

  4. JavaScript学习笔记(三)——对象

    第四章 理解对象 1 说明 对象的状态:属性,行为:方法: 对象定义放在花括号内: 用冒号分隔属性名和属性值: 用逗号分隔属性名和属性值对,包括方法: 最后一个属性值后面不加逗号: 属性名可以是任何字 ...

  5. 【Python 开发】Python目录

    目录: [Python开发]第一篇:计算机基础 [Python 开发]第二篇 :Python安装 [Python 开发]第三篇:python 实用小工具

  6. AngularJS - 路由 routing 基础示例

    AngularJS 路由 routing 能够从页面的一个视图跳转到另外一个视图,对单页面应用来讲是至关重要的.当应用变得越来越复杂时,我们需要一个合理的方式来管理用户在使用过程中看到的界面.Angu ...

  7. 大前端全栈CSS3移动端开发

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正 本节课学习视频来源:https://ww ...

  8. php序列化问题

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1. serialize和 ...

  9. 20181113-7 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 05

    作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2387 版本控制https://git.coding.net/lglr2018/F ...

  10. ERROR----java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

    2013-4-28 13:17:57 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filte ...