java学习(一)基本语法、专用ide之idea

勇哥注:

这个系列的贴子主要是从C#的对比来学习java的不一样。


(一)idea


(1)idea的工程如下

project-->module-->package-->class

image.png

其中package其实就是目录 。

我们选中src,右键新建package,创建包名为com.skcircle.hello ,这个时候你会发现其实是在src目录下创建了com\skcircle\hello,

即创建了三个目录。

一般起包的名字习惯用公司域名倒过来写的方式,所以有了com.skcircle.用途描述

image.png


(2)快捷键

main, psvm, sout     这个是idea的语法补全,这个设计有点弱智    

ctrl+d    复制当前行数据到下一行

ctrl+alt+L  格式化代码

Alt+shift+上箭头   上下移动代码

ctrl+/,        单行注释,因为跟五笔的快捷键有冲突,所以推荐用下面的块注释

ctrl+shift+/    块注释,先选中要注释的内容,取消注释也是这个


(3)bin目录结构

Module1  可以找到java扩展名的源码

out   可以找到编译后的文件 .class

image.png


(二)java语法


勇哥注: 主要拿C#来对比。


(1)

简单数据类型没啥区别

  字符串与数值的转换差不多

   强制转换写法是一样的。

String s1="123";
int k1=0;
double k2=0;
float k3=0.0f;
long  k4=0x500;
try {
    int a1=Integer.parseInt(s1);
    String s2=Integer.toString((int)k4);
}
catch(NumberFormatException ex)
{
    System.out.println("error:"+ex.getMessage());
}

  

(2)

java没foreach,可以这样写:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}

java中的List<T>是个泛型接口,它的实现类是ArrayList,Vector等,不能直接new List

这个东西不太方便 ,特别是不能直接[i]下标访问。

List<String> list1=new ArrayList<>();
for(int i=0;i<10;i++)
{
    list1.add(Integer.toString(i));
    System.out.println(list1.get(i));
}

for, if, break, do while这些没啥区别


(3)

java没有属性,所以没有get;set,你得自己写方法代替。

java没有特性,没有委托

java没有结构体

数组的定义没区别。

枚举没大区别


java的集合分四类:

(A)List 列表

  ArraryList  动态数组,效率低,是线程安全的

  LinkedList   基于链表的实现,是线程安全的

  Vector  类似ArrayList,  所有方法为同步方法,线程安全


(B)Set 集合

   不包含重复元素的集合,不保证元素顺序

  HashSet

  LinkedHashSet

  TreeSet


(C)Map 映射

  键与值的对象,类似C#中的字典

  HashMap

  LinkedHashMap

  TreeMap


(D)其它

 Queue  队列

 Deque  双端队列

 Stack  栈


(4)

一个java文件只能有一个public类,其它的类不能加任何的访问限制符

package com.skcircle.hello;

import java.util.ArrayList;
import java.util.List;

enum studentEnum
{
    中国,k2,k3,k4
}


public class test1 {
    public static void main(String[] args) {
        String s1="123";
        int k1=0;
        double k2=0;
        float k3=0.0f;
        long  k4=0x500;
        try {
            int a1=Integer.parseInt(s1);
            String s2=Integer.toString((int)k4);
        }
        catch(NumberFormatException ex)
        {
            System.out.println("error:"+ex.getMessage());
        }

        int[] numbers = {1, 2, 3, 4, 5};
        for (int number : numbers) {
            System.out.println(number);
        }

        List<String> list1=new ArrayList<>();
        for(int i=0;i<10;i++)
        {
            list1.add(Integer.toString(i));
            System.out.println(list1.get(i));
        }


        myclass1 c1=new myclass1();
        c1.name="lxy";
        c1.age=22;


        System.out.println(c1.name);
        System.out.println("hello world");
    }

}

class myclass1
{
    String name;
    int age;
}

idea的项目:

image.png


(5)

java没有C#的dll的概念。与之类似的功能有两种:


1. JAR(Java Archive)文件

JAR 文件是 Java 的一种打包文件格式,用于将多个 Java 类文件、相关的元数据和资源(如文本、图片等)

打包成一个文件。这与 C# 的 DLL 文件在功能上有些相似,都是用于代码的封装和分发。

JAR 文件可以被 Java 虚拟机(JVM)直接加载和执行,

或者作为应用程序和库的一部分被其他 Java 程序引用。


2. 类库(Libraries):

在 Java 中,类库是一组已编译的 Java 类,它们提供了可以被其他 Java 程序复用的功能。

这些类库可以打包成 JAR 文件,并在项目中通过类路径(classpath)来引用。

Java 标准库(Java Standard Library)是一组 Java 提供的核心类库,

包含了大量的基础类和接口,用于支持 Java 程序的日常开发。


(6)

java是不能直接调用C#代码的,包括引用C#的dll。

反过来,C#也是不能直接调用java代码的。

其原因是C#运行在CLR上的,java则运行在JVM上的。两者机制完全不同。

一般建议直接采用soap或者rest方式调用。


但是java是可以引用c++导出来的dll的。

Java 可以通过 JNI(Java Native Interface)来引用 C++ 导出的 DLL(在 Windows 上)
或 so 文件(在 Linux 或 macOS 上)。
JNI 是 Java 提供的一种标准编程接口,
允许 Java 代码和其他语言写的应用程序或库(尤其是 C 和 C++)进行交互。


如果想调用win32 api的话,可以选择下面4种:

JNI (Java Native Interface):

JNA (Java Native Access):

第三方库

运行时库和框架


另外,JNI是可以调用com接口的,但是仅限于windows下。



相关文章列表:

java学习(一)基本语法、专用ide之idea 

java学习(二)idea的调试 


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-07-22 21:24:26 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864