This is a relatively simple problem that can be solved in a few ways. The simplest would be, as this is a static example you gave, to do something like
c[0] = a[0];
c[1] = a[1];
c[2] = a[2];
c[3] = b[0];
.
.
.
c[11] = b[5]
This does not scale very well, and is difficult to maintain, but technically does what you ask.
Next, I would look at simply for loops. In a previous version of this post, I did not include them as I saw other responses with them, but have since added this in as I thought they could be improved:
// Using loops
final int[] c = new int[12];
for (int i = 0; i < 3; ++i) {
c[i] = a[i];
c[i + 3] = b[i];
c[i + 6] = a[i + 3];
c[i + 9] = b[i + 3];
}
This is also very simple and efficient. We only need 3 iterations of the loop to cover both halves of the array, using offsets to avoid having to make multiple for loops for each part. Knowledge for this kind of simple comes through experience, so I'd recommend working through some more examples.
Next, we will look at some more fun options. If you are not familiar with the Java API, I would recommend first googling various things such as "java copy part of array" or "java insert array into another array".
Such searches lead to posts like:
Java copy section of array
Insert array into another array
How to use subList()
From there, you can construct an reasonably well defined answer such as:
// Using System::arraycopy<T>(T[], int, T[], int, int), where T is the array-type.
final int[] c = new int[12];
System.arraycopy(a, 0, c, 0, 3);
System.arraycopy(b, 0, c, 3, 3);
System.arraycopy(a, 3, c, 6, 3);
System.arraycopy(b, 3, c, 9, 3);
Which is probably sufficient for most of your needs.
But, going through that process, I learnt an additional way to do it with streams!
// Using java.util.stream
final List<Integer> l_a = Arrays.stream(a).boxed().collect(Collectors.toList());
final List<Integer> l_b = Arrays.stream(b).boxed().collect(Collectors.toList());
final List<Integer> l_c = new ArrayList<Integer>() {{
addAll(l_a.subList(0, 3));
addAll(l_b.subList(0, 3));
addAll(l_a.subList(3, 6));
addAll(l_b.subList(3, 6));
}};
final int[] c = l_c.stream().mapToInt(i -> i).toArray();
And though this last example is perhaps less elegant than the second, going through the process of researching the problem and potential solutions has taught me something I can now carry with me going forward.
Hopefully this helps!